Todos los artículos

Una semana, cuatro ecosistemas: incidentes PHP, Node y Python, octubre 2026

Seguridad · 4 min de lectura ·

Entre el 14 y el 22 de octubre de 2026, PHP y Node.js publicaron el mismo día versiones de seguridad para fallos de ejecución remota de código, se revocaron las claves intermedias de una autoridad de certificación, una plataforma de hosting reveló un acceso a las variables de entorno de sus clientes y se informó de que dos paquetes, uno en npm y otro en PyPI, llevaban ladrones de credenciales. Cada historia tiene su propio artículo en este blog. Este las pone en una sola línea, porque leídas juntas apuntan a una lista corta de hábitos que cubre la mayor parte.

La semana, en orden

Una semana antes, el 8 de octubre, el tracker pwn.watch informa de que tensorlake 0.5.144 se publicó en npm desde su repositorio real, con provenance, y con un gusano que roba credenciales (provenance no es seguridad). El 14 de octubre, según el mismo tracker, Vercel sacó fuera de calendario Next.js 16.4.1 y 15.5.28 por dos RCE críticas sin autenticación; el aviso de GitHub sobre la del SVG le da un CVSS de 9.5 (el artículo de Next.js). El 18 y el 19 de octubre, según el tracker, se descubrió que unas claves de CA intermedias de eMudhra eran débiles y se revocaron; eMudhra dice que revocó las CA afectadas en las 14 horas siguientes al descubrimiento (almacenes de confianza).

El 20 de octubre php.net publicó una entrada titulada "Upcoming Critical PHP Security Release"; el tracker dice que los detalles se habían filtrado antes. El 21 de octubre, PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35 corrigieron dos RCE críticas sin autenticación (actualiza PHP ya), y Node.js 26.12.1, 24.22.1 y 22.23.4 corrigieron diez vulnerabilidades, entre ellas una RCE en el decodificador Brotli (la versión de Node, y dos arreglos menores de Node). Ese mismo día Railway reveló que un tercero pudo obtener variables de entorno de clientes ya descifradas (rotar secretos), y el tracker informa de una versión comprometida de LiteLLM 1.107.0 en PyPI y Docker (un paquete, cada una de tus claves). El 22 de octubre eMudhra anunció que deja el negocio de los certificados TLS, y la encuesta de W3Techs mostraba que el 34.7% de los sitios PHP que detecta sigue en PHP 7 o anterior (fin de vida de PHP).

8 oct npm 14 oct Next.js 19 oct CA 20 oct aviso 21 oct PHP, Node, Railway, LiteLLM 22 oct W3Techs un solo día cargó con casi toda la semana
Fechas tal como las da cada fuente. Solo el 21 de octubre trajo dos versiones de runtime y dos incidentes de credenciales.

Cuatro patrones

Son patrones que leo a través de las fuentes, no causas que nadie haya confirmado.

El arreglo es un número de versión. PHP y Node.js respondieron con versiones parcheadas, y ambos dicen que las ramas sin soporte quedan fuera: php.net indica que la 8.1 y anteriores ya no reciben actualizaciones del proyecto, y Node.js dice que las versiones al final de su vida siempre están afectadas cuando sale una versión de seguridad. Si no sabes qué versión corre en producción, no puedes saber si estás corregido.

La confianza va por capas, y se distribuye. Una lista de CA que viene con el runtime (Node.js actualizó su ca-cert por eMudhra), un paquete construido con provenance, el almacén de secretos de una plataforma, un pipeline de releases. Cada capa es algo en lo que confías sin mirar, y por eso mismo un compromiso en una puede pasar en silencio a la siguiente.

Pipeline genera versión Paquete npm, PyPI Runtime y almacén CA Plataforma almacén env Tus secretos cada capa confía en la anterior un compromiso aguas arriba llega con aspecto legítimo
La confianza pasa a lo largo de la cadena. Al final suelen estar tus credenciales.

Las credenciales son el botín. Tres de los incidentes, el gusano de npm, la versión de LiteLLM y el aviso de Railway, van de recolectar secretos y no de romper el código de la propia app. Railway dice creer que su incidente forma parte de una serie dirigida a llegar a proveedores de inferencia de IA.

Los hábitos aburridos resuelven casi cada caso. Esa es la buena noticia, y es la última sección.

Conoce tus versiones, actualiza con calendario, mantén un inventario de secretos que puedas rotar en una hora e instala paquetes sin scripts o con retraso.

La checklist de esta semana

Empieza por las versiones, en cada sitio donde se esconden: el servidor web, la CLI, la imagen base de Docker y la CI. En la línea de comandos:

php -v
node -v
composer audit
npm ls next sharp

Recuerda que php -v muestra la CLI, que puede no coincidir con lo que atiende las peticiones web. Después: actualiza PHP a 8.5.12, 8.4.27, 8.3.36 o 8.2.35 y Node.js a 26.12.1, 24.22.1 o 22.23.4; planifica la salida de cualquier rama que ya no reciba arreglos; escribe la lista de secretos que guarda tu app y cómo rotar cada uno; y mantén los secretos de producción fuera de las máquinas de desarrollo, que es donde el malware de instalación los busca. Si hoy solo haces una cosa, averigua qué versiones de PHP y Node.js corren de verdad en tu producción.

Artículos anteriores que profundizan en estos hábitos: los primeros diez minutos tras filtrarse una clave, el malware en la instalación, los lockfiles de workflows y aislar a un agente de código.

Fuente: archivo de noticias de php.net, 2026; cada artículo enlazado cita su propia fuente primaria.

Notas de los lectores

  1. Todavía no hay notas. La primera siempre es la más valiente.
¿Estás construyendo algo parecido? Puedo ayudarte. Escríbeme por WhatsApp