Skill de seguridad para Claude Code: audita gratis tu web hecha con IA
Si has montado tu web con IA, lo más probable es que no sepas qué versión de PHP, de Node.js o de Next.js lleva. Y este mes eso importa: en una semana han salido parches urgentes para los tres.
Por eso he hecho NotFound Security Audit, una skill de seguridad para Claude Code (también funciona en Codex) que revisa tu proyecto, te dice qué está mal, dónde y cómo arreglarlo. Es gratis y el código está en GitHub.
Si vienes del vídeo: la instalación está en el apartado «Cómo instalarla».
Qué ha pasado este mes
Tres avisos de seguridad en dos semanas, y los tres afectan a webs normales, no solo a grandes empresas:
- PHP (21 de octubre): dos fallos críticos, conocidos como PHP2Shell (CVE-2026-109618 y CVE-2026-109619, CVSS 9.2). La PHP Foundation adelantó el parche después de una filtración. En servidores con Apache y mod_php, una petición preparada podía acabar ejecutando código del atacante sin usuario ni contraseña; con PHP-FPM también se confirmó a través del código de la aplicación.
- Node.js (21 de octubre): 10 vulnerabilidades corregidas, 4 de gravedad alta. La más seria afecta al descompresor Brotli si tu aplicación descomprime datos que no controla.
- Next.js (14 de octubre): dos fallos críticos de ejecución remota de código y uno de denegación de servicio en las Server Actions.
Cloudflare ha detectado tráfico de ataque contra sus clientes por los fallos de PHP y ha puesto reglas en su firewall. Pero lo dice claro: actualizar el código de tu web o un plugin no lo arregla. Hay que actualizar PHP.
Las versiones que corrigen cada fallo
| Tecnología | Versiones corregidas |
|---|---|
| PHP | 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 |
| Node.js | 26.12.1 · 24.22.1 · 22.23.4 |
| Next.js | 16.4.1 · 15.5.28 |
Si usas una versión anterior de esas ramas, actualiza. Si usas PHP 8.1 o anterior, o Node.js 20 o anterior, ya no reciben parches: toca cambiar de versión.
Qué es NotFound Security Audit
Una skill es un paquete de instrucciones y scripts que tu agente (Claude Code, Codex) carga cuando hace falta. Si no te suena, te lo cuento en cómo configuro Claude Code y las skills que uso.
Esta en concreto hace dos cosas:
- Un escáner que lee tu proyecto sin modificarlo y busca problemas conocidos.
- Un método para que la IA revise cada hallazgo como lo haría una persona: sigue el dato desde donde entra hasta donde se usa e intenta descartar el fallo antes de dártelo por bueno.
Qué revisa
- Tu tecnología: detecta el lenguaje, el framework (Next.js, React, Laravel, WordPress, Django, Express…) y dónde despliegas (Docker, Vercel, Supabase, Firebase).
- Dependencias y versiones: lee los archivos de bloqueo (
package-lock.json,composer.lock,requirements.txt…) y las versiones de PHP, Node.js y Python de tu Dockerfile o.nvmrc. Las compara con los avisos de este mes y, si le das permiso, con la base de datos pública OSV.dev. - Claves expuestas: de AWS, OpenAI, Anthropic, Stripe, Supabase, GitHub y más. En el informe salen tapadas, solo con los primeros caracteres.
- Código peligroso: inyección SQL, XSS, SSRF, ejecución de comandos y otros patrones típicos.
- Configuración: cabeceras de seguridad, CORS, cookies de sesión, modos debug encendidos en producción, tablas de Supabase sin RLS, reglas de Firebase abiertas.
- Docker y GitHub Actions: contenedores como root, secretos dentro de la imagen, puertos de base de datos abiertos, flujos que se pueden manipular desde una issue.
Si los conceptos de claves expuestas, inyección SQL o RLS te pillan de nuevas, empieza por los 3 fallos de seguridad que dejan tu web abierta.
Cómo te da los resultados
Cada hallazgo va en uno de tres grupos, para que sepas cuánto fiarte:
- Confirmado: hay una prueba clara, como una versión vulnerable fijada en tu proyecto o una regla que deja escribir a cualquiera.
- Por revisar: un patrón de riesgo. Puede ser un fallo o no; la IA lo comprueba antes de decírtelo.
- Preventivo: mejoras que no son un fallo por sí solas.
Con cada uno tienes el archivo y la línea, la prueba, por qué importa y los pasos para arreglarlo. Un hallazgo confirmado significa que tu versión está afectada, no que te hayan atacado.
Lo que no hace (a propósito)
- No toca nada sin tu permiso. Solo lee. Si propone un cambio, te lo enseña y espera a que digas que sí.
- No ataca nada. No lanza exploits ni escanea webs de otros. Lo único que sale a internet es opcional: la consulta a OSV.dev (solo nombres y versiones de paquetes, nunca tu código) y la revisión de cabeceras de tu web con una sola petición.
- No te promete que tu web sea segura. Encuentra problemas conocidos. La lógica de tu negocio, quién puede ver qué datos y tu servidor hay que revisarlos aparte.
- No arregla un PHP o un Node.js vulnerable. Eso solo se arregla actualizando el entorno, o pidiéndoselo a tu hosting.
Cómo instalarla
Necesitas Python 3.9 o superior; nada más.
git clone https://github.com/notfound404es/notfound-security-audit
En Claude Code, copia la carpeta de la skill a tus skills personales:
cp -r notfound-security-audit/skills/notfound-security-audit ~/.claude/skills/
En Codex, a la suya:
cp -r notfound-security-audit/skills/notfound-security-audit ~/.agents/skills/
Abre tu proyecto y pídeselo con tus palabras:
Haz una auditoría de seguridad de este proyecto con la skill notfound-security-audit.
También puedes llamarla directamente con /notfound-security-audit en Claude Code o $notfound-security-audit en Codex.
Cómo es un informe
Este es el resumen real que saca sobre el proyecto de prueba del repositorio, una web hecha a propósito con fallos:
NotFound Security Audit 0.1.0 · demo-vulnerable-app
stack: Express, Next.js, React | js, py, php
findings: 18 (confirmed 4, needs review 10, preventive 4)
- [critical/confirmed] PHP core remote code execution (PHP2Shell) (Dockerfile:1)
- [critical/confirmed] Firebase rules allow public access (firestore.rules:4)
- [critical/confirmed] next 16.3.0: Next.js unauthenticated RCE (…) (package-lock.json)
- [high/suspected] Shell command built from a template or concatenation (app/api/run/route.ts:4)
Después, la IA abre cada archivo, comprueba si el fallo es real y te lo explica en español, ordenado de más a menos urgente. Los informes completos de ejemplo están en la carpeta examples del repositorio.
Qué hacer si te sale algo
- Primero lo confirmado y crítico. Versiones vulnerables: actualiza y vuelve a desplegar. En Docker, reconstruye la imagen con
--pull. - Si sale una clave expuesta, cámbiala antes de nada en el panel del servicio (Stripe, OpenAI, Supabase…). Borrarla del código no basta si ya se subió a GitHub.
- Si tu hosting es compartido, no controlas la versión de PHP: mira cuál tienes en el panel o pregunta a soporte si ya han aplicado el parche.
- Lo de «por revisar», con calma. Deja que la IA lo compruebe y que te proponga el arreglo; tú decides si se aplica.
Y si tu web la tienes en Vercel y Supabase como te enseñé en despliega tu web gratis, lanza la skill antes de cada cambio grande.
Preguntas frecuentes
¿Es gratis?
Sí. El código es abierto, con licencia MIT, y no usa servicios de pago.
¿Sube mi código a algún sitio?
No. El escáner funciona en tu ordenador. La consulta a OSV.dev es opcional y solo envía nombres y versiones de paquetes.
¿Sirve si mi web es un WordPress?
Sí. Detecta WordPress y PHP y revisa la configuración y el código del tema y los plugins que tengas en el proyecto. Si está en un hosting compartido, la versión de PHP la tienes que mirar en el panel.
¿Sustituye a una auditoría profesional?
No. Te quita de en medio los fallos conocidos y te dice dónde mirar. Una web que maneja pagos o datos sensibles merece además una revisión hecha por una persona.
Si prefieres que te la revise yo, pídeme presupuesto.