Revisión de seguridad en Claude Code: /security-review y GitHub Action
MarkdownCómo comprobar la seguridad de un proyecto vibe con /security-review en Claude Code. Pasos de configuración, una plantilla de GitHub Action, 6 tipos de vulnerabilidades y limitaciones explicadas con honestidad.
Leer el artículo completo
El autor del material original describe su experiencia: «Acabo de ejecutar security-review en mi propio proyecto vibe, y el equipo encontró varios problemas reales en 4 minutos que ya se han corregido». Antes, este mismo trabajo le llevaba un día a un consultor externo.
Encontrarás materiales adicionales sobre la configuración de herramientas en la documentación de Ailoot.
¿Qué es /security-review en Claude Code?
Puntos destacados de la sección
/security-review es un comando integrado de Claude Code que analiza la seguridad de todo el proyecto o de los cambios actuales directamente desde el terminal. Anthropic lo lanzó el 20 de febrero de 2026 como parte de Claude Code Security y lo puso a disposición de todos los usuarios de Pro, Max y API Console. La solicitud se paga con tu saldo habitual de la API de Claude.
El comando funciona en dos modos. En local: ejecuta /security-review en el terminal y Claude leerá el repositorio y generará un informe. En el servidor: el mismo motor se instala como una GitHub Action y comenta automáticamente en línea en cada Pull Request.
A diferencia de los escáneres SAST clásicos (Snyk Code, Semgrep, SonarQube), /security-review no se basa en reglas fijas. Lee el código como lo haría un ingeniero en activo: rastrea el flujo de datos, entiende qué framework usas y dónde están los límites de confianza, y detecta vulnerabilidades que ninguna regla describe.
Claude Code Security lee y analiza tu código como lo haría un investigador de seguridad humano: entiende cómo interactúan los componentes, sigue el recorrido de los datos por la aplicación y detecta vulnerabilidades complejas que las herramientas basadas en reglas no encuentran.
Esto no significa que /security-review sustituya a una prueba de penetración externa o a las pruebas en vivo en un entorno de staging. Puede automatizar parte de la revisión inicial, pero este artículo no mide una fracción de cobertura de auditoría. A continuación, explicaré cómo ejecutarlo correctamente y qué encontrará Claude en tu proyecto.
¿Cómo ejecutar /security-review en 5 pasos?
Puntos destacados de la sección
Actualiza Claude Code a la última versión, abre el proyecto en un terminal, ejecuta /security-review, espera el informe (de 1 a 5 minutos para un proyecto promedio), lee los niveles de gravedad y pide a Claude que aplique las correcciones. El comando funciona con cualquier stack: Next.js, Django, FastAPI, Rails, Go, Rust. No requiere ninguna configuración especial.
Paso 1. Actualiza Claude Code. El comando está disponible a partir de la versión publicada el 20 de febrero de 2026.
claude update
Si instalaste Claude Code mediante npm, también puedes hacer lo siguiente:
npm install -g @anthropic-ai/claude-code@latest
Comprueba que /security-review esté disponible:
claude /help | grep security
Paso 2. Abre el proyecto e inicia sesión en Claude Code.
cd ~/projects/my-vibe-project
claude
Paso 3. Ejecuta el comando. Dentro de Claude Code, escribe simplemente:
/security-review
Claude recorre automáticamente 3 fases de análisis:
- Investigación del contexto del repositorio - lee la estructura e identifica el stack, las rutas y las consultas a la base de datos.
- Análisis comparativo - compara el estado actual con patrones habituales de vulnerabilidad para ese stack.
- Evaluación de vulnerabilidades - enumera cada sospecha con un nivel de confianza en una escala de 1-10. El informe solo incluye hallazgos con un nivel de confianza ≥ 8.
Paso 4. Lee el informe. El resultado tiene formato de tabla Markdown. Para cada problema, Claude proporciona:
- Archivo y número de línea (por ejemplo,
src/auth/login.ts:42) - Gravedad (HIGH / MEDIUM / LOW)
- Categoría (
sql_injection,xss,auth_bypass,insecure_storage) - Descripción - cuál es el problema
- Escenario de explotación - cómo podría aprovecharlo un atacante
- Recomendación - cómo solucionarlo
Paso 5. Pídele que aplique las correcciones. Después, puedes trabajar con Claude como con un agente normal:
«Aplica las correcciones de gravedad HIGH del informe, una a una, con una descripción de PR.»
Claude abrirá cada archivo y propondrá un cambio; tú lo confirmarás. En un proyecto real, cerré 5 hallazgos en 40 minutos, en lugar de las 3 horas previstas.
¿Qué vulnerabilidades detecta /security-review?
Puntos destacados de la sección
Claude detecta 6 clases: inyección SQL e inyecciones en general, XSS, problemas de autenticación y autorización, filtraciones de datos sensibles, vulnerabilidades en dependencias de terceros y secretos codificados directamente en el código. El comando también puede analizar lógica de autenticación repartida entre varios archivos, algo que los escáneres basados en reglas no pueden hacer.
La documentación oficial de Anthropic describe la lista completa de lo que se incluye por defecto en el análisis:
| Categoría | Qué busca |
|---|---|
| Inyección SQL | Concatenación directa de cadenas en SQL, llamadas inseguras al ORM (raw() sin parámetros), Prisma $queryRawUnsafe |
| XSS | Renderizado con dangerouslySetInnerHTML sin saneamiento, sistemas de plantillas sin escape automático, innerHTML procedente de datos introducidos por el usuario |
| Fallos de autenticación | Tokens reutilizables, falta de comprobaciones de permisos en rutas de API, JWT sin fecha de expiración, fijación de sesión |
| Tratamiento inseguro de datos | Validación solo en el cliente, respuestas con campos adicionales (sobrecarga de datos), redirección abierta |
| Vulnerabilidades en dependencias | Versiones vulnerables de paquetes npm/pip/cargo, comprobadas mediante npm audit y herramientas equivalentes |
| Secretos | Claves de API codificadas directamente, tokens en .env.example, contraseñas en el código |
Además, el comando cubre categorías que los escáneres automatizados rara vez detectan:
- Inyección de comandos - ejecución de datos introducidos por el usuario en un shell (
child_process.exec(userInput)) - Path traversal - carga de un archivo mediante
../../etc/passwd - XXE - XML con entidades externas
- Inyección de plantillas - SSTI en Jinja/Handlebars/EJS
- Inyección NoSQL - operadores
$ne,$gten consultas a MongoDB - Uso incorrecto de criptografía - uso de MD5, modo ECB o un IV estático
Claude asigna un nivel de gravedad a cada hallazgo. La escala es sencilla:
- HIGH - explotación remota sin autenticación, filtración de datos que afecta a todos los usuarios
- MEDIUM - explotación con condiciones adicionales (se necesita una sesión / una entrada específica)
- LOW - un vector potencial, no crítico por ahora, pero conviene solucionarlo
Es útil saber que, en la configuración estándar, Claude no informa sobre DoS, límites de frecuencia, agotamiento de memoria, redirecciones abiertas sin impacto demostrado, inyección mediante expresiones regulares / ReDoS ni falsificación de registros. Es intencionado, para que no te inunde con ruido. Si estas clases son importantes, amplía las reglas (consulta la sección sobre el filtrado de falsos positivos más abajo).
¿Cómo configurar una GitHub Action para la revisión automática?
Puntos destacados de la sección
Anthropic publicó la acción oficial anthropics/claude-code-security-review@main. Se integra con un solo archivo de workflow y comenta automáticamente en línea en cada Pull Request las vulnerabilidades que encuentra. Configura CLAUDE_API_KEY y los permisos del workflow. La Action oficial avisa de que no está reforzada frente a inyección de prompts y debe revisar PR de confianza; revisa el acceso de colaboradores y workflows antes de activarla.
Paso 1. Obtén una clave de API. Ve a console.anthropic.com, crea una clave de API y cópiala.
Paso 2. Añade la clave a los secretos del repositorio. En GitHub: Settings → Secrets and variables → Actions → New repository secret. Ponle el nombre CLAUDE_API_KEY; el valor es tu clave.
Paso 3. Crea un archivo de workflow. Guárdalo como .github/workflows/security.yml:
name: Security Review
permissions:
pull-requests: write
contents: read
on:
pull_request:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 2
- uses: anthropics/claude-code-security-review@main
with:
comment-pr: true
claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
Paso 4. Fusiona la rama en main. La acción se iniciará automáticamente con la siguiente PR.
Qué hace la acción:
- Se ejecuta al abrir o sincronizar cada Pull Request.
- Obtiene el diff entre la rama de la PR y main.
- Ejecuta el mismo motor que
/security-reviewen local. - Publica comentarios en línea directamente en las líneas de código donde hay alguna sospecha.
- Duplica el informe completo en el resumen del Job.
Detalles importantes de permissions:
pull-requests: write- para publicar comentarios en línea.contents: read- para leer el código. Sinwrite. La acción no modifica el código; solo informa.
Este conjunto de permisos basta para un repositorio privado. En uno público, puedes especificar además actions: read si usas workflows reutilizables.
¿Cómo filtrar falsos positivos y cambiar la sensibilidad?
Puntos destacados de la sección
La acción tiene 9 entradas que puedes usar para configurar su comportamiento para tu proyecto. Las principales son: exclude-directories (por ejemplo, tests/,fixtures/), false-positive-filtering-instructions (ruta a un archivo md con reglas que expliquen «esto no es una vulnerabilidad porque…») y custom-security-scan-instructions para comprobaciones adicionales específicas de tu dominio.
Tabla completa de entradas de la GitHub Action (fuente: README del repositorio):
| Entrada | Valor predeterminado | Qué hace |
|---|---|---|
claude-api-key | - | Clave de API de Anthropic. Obligatoria. |
comment-pr | true | Indica si se publican comentarios en línea en la PR |
upload-results | true | Indica si se guarda el resultado como artefacto durante 90 días |
exclude-directories | - | Lista separada por comas: tests/,docs/,fixtures/ |
claude-model | claude-opus-4-1-20250805 | Modelo que se va a usar |
claudecode-timeout | 20 | Tiempo de espera en minutos |
run-every-commit | false | Ejecutar en cada push, no solo en las PRs |
false-positive-filtering-instructions | - | Ruta a un archivo md con tus reglas |
custom-security-scan-instructions | - | Ruta a un archivo md con comprobaciones adicionales |
Ejemplo de configuración del filtrado de falsos positivos. Crea el archivo .claude/security/false-positives.md:
# Reglas de filtrado de falsos positivos para nuestro proyecto
- Cualquier `dangerouslySetInnerHTML` dentro de `src/lib/email/layout.ts` es seguro:
el HTML se ensambla a partir de plantillas confiables y pasa por `sanitize-html`
cuando se escribe en la base de datos, no en el momento de renderizarlo.
- No informes de claves API de prueba codificadas directamente en `__tests__/fixtures/*.ts`.
Todas las claves empiezan por `sk-test-fake-`.
- La concatenación SQL en `src/lib/admin/migrations.ts` es aceptable: el archivo se ejecuta
solo como root, y los datos de entrada proceden de variables de entorno.
Conéctalo en el workflow:
- uses: anthropics/claude-code-security-review@main
with:
comment-pr: true
claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
false-positive-filtering-instructions: .claude/security/false-positives.md
Las instrucciones personalizadas para el análisis de seguridad son similares. Crea un archivo con reglas que sean especialmente importantes para tu proyecto:
# Comprobaciones adicionales para nuestro proyecto
- Cada endpoint bajo `/api/admin/*` debe comprobar el rol de administrador
mediante un wrapper compartido. Sin este wrapper, la gravedad es HIGH.
- Todos los webhooks de YooKassa / CloudPayments deben verificar la firma antes
de analizar el cuerpo. Sin esto, la gravedad es HIGH.
- Los tokens de Magic Link deben ser de un solo uso (marcados como utilizados después
de la primera solicitud válida). Los tokens reutilizables tienen gravedad MEDIUM.
Esto ya no es una configuración predefinida de Anthropic: estás incorporando tus conocimientos del proyecto en reglas que Claude aplica cada vez. Esa es la esencia de «la metodología por encima del modelo».
Para más información sobre la metodología de contexto para Claude, consulta las guías «Cómo configurar CLAUDE.md» y «Second Brain en Claude Code».
Qué NO detecta Claude y por qué: límites explicados con honestidad
Puntos destacados de la sección
Revisar código no ejecuta por sí solo la aplicación ni verifica el despliegue. Puede señalar posibles carreras, fallos de negocio o configuración presentes en el código, pero hacen falta pruebas en staging e inspección real para confirmar comportamiento y riesgos restantes.
Anthropic indica claramente qué está desactivado por defecto y por qué (fuente: README del repositorio):
- Denegación de servicio - demasiado ruido y casi siempre con poco impacto.
- Problemas de límites de frecuencia - se gestionan en la infraestructura, no en el código.
- Agotamiento de memoria / CPU - lo mismo.
- Validación genérica de entradas sin impacto demostrado - validar cada campo genera una avalancha de falsos positivos.
- Redirección abierta - a menudo es un comportamiento intencionado.
Lo que una revisión de código por sí sola no verifica completamente sin pruebas de ejecución o despliegue:
- Configuración del servidor de producción. Encabezados de NGINX, políticas CORS, ajustes de TLS y puertos a la escucha. Hay que comprobarlos manualmente en un entorno de staging.
- Condiciones de carrera. Por ejemplo, gastar dos veces durante solicitudes de reembolso simultáneas. El análisis estático puede señalar patrones sospechosos, pero hay que probar el comportamiento concurrente.
- Fallos en la lógica de negocio de pagos. Si el total del pedido se calcula en el cliente y simplemente se envía al proveedor de pagos, es un problema de gravedad HIGH. Sin embargo, Claude no siempre detecta este patrón si no tiene contexto explícito sobre cómo debería funcionar el pago.
- IDOR a nivel de base de datos. Si la consulta
SELECT * FROM orders WHERE id = $1no compruebaWHERE user_id = $session.userId, Claude suele detectarlo. Pero si la comprobación está implementada mediante middleware del ORM y Claude no puede ver el flujo de datos completo, puede pasarla por alto. - Resistencia a la ingeniería social / al phishing. No tiene nada que ver con el código.
Usa /security-review como revisión estática inicial. Complétala con pruebas dinámicas en staging, roles y permisos, comprobaciones SAST pertinentes y configuración desplegada real. Aquí no se acredita un porcentaje medido de cobertura.
Decide alcance y momento de una evaluación externa según riesgos y cambios del sistema. Ni un comando ni una auditoría externa periódica acreditan seguridad del 100 %.
Cómo realizó el autor del material original una revisión de seguridad en un proyecto vibe
Puntos destacados de la sección
Ejecuté /security-review en mi propio proyecto TypeScript con Next.js, Prisma, PostgreSQL y Redis. En 4 minutos, el comando realizó una auditoría inicial y devolvió varios hallazgos bien fundamentados de distintas gravedades. Finalmente, completé las correcciones funcionales en una hora y media. Fue más barato y rápido que cualquier prueba de penetración externa.
Qué apareció. Una imagen habitual de un proyecto vibe promedio en la etapa «funciona en producción, pero aún no se ha revisado»: varias sospechas sobre el flujo de autenticación, la lógica de procesamiento de webhooks de la integración de pagos, el manejo de cargas de archivos y un par de observaciones concretas sobre el tratamiento del HTML al renderizarlo. No voy a describir los detalles públicamente; algunas recomendaciones ya se han aplicado y otras siguen en PR. En el proyecto relatado, el análisis inicial fue útil y rápido; no acredita un porcentaje de auditoría ni un tiempo general de finalización.
Lo que descarté como falsos positivos:
- Hallazgos sobre DoS mediante expresiones regulares en la validación de entradas: la carga real no recae sobre esas expresiones.
- Un hallazgo sobre una clave de API codificada directamente: era una clave de prueba con el prefijo explícito
fake-en los fixtures.
Cuánto tardó. La ejecución en sí duró 4 minutos. Revisar el informe llevó 25 minutos. Aplicar las correcciones y hacer pruebas llevó alrededor de una hora. En total: aproximadamente una hora y media desde «empezar» hasta «todo está en main». Una prueba de penetración externa del mismo alcance lleva una semana natural y cuesta varias decenas de veces más.
Conclusión principal. /security-review no sustituye a una prueba de penetración externa. Puede detectar hallazgos útiles de código, como en el análisis de cuatro minutos relatado por el autor. Revisa y prueba las correcciones y comprueba aparte ejecución y despliegue; el análisis no elimina el riesgo del proyecto.
¿Cómo integrar /security-review en tu rutina de pre-commit?
Puntos destacados de la sección
Antes de confirmar cambios importantes, ejecuta /security-review en la sesión del proyecto, lee sus hallazgos, corrige los confirmados y repite las pruebas pertinentes. Es un procedimiento de revisión, no una prohibición técnica de hacer commits.
El hook anterior con git_commit, --severity HIGH y --fail-on-find no es una receta documentada y funcional y no debe usarse como barrera de seguridad. Este artículo no aporta un hook local verificado de bloqueo. La GitHub Action oficial anterior automatiza hallazgos de PR; comentar en una PR no demuestra que bloquee commits o merges.
Encontrarás una explicación completa de los hooks en la guía «Hooks en Claude Code».
Como alternativa, puedes usar rutinas para crear una rutina pre-deploy-check que ejecute /security-review + npm run build + npm run test con un solo comando. Encontrarás materiales adicionales en la documentación de Ailoot.
Si usas servidores MCP, puedes integrar los hallazgos de /security-review en un sistema de gestión de incidentes (Sentry, Linear, Notion) para que cada hallazgo de gravedad HIGH se convierta automáticamente en un ticket.
Preguntas frecuentes sobre /security-review
Puntos destacados de la sección
5 preguntas habituales: cuánto cuesta, con qué frecuencia ejecutarlo, con qué stacks funciona, qué hacer si Claude ya encontró esta vulnerabilidad y si se puede limitar a archivos concretos. Respuestas breves y al grano.
¿Cuánto cuesta una ejecución? Depende del tamaño del proyecto. En mis 30K líneas, una ejecución consume alrededor de $0.30-0.50 del saldo de API. Un gran repositorio empresarial con un millón de líneas cuesta hasta $5-8 por ejecución. Es varias decenas de veces más barato que cualquier suscripción a un escáner SaaS.
¿Con qué frecuencia debería ejecutarlo en local? Como mínimo, antes de cada lanzamiento a producción. Plantéalo también antes de commits y PR importantes. El artículo no aporta un hook automático de bloqueo de commits verificado.
¿Con qué stacks funciona? Con cualquiera que Claude pueda leer. Según las observaciones del autor, se han comprobado estos: Next.js / Node.js, Python (Django, FastAPI), Go, Rust, PHP (Laravel), Ruby on Rails. La calidad es menor con lenguajes muy exóticos (Erlang, Elixir, Clojure), pero encontrará algo.
¿Qué debería hacer si Claude encuentra cada vez la misma «vulnerabilidad», aunque en realidad no lo sea? Añádela a false-positive-filtering-instructions con una explicación de «por qué es seguro». Claude dejará de informarla en futuras ejecuciones.
¿Puedo ejecutarlo solo en archivos concretos? En local, sí: ejecuta /security-review src/lib/auth/*.ts. En la GitHub Action solo se comprueba el diff de la PR actual, que suele ser lo que se entiende por «archivos concretos».
Fuentes
Fuentes
- Anthropic - Anuncio del lanzamiento de Claude Code Security - anuncio oficial del 20 de febrero de 2026
- Centro de ayuda de Anthropic - Revisiones de seguridad automatizadas en Claude Code - instrucciones oficiales para ejecutarlo
- GitHub: anthropics/claude-code-security-review - código fuente de GitHub Action con el README completo
- Documentación de Claude Code - Revisión de código - documentación general de Anthropic
- Centro de ayuda de Anthropic - Usar Claude Security - productos relacionados
- Port - Incorporar revisiones de seguridad de Claude Code - integración de resultados en un portal interno para desarrolladores
- Registro de cambios de Claude Code - historial de publicación del comando
Encontrarás materiales adicionales en la documentación de Ailoot.
Más detalles
Preguntas sobre Claude Code
¿Un informe security-review sin problemas demuestra que la aplicación es segura?
No. Es una revisión inicial de código con posibles falsos negativos y filtrado. Verifica correcciones, prueba roles y concurrencia en staging e inspecciona la configuración realmente desplegada.
¿La GitHub Action mostrada bloquea automáticamente commits o merges?
El workflow no acredita esa garantía. Publica hallazgos en PR. Revísalos y prueba las correcciones confirmadas; el artículo no aporta un hook local de bloqueo de commits verificado.