Mantenedores, esto es para vosotros. Nos hemos asociado con Drydock para que los mantenedores puedan ver exactamente qué hay dentro de un paquete antes de aprobarlo, detectando el malware antes de que se envíe en lugar de revelarlo después. Drydock le permite leer los bytes reales de una versión en staging antes de que se publique, de modo que las versiones defectuosas se detectan en la aprobación en lugar de en un análisis post-mortem. Para los mantenedores de npm y PyPI, Drydock está disponible sin coste.
Detener el malware antes de que se publique
El último año ha estado lleno de ataques de malware en paquetes de código abierto. Nos hemos acostumbrado a ver alertas y tuits con otro “¡ALERTA! ¡Gran ataque de malware!” Las mejoras en la detección y los reportes son importantes, pero para cuando tenemos que divulgar, ya es demasiado tarde. Los mantenedores de paquetes merecen más apoyo al principio de este proceso, para ayudarles a detectar y prevenir problemas antes de que estén en circulación y todo el mundo entre en pánico y haga control de daños.
El reciente anuncio de npm sobre la publicación en staging es un paso en esta dirección. La actualización introduce una cola de staging, donde todas las versiones de paquetes esperan a que un mantenedor con 2FA apruebe manualmente la publicación. Sin embargo, aunque esto introduce una oportunidad para revisar, el mantenedor no puede ver el contenido del paquete preparado. Pueden ver el número de versión, pero no los bytes dentro del paquete ni qué, si acaso, ha cambiado respecto al estado actual del repositorio.
Aikido se compromete a ayudar a los mantenedores a detener los ataques de malware antes de que ocurran. Por eso nos hemos asociado con Drydock para hacer que la publicación de paquetes sea más segura y la publicación en staging más útil. Si mantiene un paquete npm o PyPI, Drydock le ofrece una forma gratuita de ver lo que realmente contiene una versión antes de que se publique. Drydock analiza los paquetes npm en staging para mostrarle exactamente qué ha cambiado en los bytes antes de que apruebe, de modo que el mantenedor que aprueba pueda finalmente ver el contenido del paquete preparado.
Para PyPI, que no tiene publicación en staging, Drydock ejecuta la misma revisión dentro de tu pipeline de lanzamiento. El mismo camino cubre los paquetes npm que se publican sin staging. Próximamente también habrá soporte para registros adicionales.
Cómo funciona Drydock
Cuando aparece una nueva versión en staging, Drydock la detecta, descarga el tarball exacto en un sandbox de corta duración, lo compara con la última versión publicada y te muestra el informe en su panel de control. Ves cada cambio, con los relevantes para la seguridad marcados y clasificados por gravedad. Esas marcas detectan aquello en lo que se basa el malware, como un nuevo script de ciclo de vida de preinstalación o postinstalación, archivos que no estaban antes, código que inicia un proceso o se conecta a la red, o un binario añadido. Cada hallazgo se vincula a la línea que lo introdujo, de modo que la revisión se lee como una lista corta que puedes escanear en segundos en lugar de un muro de código fuente. Lees los hallazgos y luego apruebas el paso de publicación en npm con tu propio 2FA.
El flujo anterior asume una publicación npm en staging. Para PyPI, o para un paquete npm que se publica sin staging, Drydock se ejecuta como una puerta de entorno de GitHub Actions. La versión se pausa en tu pipeline antes de llegar al registro. Drydock revisa el artefacto construido y publica el mismo diff y los hallazgos clasificados por gravedad, y un mantenedor aprueba o rechaza en Drydock antes de que nada se haga público.
Drydock nunca se publica a sí mismo, por lo que no se añaden puntos de fallo al proceso de lanzamiento. Drydock utiliza un token npm de solo lectura, lo justo para ver las publicaciones en staging. Está limitado a leer solo listados de archivos y texto, por lo que nunca ejecuta el contenido del paquete. Y con el espíritu de mantener a los humanos en el bucle, una persona toma la decisión cada vez.
Rompiendo el ciclo del malware
Cuando npm y otros gestores de paquetes se lanzaron, la publicación instantánea era una característica para ecosistemas que podían crecer rápidamente porque confiaban en sus miembros. Pero hoy en día, los atacantes explotan la velocidad y facilidad de publicación para llevar a cabo ataques de malware.
La publicación en staging rompe ese patrón al retener la versión antes de que se publique. Drydock hace que esa retención sea significativa, mostrando al mantenedor exactamente qué ha cambiado mientras aún hay tiempo para decir que no. La detección ocurre antes de la primera descarga, en lugar de en un análisis post-mortem después de que el daño ya esté hecho.
Ese es el mundo que queremos para los mantenedores. Menos despertarse con revelaciones de malware, más encontrar el problema y detenerlo ellos mismos.
La configuración es sencilla y no tiene coste. Active la publicación en staging de npm para su paquete, conecte Drydock a su organización con un token de solo lectura, y comenzará a revisar las versiones en staging automáticamente. Para la configuración de GitHub Actions, solo necesita vincular la aplicación de GitHub y el entorno. Consulte Drydock y más información sobre cómo empezar en su sitio.

