Logotipo de Zephyrnet

La cadena de suministro de PHP Packagist envenenada por un pirata informático que "busca trabajo"

Fecha:

Hemos escrito sobre PHP Ecosistema empaquetador antes.

Al igual que PyPI para Pythonistas, Gems para fanáticos de Ruby, NPM para programadores de JavaScript o LuaRocks para Luaphiles, Packagist es un repositorio donde los colaboradores de la comunidad pueden publicar detalles de los paquetes de PHP que han creado.

Esto facilita que otros programadores de PHP obtengan el código de la biblioteca que desean usar en sus propios proyectos y que mantengan ese código actualizado automáticamente si así lo desean.

A diferencia de PyPI, que proporciona sus propios servidores donde se almacena el código de la biblioteca real (o LuaRocks, que a veces almacena el código fuente del proyecto y a veces se vincula a otros repositorios), Packagist se vincula, pero no guarda copias del código que usted necesita descargar

Hay una ventaja en hacerlo de esta manera, en particular, los proyectos que se administran a través de servicios de código fuente conocidos, como GitHub, no necesitan mantener dos copias de sus versiones oficiales, lo que ayuda a evitar el problema de la "desviación de la versión" entre el sistema de control de código fuente y el sistema de empaquetado.

Y hay una desventaja, en particular, que inevitablemente hay dos formas diferentes en que los paquetes pueden ser trampas explosivas.

El administrador de paquetes en sí mismo podría ser pirateado, donde cambiar una sola URL podría ser suficiente para desviar a los usuarios del paquete.

O el repositorio de código fuente al que está vinculado podría ser pirateado, de modo que los usuarios que siguieron lo que parecía la URL correcta terminarían con contenido falso de todos modos.

Cuentas antiguas consideradas dañinas

Este atacar (lo llamaremos así, a pesar de que el hacker en cuestión no publicó ningún código trampa explosiva) usó lo que podría llamarse un enfoque híbrido.

El atacante encontró cuatro cuentas de Packagist antiguas e inactivas para las que de alguna manera habían adquirido las contraseñas de inicio de sesión.

Luego identificaron 14 proyectos de GitHub que estaban vinculados por estas cuentas inactivas y los copiaron en una cuenta de GitHub recién creada.

Finalmente, modificaron los paquetes en el sistema Packagist para que apuntaran a los nuevos repositorios de GitHub.

La clonación de proyectos de GitHub es increíblemente común. A veces, los desarrolladores quieren crear una bifurcación genuina (versión alternativa) del proyecto bajo una nueva administración u ofrecer características diferentes; en otras ocasiones, los proyectos bifurcados parecen ser copiados por lo que podría llamarse de manera poco halagüeña "razones volumétricas", lo que hace que las cuentas de GitHub parezcan más grandes, mejores, más ocupadas y más comprometidas con la comunidad (si me permite el juego de palabras) de lo que realmente son.

Aunque el hacker podría haber insertado código malicioso en la fuente PHP de GitHub clonada, como agregar rastreadores, registradores de teclas, puertas traseras u otro malware, parece que todo lo que cambiaron fue un solo elemento en cada proyecto: un archivo llamado composer.json.

Este archivo incluye una entrada titulada description, que normalmente contiene exactamente lo que esperaría ver: una cadena de texto que describe para qué sirve el código fuente.

Y eso es todo lo que nuestro hacker modificó, cambiando el texto de algo informativo, como Project PPP implements the QQQ protocol so you can RRR, por lo que sus proyectos en su lugar informaron:

 Utilizado por XXX@XXXX.com. Ищу работу на позиции Seguridad de aplicaciones, probador de penetración, especialista en seguridad cibernética.

La segunda oración, escrita mitad en ruso, mitad en inglés, significa:

 Busco trabajo en Seguridad de Aplicaciones... etc.

No podemos hablar por todos, pero en lo que respecta a los CV (currículos), no encontramos este terriblemente convincente.

También el El equipo empaquetador dice que ahora se han revertido todos los cambios no autorizados y que los 14 proyectos clonados de GitHub no se han modificado de ninguna otra manera que no sea para incluir la solicitud de empleo del pwner.

Por lo que vale, la cuenta de GitHub del aspirante a experto en seguridad de aplicaciones todavía está activa y todavía tiene esos proyectos "bifurcados".

No sabemos si GitHub aún no ha eliminado la cuenta o los proyectos, o si el sitio ha decidido no eliminarlos.

Después de todo, la bifurcación de proyectos es un lugar común y está permitido (cuando los términos de la licencia lo permiten, al menos), y aunque describir un proyecto de código no malicioso con el texto Pwned by XXXX@XXXX.com es inútil, no es ilegal.

¿Qué hacer?

  • No hagas esto. Definitivamente no va a atraer el interés de ningún empleador legítimo y (si somos honestos) tampoco va a impresionar a ningún ciberdelincuente.
  • No deje cuentas activas sin usar si puede evitarlo. Como dijimos ayer en Día mundial de la contraseña, considere cerrar las cuentas que ya no necesita, con el argumento de que cuantas menos contraseñas tenga en uso, menos habrá para que las roben.
  • No reutilice las contraseñas en más de una cuenta. La suposición de Packagist es que las contraseñas abusadas en este caso estaban en los registros de violación de datos de otras cuentas donde las víctimas habían usado la misma contraseña que en su cuenta de Packagist.
  • No olvides tu 2FA. Packagists insta a todos sus propios usuarios a activar 2FA, por lo que una contraseña por sí sola no es suficiente para que un atacante inicie sesión en su cuenta, y recomienda hacer lo mismo en su cuenta de GitHub también.
  • No acepte ciegamente las actualizaciones de la cadena de suministro sin revisarlas para verificar que sean correctas. Si tiene una red complicada de dependencias de paquetes, es tentador dejar de lado sus responsabilidades y dejar que el sistema obtenga todas sus actualizaciones automáticamente, pero eso solo lo pone a usted y a sus usuarios intermedios en un riesgo adicional.

AQUÍ ESTÁ EL CONSEJO DEL DÍA MUNDIAL DE LA CONTRASEÑA


punto_img

Información más reciente

punto_img