L'écosystème Java de nouveau touché par une faille
La vulnérabilité dans le Framework Spring permet d'exécuter du code à distance

Le , par Hinault Romaric, Responsable Actualités
Décidément, l’écosystème Java n’en finit pas avec les vulnérabilités.

Cette fois, ce n’est plus le plug-in Java qui est pointé du doigt, mais Spring, le célèbre Framework open source utilisé pour construire et définir l’infrastructure des applications Java critiques.




Les experts en sécurité du cabinet Aspect Security ont découvert une faille critique dans l’outil, pouvant être exploitée par des pirates distants pour exécuter du code arbitraire sur les machines affectées.

Baptisée « remote code with Expression Language injection », la vulnérabilité se situe au niveau de la fonction « expression language » du Framework et peut entrainer la corruption des applications sous Spring et la perte du contrôle de tout système reposant sur le Framework.

Se référant aux données de Sonatype, qui exploite le référentiel central pour des composants open source, Aspect Security estime que plus de 1,3 million de versions vulnérables de Spring ont été téléchargées par plus de 22 000 organisations à travers le monde.

La communauté Spring travaille déjà sur un correctif pour cette faille qui s’avère, cependant, difficile à patcher rapidement. Pour l’instant, il est conseillé aux personnes utilisant le Framework Java de désactiver la fonction « expression language ».

La vulnérabilité, qui n’est pas facilement exploitable, ne serait pas activement utilisée pour l’instant. Mais, pour combien de temps ?

Source : Aspect Security


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


 Poster une réponse

Avatar de cd090580 cd090580
http://www.developpez.com
Membre habitué
le 18/01/2013 13:12
Code :
1
2
3
4
5
 
function ExpressionLanguage() 
{ 
     return false; 
}
et c'est patché
Avatar de olivier.pitton olivier.pitton
http://www.developpez.com
Expert Confirmé
le 18/01/2013 15:47
Plop,

Je pense qu'il ne faut pas faire de rapprochements entre cette faille et les dernières en date. Elle touche un framework Java et non la plateforme. Quand une faille est découverte dans le Zend Framework, on n'assimile pas cette faille à PHP.

Quoiqu'il en soit, bon courage pour le patch.
Avatar de lvr lvr
http://www.developpez.com
Membre émérite
le 18/01/2013 16:43
oui mais ça continue à salir l'image de java. L'amalgame est vite fait.
Avatar de Traroth2 Traroth2
http://www.developpez.com
Expert Confirmé Sénior
le 18/01/2013 17:49
J'ai un peu du mal à saisir où est la vulnérabilité dans cette histoire. L'idée de vulnérabilité, c'est quand même que quelqu'un de l'extérieur, aux intentions pas forcément bonnes, puisse injecter de l'information dans un système, provoquant des traitements éventuellement néfastes.

Expression Language est un langage de script interne à Spring. De quelle manière peut-on injecter un script dans une application Java utilisant Spring de manière à ce qu'il soit exécuté ? A moins que l'exploit de la vulnérabilité, ça ne soit que le programmeur qui créé l'application "vulnérable" n'exécute du code passé en paramètre à une servlet ou un truc du genre, mais avec ce genre de conditions, on pourrait dire que Linux possède une vulnérabilité appelée bash, alors...

Secundo, pour qu'un script ainsi injecté puisse s'exécuter en produisant le moindre effet, ça nécessite la connaissance du code source de l'application, sinon, ça ne risque pas de faire grand chose.

Bref, cette vulnérabilité reste largement à démontrer, je pense...
Avatar de thelvin thelvin
http://www.developpez.com
Modérateur
le 18/01/2013 18:08
Citation Envoyé par Traroth2  Voir le message
Expression Language est un langage de script interne à Spring.

Non, Expression Language est un langage de script interne à J2EE, plus exactement les JSP et dérivés.

Le problème ici est le Double Expression Language de Spring, en gros, une Expression Language qui construit une autre Expression Language et le moteur d'exécution qui évalue l'une après l'autre.

Cela est exposé en interne et en externe dès lors qu'un paramètre d'entrée de l'utilisateur est utilisé à l'intérieur d'une Expression Language. C'est un mécanisme très puissant mais très dangereux, et pas mal de gens l'avaient vu dès le début. Mais on ne nous avait pas pris au sérieux...
Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 18/01/2013 20:28
Citation Envoyé par Traroth2  Voir le message
De quelle manière peut-on injecter un script dans une application Java utilisant Spring de manière à ce qu'il soit exécuté ?

L'exemple est donné dans le lien:

Code :
<spring:message text="" code="${param['message']}"></spring:message>
et un appel comme

Code :
http://vulnerable.com/foo?message=${applicationScope}
Montre que applicationScope est bel est bien résolu même si passé en paramètre
L'article montre même qu'il arrive à injecter une classe java de son cru dans le serveur.
Avatar de olivier.pitton olivier.pitton
http://www.developpez.com
Expert Confirmé
le 19/01/2013 9:13
pour qu'un script ainsi injecté puisse s'exécuter en produisant le moindre effet, ça nécessite la connaissance du code source de l'application, sinon, ça ne risque pas de faire grand chose.

Pas forcément, en suivant ce qui est dit ici :
L'article montre même qu'il arrive à injecter une classe java de son cru dans le serveur.

Avec des notions comme l'injection de dépendances, il est très simple de récupérer un DataSource ou une ressource propre au serveur et de faire n'importe quoi avec.
Avatar de skypers skypers
http://www.developpez.com
Membre à l'essai
le 19/01/2013 11:56
Je pense qu'il ne faut pas faire de rapprochements entre cette faille et les dernières en date. Elle touche un framework Java et non la plateforme. Quand une faille est découverte dans le Zend Framework, on n'assimile pas cette faille à PHP.

C’est disons plus facile d’avoir des failles dans tous les sens avec ce genre de langages. Tu as cité les deux plus parlants, d’ailleurs Ça ne peut pas être un hasard !
Avatar de tchize_ tchize_
http://www.developpez.com
Expert Confirmé Sénior
le 19/01/2013 12:47
Citation Envoyé par olivier.pitton  Voir le message
Avec des notions comme l'injection de dépendances, il est très simple de récupérer un DataSource ou une ressource propre au serveur et de faire n'importe quoi avec.

Si j'arrive a injecter une classe de mon cru dans le serveur, ce sera d'office un remote terminal, bien plus simple et de là je pourrais faire ce que je veux
Avatar de Gugelhupf Gugelhupf
http://www.developpez.com
Membre Expert
le 19/01/2013 13:33
Citation Envoyé par Wikipedia
Un indicateur paradoxal de la popularité de PHP est le nombre de failles de sécurité concernant des applications PHP [...]. Ces failles représentent 12 % du total en 2003, 20 % en 2004, 28 % en 2005, 43 % en 2006, 36 % en 2007, 34,8 % en 2008, 29,9 % en 2009, 27,2 % en 2010.

Plus un langage est populaire, plus on lui découvre des failles.
Je pense qu'on atteint un pic de ces découvertes en ce moment avec Java, mais qu'ils diminueront avec le temps.
Offres d'emploi IT
Concepteur fonctionnel (h/f)
CDI
CAREER BOOSTER - Ile de France - Paris (75000)
Parue le 06/10/2014
Analyste sql confirmé (h/f)
CDI
ELANZ - Ile de France - Paris (75009)
Parue le 16/10/2014
Développeur talentueux symfony2
CDI
INTEAM - Ile de France - Paris (75000)
Parue le 14/10/2014

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

PlanetHoster
Ikoula