Return-Path:Received: from CS.Princeton.EDU (CS.Princeton.EDU [128.112.136.10]) by camel16.mindspring.com (8.8.5/8.8.5) with ESMTP id PAA02493 for ; Mon, 10 Nov 1997 15:55:57 -0500 (EST) Received: from cs.princeton.edu (blowfish.CS.Princeton.EDU [128.112.136.193]) by CS.Princeton.EDU (8.8.7/8.8.7) with ESMTP id PAA06843; Mon, 10 Nov 1997 15:54:31 -0500 (EST) Message-ID: <3467749A.4B1A0E2B@cs.princeton.edu> Date: Mon, 10 Nov 1997 15:54:50 -0500 From: Dan Wallach Organization: Princeton University, CS Department X-Mailer: Mozilla 4.03 [en] (WinNT; U) MIME-Version: 1.0 Newsgroups: comp.lang.java.security,comp.lang.java.misc,comp.lang.java.programmer,comp.security.misc,comp.security.firewall,alt.security,de.comp.security To: ron@finjan.com CC: "Mark D. LaDue" Subject: Re: Finjan Software Response to Mark D. LaDue References: <3465a7f3.19487691@news.netvision.net.il> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mozilla-Status: 8003 While I cannot comment on whether LaDue's review is correct (I've never used a Finjan product), I feel some of Ron Moritz's comments are somewhat inconsistent with everything we know about Java security. Ron Moritz wrote: > Finjan: LaDue does not acknowledge the facts that Finjan (a) defined > the Java and ActiveX security field; (b) was the first third-party > vendor to introduce solutions, both at the desktop and at the gateway, > to address enterprise Java and ActiveX security issues; and (c) has > received several awards and much applaud for its technology and > innovation from the press, including: [list deleted] Finjan does not acknowledge that the "Java security field" was defined by Sun themselves, as a fundamental part of the Java design in the original HotJava alpha releases in 1995. Finjan also does not acknowledge the contributions of researchers here at Princeton, at the University of Washington, and elsewhere around the world. Finjan also fails to acknowledge the sophisticated new Java security infrastructures supported by Netscape 4.0, IE 4.0, and Sun JDK 1.2. Finjan's technology (as distilled from its marketing documents) seems to include: 128-bit checksums of applets and catching of security exceptions (for detecting "bad" applets), applet monitoring (and termination), and some form of sandboxing for ActiveX controls. I'll focus on the Java stuff, since that's what I know about. None of these technologies seem strong in the face of a hostile adversary. A malicious applet can be trivially changed every time it's delivered by a Web server. Such polymorphic applets would fail the checksum tests. A more appropriate solution would likely be statically looking for specific code sequences within the applet, similar to how traditional virus checkers work. These, of course, require having existing viruses (or attack applets) to analyze. As far we know, there have never been *any* malicious Java applets *ever* written beyond those used by academics to demonstrate bugs. Our own attack applets were only shared with the specific Java vendors (Sun, Netscape, and Microsoft), and if you're running the latest and greatest versions of their products, you're safe against our older attacks. It's worth noting that not a single one of our attack applets ever needed to cause a security exception to be thrown, and, in fact, some commercial Java programs (such as Corel's office suite) tried to open files to detect if they were running as applets or not. Non-hostile programs can cause security exceptions, too. I'm also curious how Finjan hopes to terminate an applet once it's running. If you call Thread.stop(), that just sends a ThreadDeath exception which can be caught and ignored. Even if they hack themselves deeply into the Java runtime and terminate the actual thread, they could destabilize the entire browser, since that thread could be in the middle of a critical section. Even then, if they can safely terminate the thread, the thread's garbage will eventually be collected, causing finalize() methods to run, and effectively bringing the hostile applet back to life again. Even more fun, this sort of resurrected applet thread would no longer have anything to do with the original applet (it started on the system's GC thread!). One of the main things which I think Finjan does usefully is black-listing support (so I can cause the Java applet on Finjan's home page not to load on my browser). This kind of blacklisting is also supported by IE 4.0's security zones and our own JavaFilter (available free from http://www.cs.princeton.edu/sip/). I would feel better if there were a detailed public description of how Finjan's products work as well as rigorous independent testing of the Finjan security architecture. Personally, I run Netscape 4.03 with Java turned on. -- Dan Wallach Princeton University, CS Department dwallach@cs.princeton.edu http://www.cs.princeton.edu/~dwallach/