Ejecución remota de comandos y robo de datos: hackers comprometen uno de los proyectos de código abierto más antiguos del mundo

Ejecución remota de comandos y robo de datos: hackers comprometen uno de los proyectos de código abierto más antiguos del mundo

Desarrolladores de Plone alertan sobre el compromiso de cinco repositorios de código en GitHub

image

En uno de los mayores proyectos abiertos de gestión de sitios se produjo un incidente de seguridad encubierto. Un atacante desconocido inyectó código malicioso en varios repositorios en GitHub mediante la reescritura forzada del historial, y parte de las modificaciones durante mucho tiempo pareció inofensiva y no suscitó sospechas.

El equipo del proyecto Plone informó que el ataque fue detectado tras cambios extraños en las solicitudes de incorporación de código. GitHub marcó automáticamente varias ramas como reescritas de forma forzada. Al verificarlo, los desarrolladores encontraron un fragmento enredado de JavaScript con ofuscación. Según su evaluación, el código era malicioso. La mayor parte de las intervenciones se revirtió rápidamente, pero uno de los casos salió a la luz más tarde.

Plone es un sistema de gestión de contenidos de código abierto, escrito en Python y JavaScript. El proyecto existe desde hace muchos años y es mantenido por una gran comunidad. Varios colaboradores todavía tenían permisos de escritura, aunque hacía tiempo que no contribuían. El equipo estaba precisamente planificando revisar y reducir esos accesos.

Los cambios sospechosos se realizaron en nombre de un colaborador veterano del proyecto. Los desarrolladores no lo consideran implicado en el ataque y suponen un compromiso de la cuenta. Según el servicio de soporte de GitHub, se registraron envíos maliciosos de cambios en cinco repositorios. En un caso la modificación llegó a la rama principal. El cambio se disfrazó como una actualización de versión tras una publicación, pero en uno de los archivos de configuración había un fragmento malicioso oculto detrás de una larga cadena de espacios. En la vista normal de diferencias parecía un cambio de formato.

Los desarrolladores aconsejan, en casos similares, comprobar todas las ramas por la fecha de la última actualización y contrastarla con las fechas reales de los commits. También se puede analizar los eventos mediante la interfaz de programación de GitHub y buscar operaciones sospechosas de envío de cambios.

El atacante empleó precisamente la reescritura forzada del historial porque esas acciones son más difíciles de detectar que los envíos habituales de cambios. En la mayoría de los repositorios del proyecto la protección ya estaba activada y prohibía esas operaciones en las ramas principales. Tras el incidente, el equipo activó reglas adicionales a nivel de toda la organización. Ahora están prohibidas las reescrituras forzadas y la eliminación de ramas clave, así como la modificación de etiquetas de versiones.

Según la descripción de la parte afectada, el código malicioso estaba dirigido sobre todo a los desarrolladores y no a los usuarios finales. Se introducía en archivos en la raíz del repositorio que se ejecutan durante el proceso de compilación. Al ejecutarse, el código se instalaba en el sistema, descargaba herramientas de ejecución remota de comandos, tomaba el control del servidor e intentaba extraer credenciales, claves de API, perfiles de navegador y billeteras de criptomonedas. Presuntamente los atacantes añadieron una clave personal de acceso oculta y esperaron alrededor de dos meses antes de iniciar acciones activas.

El equipo del proyecto recomienda que los desarrolladores revisen periódicamente la lista de claves personales de acceso y otros secretos en sus cuentas y eliminen todos los elementos desconocidos. También aconsejan, en la medida de lo posible, prohibir la reescritura forzada del historial en las ramas principales y en las ramas mantenidas. Esto reduce notablemente el riesgo de sustitución encubierta del código.