CommunityProgramación y desarrollogithub.com

Auditoría de seguridad

Guía de seguridad y revisión de vulnerabilidades de Cloudflare para codebases, APIs, servicios, CLIs, libs y daemons. Preguntas del día a día, o flujo completo de auditoría/pen-test cuando necesitas un informe real.

¿Qué es Auditoría de seguridad?

Auditoría de seguridad (cloudflare/security-audit) da a los agentes una revisión disciplinada: orientación threat-aware para lo cotidiano, más una ruta completa de auditoría/pen-test para revisiones end-to-end explícitas e informes. Cubre apps, APIs, servicios, CLI, libs y daemons — hallazgos accionables, no consejos genéricos.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cloudflare/security-audit-skill/tree/main/skills/security-audit

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Auditoría de seguridad?

Encuentra vulnerabilidades que violen un límite de confianza real, luego proporciona a los propietarios la evidencia fuente, la reproducción segura, la prioridad y la corrección efectiva más pequeña. Este es un flujo de trabajo defensivo y basado en el código fuente. Un candidato sin un principal afectado concreto, recurso o resultado de seguridad no es un hallazgo confirmado.

Modos de operación

Esta habilidad es guía por defecto. Cargarla no autoriza el flujo de trabajo completo de auditoría ni la creación de archivos.

  • Modo Guía: Para preguntas de seguridad, revisiones enfocadas, metodología, triaje o investigación de hallazgos específicos, use solo las partes relevantes de esta habilidad. No ejecute automáticamente las seis fases, cree un directorio de salida ni escriba artefactos de auditoría. Puede lanzar agentes enfocados cuando sea útil; estos devuelven resultados a la tarea actual.
  • Modo Auditoría Completa: Use el flujo de trabajo completo cuando el usuario solicite explícitamente auditar o hacer pruebas de penetración de un código base, solicite una revisión de seguridad completa, integral o de extremo a extremo, o solicite artefactos de informe. Ejecute las seis fases y escriba los archivos definidos a continuación.

Si la solicitud podría significar cualquiera de los dos modos, haga una pregunta enfocada antes de crear archivos o iniciar el flujo de trabajo completo.

Terminología de la plataforma

Esta habilidad es neutral en cuanto al agente:

  • Padre es el agente que coordina la ejecución y posee el estado compartido.
  • Herramienta de tarea es el mecanismo de delegación o subagente de la plataforma.
  • Agente research es un agente delegado para exploración enfocada de código fuente y verificación de hechos.
  • Agente general es un agente delegado para investigación amplia y ejecución local acotada.
  • subagent_type: en un encabezado nombra cuál de estos dos roles de agente delegado ejecuta ese trabajo.

Use capacidades equivalentes de la plataforma preservando los límites de rol, aislamiento de escritura, indicaciones e independencia.

Seguridad universal de ejecución

Estas reglas aplican en ambos modos de operación. La inspección del código fuente es de solo lectura. Ejecute compilaciones controladas por el objetivo, pruebas, procesos, navegadores, emuladores, fuzzers y procesamiento de fixtures solo dentro de un entorno aislado reforzado por el sistema operativo que proporcione todos estos controles:

  • sin red externa; use solo un espacio de nombres de loopback aislado cuando la verificación necesite tráfico local de cliente/servidor;
  • un entorno vacío poblado a partir de una lista de permitidos explícita con valores seguros, con HOME, directorios temporales y cachés locales de scratch;
  • un objetivo y cadena de herramientas de solo lectura, con el proceso controlado por el objetivo capaz de escribir solo dentro de su directorio scratch/ asignado; y
  • límites explícitos bajos de CPU, memoria, procesos, tamaño de archivo, disco y tiempo de pared.

El agente, fuera del proceso controlado por el objetivo, puede hacer una copia desechable del código fuente en un directorio scratch/ asignado cuando una compilación deba escribir junto al código fuente. En modo guía, no retenga archivos controlados por el objetivo. En modo auditoría completa, solo el código confiable del lado del padre puede promover el resultado no secreto mínimo a los artifacts/ retenidos usando el procedimiento bajo Aislamiento de escritura. Nunca exponga un directorio de salida retenido (que no sea el scratch/ asignado del propio agente), el directorio de otro agente, el directorio home del host, credenciales, sockets o servicios compartidos al código objetivo. No instale dependencias ni permita que las compilaciones las obtengan. Use solo herramientas y dependencias ya disponibles localmente. Si no se puede aplicar cada control, no ejecute código objetivo: informe la capacidad faltante del entorno aislado como un bloqueador que necesita validación y proporcione un plan de validación seguro.

