[Full-Disclosure] Sun Java Plugin arbitrary package access vulnerability

From: Jouko Pynnonen (jouko_at_iki.fi)
Date: 11/23/04

  • Next message: Stefan Esser: "[Full-Disclosure] Advisory 15/2004: Cyrus IMAP Server multiple remote vulnerabilities"
    To: full-disclosure@netsys.com
    Date: Tue, 23 Nov 2004 03:39:38 +0200
    
    

    OVERVIEW
    ========

    Sun Microsystem's Java Plugin connects the Java technology to web
    browsers and allows the use of Java Applets. Java Plugin technology is
    available for numerous platforms and supports major web browsers.

    A vulnerability in Java Plugin allows an attacker to create an Applet
    which can disable Java's security restrictions and break out of the
    Java sandbox. The attack can be launched when a victim views a web page
    created by the attacker. Further user interaction is not required as
    Java Applets are normally loaded and started automatically.

    Such Applet can then take any action which the user could: browse,
    read, or modify files, upload more programs to the victim system and
    run them, or send out data from the system. Java is a cross-platform
    language so the same exploit could run on various OS'es and
    architectures.

    DETAILS
    =======

    There is a number of private Java packages in the Java VM, meant to be
    used only by the VM internally. Java Applets can't normally access
    these packages because of security concerns. Attempting to access
    them normally results in an AccessControlException.

    The problem is that JavaScript code can bypass the access control by
    using so called reflection API. The following piece of example
    JavaScript acquires a reference to a supposedly restricted, private
    class "sun.text.Utility":

     [script language=javascript]
     var c=document.applets[0].getClass().forName('sun.text.Utility');
     alert('got Class object: '+c)
     [/script]

    This isn't possible by a normal Java Applet, and shouldn't be for
    JavaScript either. The JavaScript code could now instantiate the class
    or pass it to an Applet that could use it.

    An attacker can't do much with the utility class in this example, but
    could use other private classes to exploit the vulnerability. Some of
    them allow e.g. direct access to memory or methods for modifying
    private fields of Java objects. The latter allows an attacker
    to simply turn off the Java security manager, after which there is no
    sandbox restricting what the Applet can do.

    VULNERABLE VERSIONS
    ===================

    The Java Plugin versions 1.4.2_04 and 1.4.2_05 were tested on Windows
    and Linux. Web browsers tested were Microsoft Internet Explorer,
    Mozilla Firefox and Opera. It should be noted that Opera uses a
    different way of connecting JavaScript and Java which caused the test
    exploit not to work on Opera. However the problem itself (access to
    private packages) was demonstrated on Opera too, so it may be
    vulnerable to a variation of the exploit.

    SOLUTION
    ========

    Sun Microsystems was informed on April 29, 2004 and has fixed the
    problem in J2SE 1.4.2_06, available at

      http://java.sun.com/j2se/1.4.2/download.html

    CREDITS
    =======

    The vulnerability was discovered and researched by Jouko Pynnonen,
    Finland.

    -- 
    Jouko Pynnönen          Web: http://iki.fi/jouko/
    jouko@iki.fi
    _______________________________________________
    Full-Disclosure - We believe in it.
    Charter: http://lists.netsys.com/full-disclosure-charter.html
    

  • Next message: Stefan Esser: "[Full-Disclosure] Advisory 15/2004: Cyrus IMAP Server multiple remote vulnerabilities"

    Relevant Pages

    • Re: Java Scripts in Internet Explorer
      ... JavaScript and Java, despite the similar names, are completely different things. ... Look for tags that load Java applets, although the reference I am using indicates that they can also be loaded with the tag. ...
      (microsoft.public.windows.inetexplorer.ie6.browser)
    • Re: Java technology versus .net
      ... Flash and Java applets and Java WebStart are client-side technologies. ... They all speak to the server using HTTP communication. ...
      (comp.lang.java.programmer)
    • OK I goofed!
      ... At the posting I did not know there was a difference between Java ... What is the difference between a Java Applet and a Java Script? ... Java Script is raw code language that is placed in the html of the web page. ... Java Applets, on the other hand, are small ...
      (comp.lang.java.help)
    • [ GLSA 200501-16 ] Konqueror: Java sandbox vulnerabilities
      ... The Java sandbox environment in Konqueror can be bypassed to access ... allowing untrusted Java applets to perform ... This applet can then bypass security ...
      (Bugtraq)
    • [Full-Disclosure] [ GLSA 200501-16 ] Konqueror: Java sandbox vulnerabilities
      ... The Java sandbox environment in Konqueror can be bypassed to access ... allowing untrusted Java applets to perform ... This applet can then bypass security ...
      (Full-Disclosure)