Además de lo que otros han dicho (las publicaciones de blownie55 y Steffen Ullrich son excelentes), me gustaría agregar un poco de información adicional aquí.
El peor escenario posible
¿Cuál es el peor de los casos si alguien aprovecha esta vulnerabilidad? ¿Qué es posible hacer?
Si su aplicación se ha dirigido con éxito, entonces este ataque permite la ejecución remota de código, lo que significa que un atacante puede hacer todo lo que quiera para su sistema. Esto les permite ejecutar sus propias aplicaciones, modificar su código sin firmar, modifique su código firmado si pueden comprometer su repositorio de origen y, lo que es peor, acceda a los datos de su cliente.
Cualquier máquina accesible a la máquina comprometida también debe considerarse vulnerable.
En el peor de los casos, es esencialmente una violación de los datos del cliente y / o usuario, o incluso de sus secretos comerciales, algo que ninguna empresa legítima quiere que suceda.
Si está utilizando WebSphere, IBM ha lanzado un parche para esto .
Determinar la vulnerabilidad
Tomado del sitio web de IBM : El perfil Liberty de IBM WebSphere Application Server solo permite el Apache Commons Collections si está utilizando UNA de las siguientes tres características:
Puede ser vulnerable si está utilizando cualquiera de estas funciones. Para determinar si es vulnerable, puede buscar en el archivo console.log este mensaje:
[AUDIT ] CWWKF0012I: The server installed the following features: [xxxxx]
Si en lugar de xxxxx
, no contiene ninguna de las tres funciones enumeradas, entonces no eres vulnerable.
Reglas de Snort IDS
Deberá proteger su servidor de las vulnerabilidades entrantes en la red. Snort es un sistema de detección de intrusos que ayuda a prevenir el acceso no autorizado. Si estás usando Snort, aquí están las reglas que necesitarás:
alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"rO0ABXNyA"; content:"jb21tb25zLmNvbGxlY3Rpb25z"; fast_pattern; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814811; rev:1;)
alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Calling Common Collection Function"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"commons.collections"; nocase; distance:0; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814812; rev:1;)
alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"java/io/Serializable"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814813; rev:1;)
alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Groovy Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.codehaus.groovy.runtime.ConversionHandler"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814814; rev:1;)
alert tcp any any -> $HOME_NET any (msg:" ETPRO EXPLOIT Serialized Spring Java Object Generated by ysoserial"; flow:to_server,established; content:"|ac ed 00 05 73 72 00|"; fast_pattern; content:"org.springframework.core.SerializableTypeWrapper"; nocase; distance:0; content:"ysoserial/payloads/util/Gadgets"; reference:url,github.com/foxglovesec/JavaUnserializeExploits; classtype:misc-activity; sid:2814815; rev:1;)
Aftermath
Debido a que esta vulnerabilidad permitió la ejecución remota de código, deberá realizar un barrido forense del sistema afectado y de las máquinas a las que tuvo acceso. Existe la posibilidad de que el agujero del conejo sea mucho más profundo. Sin embargo, este tipo de barrido es un poco demasiado amplio para esta respuesta.