El ataque a npm de 2025: la fragilidad de la cadena de suministro de software

 El 8 de septiembre de 2025, el ecosistema de JavaScript vivió uno de los mayores sustos de los últimos años. Un atacante comprometió 18 paquetes populares de npm, entre ellos debug, chalk y ansi-styles. Estos paquetes juntos suman más de 2 mil millones de descargas semanales, lo que significa que la superficie de ataque era gigantesca.

El episodio duró poco: apenas unas horas. Pero bastó para recordarnos lo frágil que es la cadena de suministro de software en la que descansa buena parte de la infraestructura digital.


¿Cómo ocurrió el ataque?

El vector fue sorprendentemente humano.
El mantenedor de varios de estos paquetes, conocido como Josh Junon (“qix”), recibió un correo que parecía legítimo, supuestamente de npm, pidiéndole reconfigurar la autenticación de dos factores (2FA). La trampa funcionó: al introducir sus credenciales, el atacante tomó control de su cuenta.

Con acceso a la cuenta, el atacante publicó versiones nuevas de los paquetes con código malicioso. Este malware buscaba interceptar transacciones de criptomonedas en navegadores y desviar fondos hacia billeteras controladas por el atacante.

El ataque fue detectado y contenido en un par de horas. npm retiró las versiones comprometidas y los investigadores confirmaron que el botín económico fue mínimo. Pero el hecho de que algo así fuera posible es, en sí mismo, alarmante.


¿Qué tan grave fue realmente?

La narrativa oficial dice que “el impacto fue limitado”. Pero hay que matizar:

  • Muchos proyectos no instalan directamente chalk o debug, pero sí lo hacen de forma transitiva a través de otras dependencias. Eso significa que incluso desarrolladores que nunca escucharon de esos paquetes podrían haber estado expuestos.

  • El código malicioso pudo haber quedado cacheado en builds, contenedores o despliegues ya hechos antes de que npm borrara las versiones.

  • El riesgo reputacional es enorme: si un solo mantenedor comprometido puede afectar a miles de aplicaciones, ¿qué nos dice eso del modelo actual de confianza en el open source?

El daño monetario fue bajo, pero la vulnerabilidad estructural quedó expuesta.


El talón de Aquiles del open source

Este caso vuelve a poner sobre la mesa varias verdades incómodas:

  1. La 2FA no es invulnerable. Si el atacante logra engañar al humano detrás de la cuenta, el mecanismo se vuelve inútil. La ingeniería social sigue siendo la mayor puerta de entrada.

  2. Dependencias en cascada = riesgo exponencial. Un paquete con miles de dependencias downstream se convierte en un eslabón débil crítico.

  3. Mantenimiento voluntario y precario. Muchos paquetes fundamentales del ecosistema son mantenidos por personas en su tiempo libre, sin incentivos ni respaldo formal para lidiar con problemas de seguridad de esta magnitud.


¿Qué podemos aprender?

Algunas lecciones prácticas para desarrolladores y equipos:


Mirando hacia adelante

El ataque de septiembre de 2025 probablemente pasará a la historia como un susto más que como una catástrofe. Pero es un recordatorio claro: la cadena de suministro de software es tan fuerte como su eslabón más débil.

Mientras sigamos construyendo sobre infraestructuras mantenidas por unos pocos voluntarios y confiando en mecanismos que pueden ser eludidos con un buen correo de phishing, estos episodios se repetirán.

La pregunta es: ¿vamos a aprender esta vez, o esperaremos al próximo ataque para volver a sorprendernos?

Estoy de vuelta (y también en el pasado)

Han pasado más de diez años desde que publiqué algo en este blog. En todo ese tiempo, muchas cosas cambiaron: nuevos sistemas operativos, lenguajes, hábitos digitales, y hasta formas de pensar.

Nunca dejé de experimentar con tecnología, pero sí dejé de escribir. Falta de tiempo, ideas o ganas, quizá un poco de todo. Hoy quiero cambiar eso.

Voy a retomar este blog, pero no solo para escribir sobre el presente. También quiero reconstruir mi camino digital publicando artículos que debí haber escrito en su momento.
Desde los primeros días con Arch, el cierre de Google Reader, el boom de los Raspberry Pi, hasta cómo empecé a usar scripts simples para automatizar tareas cotidianas o cómo sobreviví sin entorno gráfico durante semanas.

Será como llenar los huecos de una historia que siempre estuvo en borradores o en mi cabeza.

Así que si ves posts “nuevos” con fechas antiguas, no es error: es parte del plan.

Nos leemos pronto. En el futuro… y en el pasado.

Probando Windows 8 por primera vez: ¿revolución o confusión?


Como muchos, me animé a probar Windows 8 apenas estuvo disponible. Lo instalé en una partición junto a mi querido Ubuntu, con más curiosidad que expectativa.

