diff --git a/sandbox/src/main/java/org/assimbly/sandbox/SandboxEndpoint.java b/sandbox/src/main/java/org/assimbly/sandbox/SandboxEndpoint.java index 8b9d9327..19fa1e25 100644 --- a/sandbox/src/main/java/org/assimbly/sandbox/SandboxEndpoint.java +++ b/sandbox/src/main/java/org/assimbly/sandbox/SandboxEndpoint.java @@ -12,8 +12,6 @@ */ public class SandboxEndpoint extends LanguageEndpoint { - private boolean strictSecureMode = true; - public SandboxEndpoint() { super(); } @@ -22,14 +20,6 @@ public SandboxEndpoint(String endpointUri, Component component, Language languag super(endpointUri, component, language, expression, resourceUri); } - public boolean isStrictSecureMode() { - return strictSecureMode; - } - - public void setStrictSecureMode(boolean strictSecureMode) { - this.strictSecureMode = strictSecureMode; - } - /** * Overrides the createProducer method to supply the SandboxProducer.= */ diff --git a/sandbox/src/main/java/org/assimbly/sandbox/SandboxProducer.java b/sandbox/src/main/java/org/assimbly/sandbox/SandboxProducer.java index 8b5ca337..929ce26e 100644 --- a/sandbox/src/main/java/org/assimbly/sandbox/SandboxProducer.java +++ b/sandbox/src/main/java/org/assimbly/sandbox/SandboxProducer.java @@ -3,7 +3,6 @@ import org.apache.camel.Exchange; import org.apache.camel.component.language.LanguageEndpoint; import org.apache.camel.component.language.LanguageProducer; -import org.assimbly.sandbox.executors.GroovySandboxExecutor; import java.util.UUID; @@ -18,21 +17,6 @@ public SandboxProducer(LanguageEndpoint endpoint) { @Override public void process(Exchange exchange) throws Exception { - SandboxEndpoint endpoint = (SandboxEndpoint) getEndpoint(); - String language = endpoint.getLanguage().toString(); - - if (endpoint.isStrictSecureMode() && language.toLowerCase().contains("groovy")) { - String script = getEndpoint().getScript(); - if (script == null) { - script = exchange.getIn().getBody(String.class); - } - GroovySandboxExecutor.execute(script, exchange); - } else { - executeWithSecurity(exchange); - } - } - - private void executeWithSecurity(Exchange exchange) throws Exception { UUID uuid = UUID.randomUUID(); SandboxSecurityManager.getInstance().secure(uuid); try { diff --git a/sandbox/src/main/java/org/assimbly/sandbox/executors/GroovySandboxExecutor.java b/sandbox/src/main/java/org/assimbly/sandbox/executors/GroovySandboxExecutor.java deleted file mode 100644 index 90832024..00000000 --- a/sandbox/src/main/java/org/assimbly/sandbox/executors/GroovySandboxExecutor.java +++ /dev/null @@ -1,123 +0,0 @@ -package org.assimbly.sandbox.executors; - -import groovy.lang.Binding; -import groovy.lang.GroovyShell; -import groovy.lang.Script; -import org.apache.camel.Exchange; -import org.apache.camel.RuntimeCamelException; -import org.codehaus.groovy.control.CompilerConfiguration; -import org.kohsuke.groovy.sandbox.GroovyInterceptor; -import org.kohsuke.groovy.sandbox.SandboxTransformer; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Base64; -import java.util.concurrent.ConcurrentHashMap; - -public class GroovySandboxExecutor { - - private GroovySandboxExecutor() { - // utility class - } - - private static final CompilerConfiguration CONFIG; - private static final GroovyShell SHELL; - - // cache: script source - compiled Class (parse once, run many times) - private static final ConcurrentHashMap> SCRIPT_CACHE = new ConcurrentHashMap<>(); - - static { - CONFIG = new CompilerConfiguration(); - CONFIG.addCompilationCustomizers(new SandboxTransformer()); - SHELL = new GroovyShell(CONFIG); - } - - // interceptor - private static final GroovyInterceptor INTERCEPTOR = new GroovyInterceptor() { - - @Override - public Object onStaticCall(Invoker invoker, Class receiver, String method, Object[] args) throws Throwable { - if (receiver == System.class && method.equals("exit")) { - throw new SecurityException("Sandbox Denial: System.exit() is not allowed."); - } - if (receiver == java.util.TimeZone.class && method.equals("setDefault")) { - throw new SecurityException("Sandbox Denial: Cannot change global TimeZone."); - } - return invoker.call(receiver, method, args); - } - - @Override - public Object onMethodCall(Invoker invoker, Object receiver, String method, Object[] args) throws Throwable { - if (method.equals("getClass") || method.equals("class")) { - throw new SecurityException("Sandbox Denial: Reflection is forbidden."); - } - return invoker.call(receiver, method, args); - } - }; - - public static void execute(String scriptSource, Exchange exchange) { - - // compile once, reuse on subsequent calls with the same source - Class