Use principales, fixtures y secretos ficticios. No pruebe endpoints desplegados, servicios externos, infraestructura compartida, identidades de producción, datos de otros usuarios o planos de control en vivo. No pruebe la disponibilidad contra un proceso vivo o compartido, publique artefactos, altere versiones, gaste cuota de API paga ni continúe más allá del efecto local mínimo necesario para establecer un defecto. Si el hecho decisivo está fuera del código fuente o del fixture aislado, infórmelo como necesitado de validación.

Configuración de auditoría completa

En modo auditoría completa, resuelva estos valores antes del reconocimiento:

  • Directorio de la habilidad: el directorio absoluto que contiene este SKILL.md.
  • Objetivo: la raíz absoluta del repositorio bajo revisión.
  • Nombre del repo: un identificador de repositorio estable del directorio o del remoto Git local.
  • Directorio de salida: un nuevo directorio escribible fuera del objetivo, por defecto ~/security-audit-skill/<nombre-del-repo>/run-<N>, donde <N> es el siguiente entero no utilizado. Use un directorio dentro del objetivo solo cuando el usuario lo seleccione explícitamente y el padre verifique que el control de versiones ignore todo el directorio. De lo contrario, deténgase y solicite una ruta externa.
  • Ref de código fuente: el commit revisado y si el árbol de trabajo está sucio. No trate archivos generados o modificados no revisados como otra revisión.

Aislamiento de escritura

El padre crea y es el único escritor de los archivos de ejecución compartidos:

  • run-metadata.json
  • architecture.md
  • coverage-ledger.json
  • findings.json
  • REPORT.md
  • FINDINGS-DETAIL.md
  • NEEDS-VALIDATION.md

Cada cazador o verificador recibe una raíz única bajo <output-dir>/agents/<agent-id>/, con directorios separados scratch/ y artifacts/. Los IDs de agente canónicos coinciden con ^[a-z0-9][a-z0-9_-]{0,63}$ y no deben ser iguales a un nombre de dispositivo de Windows como con, prn, aux, nul, com1 a com9, o lpt1 a lpt9. Los IDs en minúsculas previenen colisiones de mayúsculas/minúsculas. El agente y cada proceso controlado por el objetivo pueden escribir solo en scratch/; los artifacts/ retenidos son propiedad del padre, nunca se exponen al entorno aislado y solo pueden ser escritos por código de promoción confiable del lado del padre. Los agentes no pueden cambiar archivos compartidos, el código fuente del objetivo, artefactos retenidos o el directorio de otro agente. No use /tmp ni el directorio home del host como respaldo escribible.

Antes de la ejecución, el padre abre y retiene descriptores de directorio confiables y no heredables para las raíces scratch/ y artifacts/ del agente, y registra una lista de permitidos de archivos de artefactos esperados relativos a scratch más límites explícitos por archivo y acumulativos en bytes. Nunca pase esos descriptores al agente o al entorno aislado. Después de que el entorno aislado y todos sus procesos terminen, el código confiable del lado del padre promueve cada archivo de la lista de permitidos por separado:

  1. Valide la ruta relativa declarada: rechace componentes absolutos, vacíos, ., .. o enlaces simbólicos.
  2. Recorra cada componente padre desde el descriptor de raíz de scratch retenido con operaciones relativas al directorio sin seguimiento; nunca vuelva a abrir por ruta.
  3. Abra la hoja sin seguimiento y sin bloqueo.
  4. Verifique con fstat que sea un archivo regular con un enlace de conteo exactamente uno y dentro de los límites por archivo y acumulativos registrados.
  5. Vuelva a imponer esos límites al leer desde ese descriptor.
  6. Copie exactamente el tamaño verificado, repita fstat y rechace una identidad, tipo, conteo de enlaces o tamaño cambiados.
  7. Para el destino, recorra cada componente padre desde el descriptor de raíz de artifacts retenido con operaciones relativas al directorio sin seguimiento; exija que cada componente existente sea un directorio real, y cree cualquier directorio faltante exclusivamente antes de volver a abrirlo y verificarlo sin seguimiento.
  8. Cree la hoja exclusivamente sin seguir enlaces, verifique que el destino abierto sea un archivo regular con un enlace de conteo exactamente uno, y copie desde el descriptor fuente verificado sin volver a abrir ninguna ruta.
  9. Use APIs equivalentes seguras contra condiciones de carrera en sistemas no POSIX.
  10. Nunca copie recursivamente ni use glob en scratch, extraiga un archivo en artifacts, ni abra o promueva un enlace simbólico, FIFO, socket, dispositivo, directorio, archivo con enlaces duros, archivo cambiante o archivo que exceda su límite.
  11. Si alguna verificación no está disponible, no puede aplicarse o falla, descarte la entrada de scratch; si es evidencia decisiva, retenga `needs_va

Skills relacionados