La primera impresión: todo es cuadrado. Microsoft decidió apostar fuerte por la interfaz “Metro” (ahora llamada “Modern UI”) y eliminó algo tan básico como el botón de inicio. Sí, el mismísimo botón de inicio. En su lugar: mosaicos, gestos, y un arranque directo a una pantalla más parecida a un menú de tablet que a un escritorio.

Lo que me gustó:

  • El sistema arranca rápido.
  • Mejoras de rendimiento notables comparado con Windows 7.
  • Algunas apps nativas (como el visor de fotos) son muy fluidas.

Lo que no me convenció:

  • La falta de coherencia entre la interfaz nueva y la tradicional.
  • Tener que “adivinar” cómo cerrar una aplicación moderna (spoiler: arrastrarla hacia abajo).
  • Configuraciones duplicadas entre el “Panel de control clásico” y el “nuevo menú de configuración”.

¿Y comparado con Linux?

Mientras Windows 8 trata de reinventar la rueda, Ubuntu sigue su camino firme con Unity. Aunque también es una interfaz discutida, ya me he acostumbrado a su barra lateral, la búsqueda rápida con Dash, y su integración con el sistema.

Ubuntu me da flexibilidad, control y una comunidad que responde. No necesitaba gestos ni mosaicos para sentir que estoy en casa.

Conclusión:

Windows 8 tiene buenas ideas… mal presentadas. Demasiado táctil, demasiado cambio de golpe. Terminé usándolo un par de semanas por curiosidad, pero luego volví a iniciar Ubuntu casi siempre.

Instalando ESET NOD32 en Ubuntu

Hace unos días necesitaba escanear mi partición de Windows desde Linux (Windows me lanzada un pantallazo azul y no me dejaba entrar - BSOD), probé con varios antivirus, entre ellos el ClamAV, AVG, Avast! y ninguno con resultados aceptables, luego opté por el ESET NOD32, y aquí les dejo los pasos que seguí para instalarlo:

Pasos para instalar ESET NOD32 en Ubuntu:
  1. Descargar la versión para GNU/Linux desde la página oficial de Eset.
  2. Una vez obtenido el archivo: eset_nod32av_32bit_es_la.linux, tenemos que darle permisos de ejecución y luego doble clic al archivo para instalarlo:
  3. A veces al intentar instalar, el sistema nos avisa que nos falta el archivo: UTF-16.so para proceder con la instalación.
  4. Para obtener el archivo UTF-16.so lo pueden buscar en internet o descargar desde aquí (Mi cuenta de 4shared).
  5. El siguiente paso será copiar el archivo UTF-16.so al directorio /usr/lib/gconv/ (Siéntanse libres de crear la carpeta gconv si no existe). Necesitarán permisos de Adminitrador (root): Presionar Alt + F2 y escribir "gksu nautilus", les pedirá contraseña.
  6. Ubicar el directorio /usr/lib/gconv/ y pegar el archivo UTF-16.so
  7. Procedemos a instalar el nod32 (doble clic).
  8. Sólo resta seguir los pasos de instalación. 
Listo, ya tenemos el NOD32 instalado en Ubuntu, pueden probar una licencia gratuita de 30 días o adquirir una.

