Hi Paul, thank you for your answer. About sandbox, what do you think about [3] or [4]? Both seems to be quite active, license-compliant and available from Maven Central.
Also, do you have any example of ImportCustomizer / SecureASTCustomizer to start from? I have only found [5] so far. Regards. [3] https://github.com/dalet-oss/groovy-sandbox [4] https://github.com/craftercms/groovy-sandbox [5] https://github.com/jenkinsci/script-security-plugin/blob/master/src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/RejectASTTransformsCustomizer.java On 2025/08/16 21:31:36 Paul King wrote: > Step 4 in your reference [2] is the key. > > You can provide an ImportCustomizer and a SecureASTCustomizer to limit > imports and prohibit statements like "System.exit()". As mentioned in that > article, that doesn't stop folks potentially using reflection or other > tricks to execute the exit() statement. You can start trying to lock down > such statements too. It becomes increasingly tricky to block all of the > tricks without crippling what your users may legitimately want to execute. > So, having a sandbox is the next step. > > Using the security manager with a policy file, also mentioned in that > reference, has gone out of vogue and isn't supported in the latest JDKs. > You'd more typically use a VM these days and set up a machine where it > didn't matter if a script somehow managed to read the /etc/passwd file (or > whatever). > > We have been meaning to document best practices for a sandbox environment > but haven't found the cycles yet. We'd be super keen to work with you to > write something up if you make progress. > > Cheers, Paul. > > > On Sat, Aug 16, 2025 at 5:13 PM Francesco Chicchiriccò <ilgro...@apache.org> > wrote: > > > Hi team, > > Syncope is offering the possibility to extend / customize the base > > behavior on every deployment by allowing to provide custom implementations > > of a few Java interfaces; such implementations can be provided either as > > Java or Groovy classes [1], with the latter being particularly attractive > > as the machinery is set for runtime reload. > > > > I was wondering if there is any best-practice available to limit what > > could be done by Groovy classes (e.g. System.exit, spawning new processes, > > etc.). > > I found [2] and a few other references which looks anyway either old or > > not for general purpose. > > > > Can you suggest something else? > > > > TIA > > Regards. > > > > [1] > > https://syncope.apache.org/docs/4.0/reference-guide.html#implementations > > [2] > > https://levelup.gitconnected.com/secure-groovy-script-execution-in-a-sandbox-ea39f80ee87 > > > > -- > > Francesco Chicchiriccò > > > > Tirasa - Open Source Excellence > > http://www.tirasa.net/ > > > > Member at The Apache Software Foundation > > Syncope, Cocoon, Olingo, CXF, OpenJPA > > https://about.me/ilgrosso > > > > >