Arch Linux considera que el incidente de malware ya está bajo control: más de 1,500 paquetes afectados
(phoronix.com/news)- En el repositorio AUR de contribuciones de usuarios de Arch Linux, primero se confirmó que había más de 400 paquetes infectados con malware, pero la cifra final aumentó a más de 1,500
- En una actualización de hace unas horas, se estimaba que unos 900 paquetes habían sido infectados en este incidente de esta semana
- Después, los desarrolladores de Arch Linux eliminaron todos los commits maliciosos identificados, y el número de paquetes afectados se contabilizó en 1,579
- La lista de 1,579 también aparece como una lista amplia pero no completa de los paquetes afectados, por lo que el alcance total podría ser mayor
- Mucho software en el repositorio mantenido por usuarios se vio afectado por este incidente de seguridad, y en una actualización aparte se reportó otra ola de ataques de malware más sofisticados
Resumen del incidente
- El incidente comenzó cuando se descubrieron más de 400 paquetes infectados con malware en el repositorio AUR de contribuciones de usuarios para usuarios de Arch Linux
- Al final del día, Arch Linux consideró que todos los commits afectados ya habían sido atendidos, pero el número de paquetes impactados aumentó a más de 1,500
- Este fue un incidente de seguridad que afectó a mucho software del repositorio mantenido por usuarios de Arch Linux
Cambio en el alcance del impacto
- En una actualización de hace unas horas, se estimaba que alrededor de 900 paquetes habían sido infectados con malware en el incidente de esta semana
- Después, según el último mensaje del hilo sobre el incidente de seguridad, los desarrolladores de Arch Linux eliminaron todos los commits maliciosos identificados
- La lista citada muestra que el número de paquetes afectados por el malware fue de 1,579
Incertidumbre restante
- La lista que muestra 1,579 paquetes también está marcada como “una lista amplia, pero no completa, de los paquetes afectados”
- Por lo tanto, la cifra publicada muestra un alcance confirmado y masivo del impacto, pero la propia lista no abarca todos los paquetes
Actualización posterior
- En una actualización aparte, continuó la información de que el AUR de Arch Linux enfrentó otra ola de ataques de malware más sofisticados
1 comentarios
Comentarios de Hacker News
Me pregunto si el equipo de AUR ha publicado alguna vez un análisis post mortem
La respuesta esta vez fue impresionantemente rápida, pero sinceramente parece que hacen falta cambios, ya sea en la política de AUR o en los wrappers
Debería poder configurarse una antigüedad mínima del paquete como en pnpm, y no cualquiera debería poder adoptar paquetes huérfanos
También se podría poner un límite de velocidad global a las adopciones para usarlo como señal de ataque, y al publicar también hace falta escaneo de vulnerabilidades, como hacen varias empresas en NPM
Aun así, la mayoría de estos cambios les corresponderían más a los helpers de empaquetado y a terceros que a los mantenedores de AUR
Así la propiedad no desaparecería y ya no haría falta marcarlos como huérfanos
[1] https://github.com/gavinhungry/patches/blob/main/pakku/pakku...
[2] https://github.com/zqqw/pakku
Sí hace falta una limitación, pero algo como 1 adopción al mes para usuarios registrados desde antes de cierto periodo parece razonable
De todos modos, casi nadie aplica actualizaciones automáticas y sin revisión a paquetes de AUR instalados localmente, así que la superficie de ataque ya es bastante pequeña
El punto clave del gusano miasma es precisamente que las firmas y la forma de los helpers cambian demasiado rápido
El implante malicioso cifrado descifra la carga útil con una clave AES-128-GCM distinta según la ubicación subida en GitHub, los nombres de métodos del código también cambian dinámicamente, y además reutiliza offsets de símbolos cifrados mezclándolos
Como es malware polimórfico, es un rival terrible para las herramientas basadas en firmas
APT28/29 parece depender en cierta medida de que Microsoft tarde en bloquear automáticamente a los usuarios y repositorios de GitHub usados como infraestructura C2
Vale la pena pensar qué implica esto para la estrategia de seguridad
Para cuando ya puedes escanear firmas o cadenas, ya estás jugando al gato y al ratón contra una botnet totalmente automatizada, y no vas a ganar
Durante la semana pasada, prácticamente solo socket.dev siguió estos cambios del implante, y las demás herramientas redescubrieron Miasma como si fuera una campaña nueva sin siquiera saber de qué se trataba
Faltó personal y toolchains capaces de hacer ingeniería inversa de las cargas útiles lo bastante rápido como para seguir el ritmo de nuevos adaptadores para ecosistemas que aparecían cada 24 horas
Aquí, “totalmente automatizado” significa que en otros ecosistemas de paquetes ya se estaban usando credenciales robadas antes de 48 horas
Siguen apareciendo direcciones de correo y nombres, y parece muy probable que pertenezcan a personas que no entendieron el impacto de este gusano autorreplicante
Por ejemplo, buscar indicadores de compromiso en paquetes que dependan de bun tampoco ayuda mucho
El malware simplemente puede volver a descargarse por otros medios externos
En la segunda campaña de PyPI, después de que la primera ola de droppers maliciosos de la campaña de RedHat fue marcada para los mantenedores de PyPI, cambiaron a descargar el dropper con archivos WHL comprimidos y archivos
setup.pthde ejecución automáticaA menos que los gestores de paquetes de estos ecosistemas se reescriban desde cero asumiendo
chroot, sandboxing, logs de red y dominios, y listas de permisos por ítem, seguirá siendo realista usar ataques a la cadena de suministro para distribuir malwareEl repositorio con herramientas de mitigación es [1], y los detalles técnicos están en la entrada de blog [2]
También se ven afectados Composer, Rubygems, NPM, PyPI y Go; es un problema de todos los gestores de paquetes
Hay que discutir más abiertamente cuánta confianza externa y cuánta negligencia estamos cargando sobre los gestores de paquetes en general, y esto de verdad tiene que cambiar
[1] https://github.com/cookiengineer/antimiasma
[2] https://cookie.engineer/weblog/articles/malware-insights-mia...
Cuando empezaron a aparecer wrappers de pacman que se podían instalar directamente desde AUR, me resultó muy incómodo
Sí he instalado cosas desde AUR, pero la mayoría de las veces prefiero saltarme ese paso intermedio e ir directo al sitio web del proyecto
Un PKGBUILD ya preparado no me parece lo bastante conveniente como para asumir el riesgo de typosquatting o del abuso de dependencias de npm o pip
yaymuestran el diff del PKGBUILD en cada actualizaciónAl instalar por primera vez, verificas la URL y si el script de instalación y demás parecen razonables; después, en la mayoría de las actualizaciones solo cambian el número de versión y el checksum
Un ataque de typosquatting se notaría con bastante claridad
La primera instalación sí es algo vulnerable, pero lo mismo pasa si vas al sitio web del proyecto y haces clic en descargar
Pasa igual en muchos otros aspectos de la vida
Después de usar Void Linux, en Arch también me cambié a
aurutilspara tener una separación parecidaPuedes compilar tú mismo, mantener fácilmente un repositorio local de AUR e instalar y administrar con
pacman, lo que mejora todo el proceso de actualizaciónNo me cambié a Linux para perder tiempo actualizando programas como usuario de Windows, entrando a sitios web y haciendo clic en “download”
Aun así, los wrappers de pacman que mencionaste sí parecen riesgosos
Hay tantos tutoriales que usan esos repositorios que ya casi parece que uno es el raro por no querer darle permisos root indefinidos a un desconocido sin casi ninguna revisión por pares
Todo eso por instalar una sola versión de un paquete que no necesita actualizaciones o que las necesita muy rara vez
Leyéndolo rápido, parece que instalaron
atomic-lockfile,js-digestylockfile-jsdesde npmLa lista de paquetes afectados está en [1]
No encontré de inmediato una forma de verificar el sistema, así que ejecuté
pacman -Qmipara buscar información sobre paquetes externos y fechasLuego se puede comparar la salida con la lista de paquetes afectados
También se pueden buscar archivos así en varias ubicaciones
grep -rl "atomic-lockfile" / --include="package.json" --include="package-lock.json"grep -rl "atomic-lockfile" ~/.npm 2>/dev/nullgrep -i "atomic-lockfile" /var/log/pacman.log 2>/dev/nullNo sé si el paquete se borra a sí mismo después de ejecutarse
Como la otra información no ayudó mucho, quería compartir al menos comandos básicos
[1] https://md.archlinux.org/s/SxbqukK6IA
Obtuve con
yayla lista de paquetes instalados desde AUR:yay -Qam > packages_aur.lastDescargué la lista desde https://md.archlinux.org/s/SxbqukK6IA#:
curl https://md.archlinux.org/s/SxbqukK6IA/download > compromised.txtDespués, al ejecutar
grep -wFf compromised.txt packages_aur.last, deberían salir los paquetes que aparecen en ambos archivos, es decir, los que estuvieron comprometidos en algún momentoatomic-lockfileTambién usó
js-digestylockfile-js, y en algún momento cambió de npm a bunUna plataforma legendaria
emacs-magitsalió afectadoHasta donde sé, no tiene nada de JavaScript
Como siempre, es un recordatorio válido de no instalar paquetes, bibliotecas o aplicaciones arbitrarias de terceros sin revisarlas
Por suerte, esta vez se limitó al AUR, y el AUR es básicamente un repositorio donde cualquiera puede subir paquetes; además, a diferencia de los repositorios oficiales, se ha advertido muchas veces que hay que revisarlos antes de instalar
Herramientas de línea de comandos como
ruafacilitan revisar paquetes antes de instalarlos desde el AURSi haces operaciones bancarias en la misma computadora, no hay excusa para no revisar el software del que dependes
Si mantienes bajo el número de paquetes y usas solo lo necesario, también se vuelve mucho más simple actualizar
¿Que lea línea por línea todo el código antes de instalar?
¿Y qué pasa si es un paquete binario?
¿Hay que hacer builds reproducibles de todo lo que se instala, o cambiarse a una distro basada en código fuente?
Pasarle esa responsabilidad al usuario no es una solución sostenible
Hay espacio para el sentido común, pero culpar al usuario por esto no tiene sentido
Hay muchísimo más código en el mundo del que una persona podría leer en toda su vida
Seguramente ni tú has leído el 1% del código fuente que se está ejecutando ahora mismo en tu computadora
¿Entonces dejaste de usar computadoras?
¿Cómo puedes confiar en lo que pasa dentro de ella?
Los desarrolladores de Arch Linux hacen un gran trabajo y en lo personal se los agradezco, pero con el aumento de ataques a la cadena de suministro, siento que las advertencias al usuario ya llegaron a su límite hace tiempo
No se ve una solución fácil, pero controles como revisión por pares antes de publicar o un período de espera sí podrían mitigar el problema hasta cierto punto
Es absurdo que alguien pueda marcar un paquete como huérfano, esperar dos semanas y, si el mantenedor original está de vacaciones y no responde, el atacante termine asignado como mantenedor y pueda distribuir una actualización maliciosa
Las distros inmutables, Wayland y Flatpak aportan algunas piezas, pero todavía quedan huecos importantes
El problema más grande es que el sandboxing está atado al formato del paquete, y eso me parece un error
El sandboxing y los permisos de acceso deberían ser funciones a nivel del sistema, para que incluso binarios arbitrarios no puedan escaparse tan fácilmente por las grietas
Aunque no resuelva todo el problema, sí puede reducir mucho el alcance del daño y volver a los usuarios de la distro objetivos menos atractivos
Para quienes estén preocupados, encontré un repositorio que reúne scripts actualizados y listas de paquetes para ayudar a verificar si hubo infección: https://github.com/lenucksi/aur-malware-check
Cualquiera de las dos opciones debería bastar
No soy usuario de Arch Linux, pero uso mucho NodeJS, y ahí también sufren ataques parecidos con frecuencia
Últimamente me pregunto qué lugares están haciendo una gestión de paquetes realmente correcta y segura
No había sido a una escala tan grande como esta, pero desde el principio estaba claro que no era seguro y había advertencias de riesgo por todas partes
Todas tienen mantenedores que revisan los paquetes y se hacen responsables
Arch Linux también es así
La falta de confiabilidad inherente de AUR siempre se ha mostrado explícitamente en la Arch Wiki y en la cultura alrededor, y es distinta de gestores de paquetes de lenguajes de programación como npm o pip
Si usas AUR, hay que revisar todo
La mayoría de las distribuciones también están bien, y las distribuciones grandes tienen un historial bastante bueno
Tal vez sea por una cultura excesiva de DRY, o quizá por otra razón
De todo lo que he usado, no he visto otra pesadilla de árbol de dependencias a un nivel parecido
En AUR hay 15 mil paquetes huérfanos
Esta mañana ordené por popularidad y adopté 3 que casi no se actualizan para compilarlos
Si estás usando paquetes huérfanos, quizá valga la pena considerar adoptarlos tú mismo antes de que los tomen personas malintencionadas
Puede que me equivoque, pero esta situación parece una señal de mayor adopción de Linux de escritorio
Nunca he necesitado AUR
Si necesito un paquete que no está en el repositorio oficial, lo compilo yo mismo o, si hay una versión binaria, la descargo
Así no hace falta usar root al compilar, y puedes instalar el programa localmente para un solo usuario, lo que de hecho encaja mejor con la mayoría de los casos de uso de escritorio
Al menos reduce en un paso la posibilidad de inyección de malware de desarrollador → usuario a desarrollador → mantenedor → usuario
makepkgrechaza activamente ejecutarse como rootA menos que lo fuerces con algo como
env EUID=123 makepkg ..., no corre como rootAun así, estaría bien que pacman admitiera instalaciones a nivel de usuario
Actualmente se niega a instalar si no eres root, aunque se puede rodear eso mapeándose a root con un espacio de nombres de usuario
Entiendo que esta vez fue en AUR
Independientemente de si es AUR o no, estaría bien que compartieran qué pasos siguen al instalar paquetes y cómo garantizan que el paquete y sus dependencias no sean malware
Después de instalar un paquete malicioso, de verdad parece muy difícil volver atrás