CSIRTCV

Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es

11/01/2012

Greus vulnerabilitats remotes en Apache Struts

S’han anunciat quatre vulnerabilitats en Apache Struts (versions 2.1.0 a 2.3.1), que podrien permetre a un atacant remot executar codi Java o sobreescriure arxius arbitraris en el sistema objectiu.

Risc: Alt

Struts és una ferramenta gratuïta de codi obert per al desenvolupament d’aplicacions web Java EE davall el patró d’arquitectura de software Model-Vista-Controlador (MVC). Anteriorment es desenvolupava com a part del projecte Jakarta de l’Apache Software Foundation, però actualment és un projecte independent conegut com a Apache Struts.

El primer dels problemes d’execució remota afecta versions menors a 2.2.1.1 i està relacionat amb "ExceptionDelegator". Quan es produïx una excepció mentres s’apliquen els valors dels paràmetres a propietats, el valor pot ser avaluat com una expressió OGNL. Com els valors no es filtren una atacant pot abusar de la potència del llenguatge OGNL per a executar codi Java arbitrari.

Un altre problema es deu al fet que la llista blanca de caràcters per a noms de paràmetres no s’aplica a "CookieInterceptor". Quan Struts està configurat per a tractar noms de cookies, un atacant pot executar comandos del sistema arbitraris per mitjà de mètodes estàtics Java.

Per últim, determinades entrades no són netejades adequadament per ParameterInterceptor abans d’emprar-se per a crear arxius. Un atacant podria emprar açò per a crear arxius arbitraris.

En l’avís oficial, també s’incidix en un problema, encara que no es tracta d’una vulnerabilitat per si mateixa. S’informa que les aplicacions que s’executen en mode desenvolupador i usen "DebuggingInterceptor" estan exposades a una execució remota de comandaments.

Sistemes Afectats:

Apache Struts versions 2.1.0 a 2.3.1

Referències:

None

Solució:

Es recomana actualitzar a Struts 2.3.1.1 i aplicar el filtre "acceptedParamNames" més fort a "ParameterInterceptor" i "CookieInterceptor": acceptedParamNames = "[a-zA-Z0-9\.][()_']+";

Notes:

http://unaaldia.hispasec.com/2012/01/graves-vulnerabilidades-remotas-en.html
http://secunia.com/advisories/47393/
http://struts.apache.org/2.x/docs/s2-008.html
http://www.brucephillips.name/blog/index.cfm/2011/2/19/Struts-2-Security-Vulnerability--Dynamic-Method-Invocation

Font: Hispasec una-al-día

CSIRT-CV