Security issue with org.jruby.embed.class.path in unsigned JavaFX applet.
-------------------------------------------------------------------------

                 Key: JRUBY-6110
                 URL: https://jira.codehaus.org/browse/JRUBY-6110
             Project: JRuby
          Issue Type: Bug
          Components: Standard Library
    Affects Versions: JRuby 1.6.4
         Environment: win xp
            Reporter: peter
            Assignee: Thomas E Enebo
            Priority: Blocker
             Fix For: JRuby 1.6.4


Hi,

I have security issues when using embeded Ruby in a unsigned JavaFX Applet.
I encountered this already in swing but I was able to workaround it by signing 
the applet, javaFx breaks somehow when I try to sign it. 
Sorry for my ignorance if this is a double post and/or can't be resolved.

Heres some Codes for the JavaFx Application:
/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
package javafxapplication2;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javax.swing.JPanel;
import org.jruby.embed.LocalContextScope;
import org.jruby.embed.ScriptingContainer;

/**
 *
 * @author Administrator
 */
public class JavaFXApplication2 extends Application {

    /**
     * @param args the command line arguments
     */
    private ScriptingContainer c;
    public static void main(String[] args) {
        Application.launch(args);
    }
   
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World");
        Group root = new Group();
        Scene scene = new Scene(root, 300, 250);
        Button btn = new Button();
       
        btn.setLayoutX(100);
        btn.setLayoutY(80);
        btn.setText("Hello World");
        JPanel panel = new JPanel();
        btn.setOnAction(new EventHandler<ActionEvent>() {
       
            public void handle(ActionEvent event) {
                System.out.println("Hello World");
                 c = new ScriptingContainer(LocalContextScope.THREADSAFE);
                 c.runScriptlet("puts 'wooopwoop'");
            }
        });
        root.getChildren().add(btn);       
        primaryStage.setScene(scene);       
        primaryStage.show();
    }
}

An here the errors:
Java-Plug-in 10.0.1.255
JRE-Version verwenden 1.7.0-b147 Java HotSpot(TM) Client VM

Got ConfigEvent[type=SetVisible, value=true]

Got DownloadEvent[type=verify,loaded=1, total=1, percent=100]

Got AppletInitEvent[type=CallConstructor]

Got AppletInitEvent[type=CallInit]

Got AppletInitEvent[type=CallStart]

Hello World

java.security.AccessControlException: access denied 
("java.util.PropertyPermission" "org.jruby.embed.class.path" "read")

    at java.security.AccessControlContext.checkPermission(Unknown Source)

    at java.security.AccessController.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)

    at java.lang.System.getProperty(Unknown Source)

    at 
org.jruby.embed.util.SystemPropertyCatcher.findLoadPaths(SystemPropertyCatcher.java:242)

    at 
org.jruby.embed.ScriptingContainer.initConfig(ScriptingContainer.java:249)

    at org.jruby.embed.ScriptingContainer.<init>(ScriptingContainer.java:223)

    at org.jruby.embed.ScriptingContainer.<init>(ScriptingContainer.java:187)

    at 
javafxapplication2.JavaFXApplication2$1.handle(JavaFXApplication2.java:47)

    at 
javafxapplication2.JavaFXApplication2$1.handle(JavaFXApplication2.java:43)

    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at 
com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)

    at javafx.event.Event.fireEvent(Unknown Source)

    at javafx.scene.Node.fireEvent(Unknown Source)

    at javafx.scene.control.Button.fire(Unknown Source)

    at 
com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Unknown 
Source)

    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)

    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)

    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at 
com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)

    at javafx.event.Event.fireEvent(Unknown Source)

    at javafx.scene.Scene$MouseHandler.process(Unknown Source)

    at javafx.scene.Scene$MouseHandler.process(Unknown Source)

    at javafx.scene.Scene$MouseHandler.access$1200(Unknown Source)

    at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)

    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)

    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown 
Source)

    at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)

    at com.sun.glass.ui.View.notifyMouse(Unknown Source)

    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

    at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)

    at com.sun.glass.ui.win.WinApplication$2$1.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

java.lang.RuntimeException: java.security.AccessControlException: access denied 
("java.util.PropertyPermission" "org.jruby.embed.class.path" "read")

    at org.jruby.embed.ScriptingContainer.<init>(ScriptingContainer.java:227)

    at org.jruby.embed.ScriptingContainer.<init>(ScriptingContainer.java:187)

    at 
javafxapplication2.JavaFXApplication2$1.handle(JavaFXApplication2.java:47)

    at 
javafxapplication2.JavaFXApplication2$1.handle(JavaFXApplication2.java:43)

    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at 
com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)

    at javafx.event.Event.fireEvent(Unknown Source)

    at javafx.scene.Node.fireEvent(Unknown Source)

    at javafx.scene.control.Button.fire(Unknown Source)

    at 
com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Unknown 
Source)

    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)

    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(Unknown Source)

    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown 
Source)

    at 
com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown 
Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)

    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)

    at javafx.event.Event.fireEvent(Unknown Source)

    at javafx.scene.Scene$MouseHandler.process(Unknown Source)

    at javafx.scene.Scene$MouseHandler.process(Unknown Source)

    at javafx.scene.Scene$MouseHandler.access$1200(Unknown Source)

    at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)

    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)

    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown 
Source)

    at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)

    at com.sun.glass.ui.View.notifyMouse(Unknown Source)

    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

    at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)

    at com.sun.glass.ui.win.WinApplication$2$1.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Caused by: java.security.AccessControlException: access denied 
("java.util.PropertyPermission" "org.jruby.embed.class.path" "read")

    at java.security.AccessControlContext.checkPermission(Unknown Source)

    at java.security.AccessController.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkPermission(Unknown Source)

    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)

    at java.lang.System.getProperty(Unknown Source)

    at 
org.jruby.embed.util.SystemPropertyCatcher.findLoadPaths(SystemPropertyCatcher.java:242)

    at 
org.jruby.embed.ScriptingContainer.initConfig(ScriptingContainer.java:249)

    at org.jruby.embed.ScriptingContainer.<init>(ScriptingContainer.java:223)

    ... 44 more

Thanks a lot in advance for your effort !

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to