Ejecución de código arbitrario en PHP a través de certificados X.509

Se ha corregido un fallo crítico en el lenguaje de programación PHP que

podría permitir a un atacante ejecutar código arbitrario a través de un
certificado X.509 especialmente manipulado.

El descubridor de la vulnerabilidad es el investigador Stefan Esser
(https://twitter.com/i0n1c). Esser es conocido por la gran cantidad de
fallos que ha encontrado a lo largo de su carrera, tanto en proyectos
open source como por ejemplo el DRM de la videoconsola Microsoft Xbox o
los exploits para la liberación del sistema iOS de Apple. En especial
cabe destacar su habilidad para encontrar fallos en el lenguaje PHP del
que fue contribuidor durante 5 años además de fundador del equipo de
seguridad.

El fallo descubierto se encuentra en la función de PHP
‘openssl_x509_parse’. Esta función se encarga de examinar un certificado
X.509 y devuelve un array con toda la información adicional que éste
contiene. A su vez, usa la función ‘asn1_time_to_time_t’ para la
conversión de marcas de tiempo (timestamps) desde el formato ASN1
(cadenas de caracteres) a un entero.

Esta última función es vulnerable cuando trata datos en formato binario
permitiendo escribir hasta 5 bytes nulos fuera del búfer reservado para
los datos. Tal como cuenta Esser en la notificación de la
vulnerabilidad, un certificado que contenga valores nulos en los campos
‘notBefore’ y ‘notAfter’ podría corromper la memoria y permitir la
ejecución de código arbitrario cuando se emplea la función
‘openssl_x509_parse’ para procesarlo.

Como curiosidad, Esser se encontró con una implementación bastante
antigua (de la versión de PHP 4.0.6) y descuidada en
‘asn1_time_to_time_t’, hasta el punto de que en el propio código de la
función aparecía el siguiente mensaje de debug de su autor:

“extension author too lazy to parse %s correctly”

(traducido: “El autor de la extensión es demasiado perezoso para
analizar %s correctamente”)

La vulnerabilidad, con CVE-2013-6420, ha sido corregida en las versiones
5.5.7, 5.4.23 y 5.3.28 de las respectivas ramas con mantenimiento. Son
vulnerables las ramas sin soporte: 5.2, 5.1, 5.0 y de la 4.0.6 a la
4.4.9.
 Fuente

__________

NOTA: Los interesados en información sobre contrato de soporte Asistencia Tecnica de SATINFO y/o licencia de uso/actualizaciones de sus utilidades, contacten con info@satinfo.es
__________

Este blog no se hace responsable de las opiniones y comentarios de los textos en los que se cita la Fuente, ofreciendo su contenido solo para facilitar el acceso a la información del mismo.

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Los comentarios y los pings están cerrados.

Los comentarios están cerrados.

 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies