Nuevos exploits de PHP resaltan los peligros de la deserialización

16/08/2018

La deserialización PHP puede ser desencadenada por otras vulnerabilidades previamente consideradas de bajo riesgo.

Los ataques de deserialización de PHP son bien conocidos desde hace un tiempo, pero un nuevo método de explotación, explicado la semana pasada en Black Hat, demostró que la superficie de ataque para la deserialización de PHP es más amplia de lo que se pensaba originalmente.

"Lo que presenté fue básicamente una nueva forma de comenzar un ataque de deserialización", dice Sam Thomas, director de investigación de Secarma Ltd. 

También conocido como deserialización, este proceso ocurre cuando una aplicación como PHP toma un objeto codificado en un formato que se puede almacenar y transportar fácilmente, también conocido como serializado, y lo convierte de nuevo en un objeto "activo".

Cuando una aplicación deserializa un objeto que ha sido creado o manipulado maliciosamente, pueden ocurrir cosas malas. En muchos casos, este escenario abre la aplicación a la ejecución remota de código (RCE). Es un peligro que está cobrando importancia: el año pasado, OWASP agregó una deserialización insegura a su lista de 10 vulnenaribolidades principales recientemente actualizada, y la supuesta brecha masiva de Equifax del año pasado se inició por deserialización.

Por su parte, Thomas demostró que es posible aprovechar la forma en que PHP maneja los archivos autoextraíbles en lo que se llama un archivo Phar. Estos archivos Phar pueden contener metadatos serializados y cada vez que una operación de archivo acceda a un archivo Phar, los metadatos se deserializan.

Entonces, si un atacante puede obtener cualquier archivo Phar (con metadatos mal formados) en el sistema de archivos local del objetivo y desencadenar cualquier operación para acceder a ese archivo, incluso para simplemente buscar si el archivo existe, entonces pueden comenzar un ataque de deserialización.

Como resultado, Thomas explicó que toda una gama de vulnerabilidades path-handling  que anteriormente se consideraban vulnerabilidades de bajo riesgo y vulnerabilidades del tipo Server Side Request Forgery (SSRF) ahora pueden utilizarse  más a menudo para realizar ataques de deserialización.

¿Qué pueden hacer los desarrolladores?

El investigador demostró la semana pasada varios ejemplos de vulnerabilidades en bibliotecas PHP conocidas y un problema aún no resuelto sobre cómo maneja WordPress los archivos en miniatura que ejemplifican cómo se desarrolla este método de deserialización en el mundo real.

"He resaltado que la deserialización está expuesta a muchas vulnerabilidades que anteriormente se consideraban de bajo riesgo", explica. "Los problemas que podrían haber pensado que se solucionaban con un cambio de configuración o que se habían considerado poco importantes anteriormente, podrían necesitar ser reevaluados con los ataques que demostré".

En un documento que detalla sus hallazgos, Thomas recomienda que los desarrolladores eviten los patrones de diseño que pueden dar lugar a fallos relacionados a la deserialización que puedan ser vulnerados, y que los sistemas IDS e IPS comiencen a instituir firmas que detecten archivos maliciosos de Phar.

"La investigación continúa como una tendencia reciente, al demostrar que la serialización de objetos es una parte integral de varios lenguajes modernos", escribió. "Debemos estar constantemente al tanto del impacto de la seguridad de que dichos mecanismos estén expuestos a que los datos sean controlados por atacantes".

Artículos relacionados: