코딩 에이전트가 스스로 보안 감사를 수행하고 결과를 검증하는 구조
코드베이스를 가리키고 '보안 감사를 해줘'라고 말하면, 에이전트가 정찰부터 독립 검증까지 6단계 과정을 거쳐 기계가 읽을 수 있는 결과물을 만들어냅니다. 이 저장소는 클라우드플레어의 취약점 발견 시스템의 출발점이 된 단일 저장소용 스킬입니다. 에이전트가 발견한 취약점을 다른 에이전트가 반증 시도하여 확인하는 구조로, 오보를 줄이고 신뢰할 수 있는 보고서를 생성합니다.
6단계 감사 흐름과 독립 검증
감사는 정찰, 커버리지 기반 탐색, 후보 검증, 구조화 출력, 독립 기록 검증, 대상 중립 보고의 6단계로 진행됩니다. 1단계에서 아키텍처와 신뢰 경계를 architecture.md와 coverage-ledger.json에 기록하고, 2단계에서 이 목록을 기반으로 격리된 에이전트들이 취약점을 탐색합니다. 3단계에서 발견된 모든 후보는 새로운 검증 에이전트가 반증 시도를 거쳐 확인되며, 4단계에서 findings.json에 confirmed, needs_validation, rejected 세 가지 판정 중 하나로 기록됩니다. 5단계에서는 최종 소스 주장에 대해 또 다른 독립 에이전트가 검증하고, 6단계에서 검증된 기록과 커버리지 목록을 바탕으로 REPORT.md 등 보고서를 생성합니다. 이 과정에서 검증 에이전트는 발견 에이전트와 항상 다르며, 이는 오보를 줄이는 핵심 설계입니다.
커버리지 기반 탐색과 반복 실행
이 스킬은 coverage-ledger.json을 통해 어떤 부분이 이미 검사되었는지 추적합니다. 같은 저장소에 대해 여러 번 실행하면 이전 실행의 기록을 활용하여 미검사 영역을 집중적으로 탐색하고, 변경된 소스에 대해 재검증을 수행합니다. README에 따르면 단일 실행은 반복 실행으로 발견된 취약점의 약 절반만 찾았으며, 반복 실행이 커버리지를 높이는 데 효과적입니다. validate-coverage-ledger.cjs와 validate-findings.cjs는 의존성이 없는 검증 도구로, 각 단계에서 기록의 무결성을 확인합니다.
설치와 실행 방법
Skills CLI를 통해 npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit 명령으로 설치합니다. 사용자 수준 설치에는 --global 옵션을 추가합니다. 사용 시 코딩 에이전트를 감사 대상 코드베이스에 가리키고 'security audit this codebase'와 같은 요청을 하면 자동으로 활성화됩니다. 전체 감사 모드에서는 출력 디렉토리를 지정하지 않으면 ~/security-audit-skill/<repo-name>/run-<N>이 기본값으로 사용됩니다. 버전 관리가 무시하는 디렉토리를 명시적으로 선택한 경우에만 대상 저장소 내부에 파일을 작성합니다.
실행 환경의 필수 조건
이 스킬은 도구 사용과 병렬 서브 에이전트를 지원하는 모델이 있는 코딩 에이전트, 그리고 검증 도구를 위한 Node.js를 요구합니다. 특히 대상 코드의 빌드, 테스트, 프로세스 실행을 위한 OS 강제 샌드박스가 필수입니다. 이 샌드박스는 외부 네트워크를 차단하고, 허용된 환경 변수만 사용하며, 리소스 한계를 강제하고, 지정된 임시 경로에만 쓰기를 허용해야 합니다. 이러한 제어가 없으면 워크플로우는 대상 코드를 실행하지 않고 관련 항목을 needs_validation 상태로 유지합니다. 이는 보안 감사 도구가 대상 코드를 실행할 때 발생할 수 있는 위험을 방지하기 위한 설계입니다.
적용 전 확인 사항
이 스킬은 MIT 라이선스로 제공되며, 클라우드플레어의 취약점 발견 시스템에서 파생된 단일 저장소용 시작점입니다. 방어적 깊이 부족은 취약점이 아닌 강화 노트로 처리하며, 심각도는 영향력과 발생 가능성의 곱으로 결정합니다. 또한, 단일 실행보다 반복 실행이 더 많은 취약점을 발견하므로, 중요한 프로젝트에서는 여러 번 실행하는 것을 권장합니다.