Eviten dejar comentarios como anónimos.

    Solución al error 0x0000007b en Windows XP


    Muchos de ustedes sabrán que soy un usuario de linux, sin embargo tengo mi partición de Windows XP, mi papá se pasa tardes en ella jugando al Call of Duty; aunque debo reconocer que yo también la uso para jugar.

    En fin, como sólo utilizo esa partición para jugar, no me di la molestia de instalar un antivirus (craso error) y hace unos días vino un amigo a pasar el rato. Jugamos Call of Duty en red y luego intentamos jugar al AOE2, pero no podíamos conectarnos, yo pensé que tal vez era un problema de compatibilidad de versiones y optamos por intercambiar parches vía pendrive; al final no era nada de eso, nunca jugamos AOE2 online.

    El tema de los juegos quedó ahí, luego salimos un rato a divertirnos con los demás... y aquí viene la parte que les interesa, más tarde me encontraba yo conversando con mi papá cuando me comenta: 
    - Luda, al entrar a windows me sale una pantalla azul que dice que puede que el sistema tenga virus y que reinicie la máquina.
    - Uhh.. ¡Claro! el pendrive, pero... ¿Pantalla azul? ¿BSOD? Nah.
    Terminamos de conversar de otras cosas y voy a mi PC a revisar lo que mi papá me comentó y...



    Entré desde linux, monté la partición en donde se encuentra instalado Windows y analizé dicho disco con ClamAV, Avast! y AVG. Sin resultados en ningún caso. Luego investigando un poco más encontré que nod32 tenía una versión para linux, la descargué, instalé y analizé la partición, fue todo un mundo instalarlo, ya haré un post sobre esto, en fin, ésta vez el antivirus detectó 7 amenazas entre gusanos y trojanos en mi partición de windows, obviamente el siguiente paso fue eliminarlas.

    Ya aliviado, reinicio la PC, selecciono la partición de Windows, y... ¡Nada! , aparece el mismo problema: El BSOD. ¿Soluciones?:
    Formatear: ¿Y las partidas guardadas del COD2 de mi papá? No le gustará comenzar el juego desde cero.
    Backup de las partidas del COD y luego formatear: Pero... ¿y todos los drivers?
    Debe haber otra solución, y sí, acá se las detallo paso a paso:

    Solución al arranque de Windows XP:

    Ingredientes:
    - 1 Cd de Windows XP a mano.
    - Paciencia

    Preparación:
    1. Insertar el disco de Windows e iniciar desde ahí.
    2. Esperar a que se carguen todos los controladores hasta que nos muestra otra pantalla con un menú.
    3. Seleccionar la opción que nos indica reparar una instalación de Windows. (Pulsa la tecla 'R').
    4. Una pantalla negra nos muestra en una lista las instalaciones de Windows existentes, en mi caso es: 1.- C:\WINDOWS (Pulsa la tecla 1 y luego 'Enter').
    5. Nos pide la contraseña del administrador (Si no tienes password, deja en blanco y pulsa 'Enter').
    6. Entramos a C:\WINDOWS\ 
    7. Ingresamos los siguientes comandos:

      C:\WINDOWS\> chkdsk /r/p
      C:\WINDOWS\> chkdsk fixmbr (Pulsa 'S' para confirmar)
      C:\WINDOWS\> chkdsk fixboot (Pulsa 'S' para confirmar)
    8. Escribimos "exit" y problema resuelto.
    Reiniciamos la PC y... ¡Ya funciona nuestro Windows!

    No, espera ¿Y mi GRUB? Ya no puedo entrar a Linux, bueno, sólo es reparar el GRUB, por lo menos ya puedo jugar al Call of Duty de nuevo.

    Probando KDE Blogilo en Ubuntu


    Actualmente Blogilo ya no se mantiene.

    Desde hace meses buscaba un cliente editor de blogs para linux y no encontraba uno decente, aunque ya me había topado con éste cliente anteriormente, lo descartaba por ser KDE. Mi ignorancia no me permitía entender que se acoplaba a la perfección con Gnome.

    Blogilo es un cliente de escritorio libre (Open Source) que soporta la conexión a diversas plataformas de blog, entre las más comunes se encuentran Blogger y WordPress, se basa mucho en la simplicidad y facilidad de uso, así que no haré un tutorial sobre como usarlo, solo lo estoy recomendando.

    La verdad es que ahora se me hará más fácil la edición de entradas ya que no tendré que pelear con la pereza tremenda que me da iniciar sesión en blogger para redactar, ya no usaré más excusas de hecho si me hubiera animado a usar el Blogilo antes habría redactado más entradas en los últimos días. Sabemos que es mentira, siempre tendré la flojera para redactar seguido en el blog, lo siento.

    Bueno, si algunos se animan a instalarlo en Uuntu pueden hacer como yo, pero es muy complicado, de todas maneras intentaré dejarles los pasos como guía.

    Pasos para instalar Blogilo en Ubuntu

    Necesitamos abrir una terminal y colocar el siguiente comando:

    $ sudo apt-get install blogilo

    Para los mismos usuarios de ubuntu es muy probable que tengan un error al conectarse a la base de datos:

    Cannot connect to database

    La solución vuelve a ser muy muy complicada como todas las cosas en Linux y tenemos que nuevamente abrir la terminal para digitar (o copiar):

    $ sudo apt-get install libqt4-sql-sqlite

    Con eso instalamos la ligera base de datos que el Blogilo necesita.

    Les dejo la web oficial de Blogilo donde podrán encontrar screenshots para conocer la interfaz e información sobre este cliente y todas sus bondades.

    Configurando Wireless en una Packard Bell A6011 con Ubuntu 10.04

    Hace ya varios meses le insistí a Jano instalarle Ubuntu en una laptop que él no usaba con frecuencia, el accedió e hicimos un backup a los archivos que no quería perder. Luego de la instalación me di con la sorpresa que no funciona la tarjeta inalámbrica. (Problemas de drivers, pensé).

    En esa época la versión estable de Ubuntu era 9.10 y como no estábamos apurados decidí esperar a que salga la 10.04 (Lucid Lynx) por ahí que le daba tiempo a que se solucione el problema de drivers y ese venga integrado con el sistema operativo, fracaso de nuevo.

    Ahora por motivos personales me dijo que necesitaría la laptop con internet inalámbrico, me dejó traerla a mi casa para ver que se podía hacer y acá es como les relato como se solucionó el problema.