cloudflare/security-audit-skill
요약
이 스킬은 에이전트를 보안 감사자 역할로 변환하여, 정찰부터 대상 중립적 보고까지 6단계에 걸친 구조화된 취약점 감사 프로세스를 수행합니다. 이는 Cloudflare의 취약점 발견 하니스로 진화한 코딩 에이전트 스킬입니다.
핵심 포인트
- 정찰(Reconnaissance)을 통해 아키텍처와 신뢰 경계를 매핑합니다.
- 커버리지 기반 탐색과 후보 검증을 통해 누락된 부분을 찾습니다.
- 구조화된 출력 및 독립적 기록 검증으로 발견 사항의 유효성을 높입니다.
- 최종적으로 대상 중립적인 보고서를 생성하여 감사 결과를 도출합니다.
에이전트를 보안 감사자(security auditor)로 변환하는 코딩 에이전트 스킬입니다. 이 스킬은 정찰(reconnaissance), 커버리지 기반 탐색(coverage-led hunting), 후보 검증(candidate validation), 구조화된 출력(structured output), 독립적인 기록 검증(independent record verification), 그리고 대상 중립적 보고(target-neutral reporting)를 통해 격리된 에이전트들을 오케스트레이션합니다.
이 스킬은 Cloudflare의 취약점 발견 하니스(vulnerability discovery harness)에 씨앗을 뿌린 것이며, 이는 Build your own vulnerability harness에서 설명되었습니다. 이 하니스는 다단계의 플릿 전체 시스템으로 성장했으며, 본 스킬은 여기서 진화한 단일 저장소 시작점입니다.
이 스킬은 6단계에 걸쳐 구조화된 감사를 수행합니다:
정찰(Reconnaissance) -- architecture.md와 coverage-ledger.json에서 아키텍처, 신뢰 경계(trust boundaries), 입력 표면(input surfaces), 이전 증거(prior evidence), 그리고 결정론적 커버리지(deterministic coverage)를 매핑합니다.
커버리지 기반 탐색(Coverage-led hunting) -- 레저 단위(ledger units)에서 격리된 헌터들을 할당하고, 그들의 검사를 기록하며, 커버리지 비평가(coverage critics)를 사용하여 누락된 부분을 찾습니다.
후보 검증(Candidate validation) -- 모든 고유한 후보에 대해 이를 반증하려는 새로운 검증자에게 전달합니다.
구조화된 출력(Structured output) -- findings.json에 confirmed, needs_validation, 그리고 rejected 기록을 작성하고, 이들을 report-schema.json과 비교하여 유효성을 검사합니다.
독립적인 기록 검증(Independent record verification) -- 새로운 에이전트들이 최종 소스 클레임(source claims)을 검증합니다. 물질적 대체품(Material replacements)은 또 다른 독립적인 검증자를 받습니다.
대상 중립적 보고(Target-neutral reporting) -- 검증된 기록과 커버리지 레저로부터 REPORT.md, FINDINGS-DETAIL.md, 그리고 NEEDS-VALIDATION.md를 도출합니다.
부모 프로세스는 레저를 생성한 후와 각 이후의 레저 업데이트 후에 validate-coverage-ledger.cjs를 실행합니다. 또한, 4단계에서 validate-findings.cjs를 실행하고, 모든 5단계 대체 작업 후에도 다시 실행합니다.
판결(verdicts)은 다음과 같이 구분됩니다: confirmed는 완전한 소스 추적과 경계가 지정된 관찰 결과(bounded observed result)를 가지며, needs_validation은 정확하지만 해결되지 않은 사실(unresolved fact)을 가지고 있으며 심각도(severity)는 없습니다. 그리고 rejected는 반증된 후보를 기록합니다.
동일한 저장소(repo)에 대한 여러 번의 실행은 누적됩니다. 이 스킬은 이전 기록(ledgers)과 발견 사항을 활용하여 격차를 목표로 하고, 변경된 소스 코드를 재검증하며, 오래되었거나 해결되지 않은 작업이 커버되었다고 간주하지 않고 현재 소스 증거를 전달합니다.
| 파일 | 목적 |
|---|---|
SKILL.md | 설정(Setup), 핵심 원칙(core principles), 플랫폼 용어(platform terminology), 워크플로우 개요(workflow overview), 및 감사 안티 패턴(audit anti-patterns) |
RECONNAISSANCE.md | 1단계 정찰(Phase 1 reconnaissance) 프롬프트 및 합성 지침(synthesis instructions) |
HUNTING.md | 2단계 오케스트레이션(Phase 2 orchestration), 탐색 방법론(hunting methodology), 및 검증 규칙(validation rules) |
ATTACK-CLASSES.md | 핵심(Core), 와일드카드(wildcard), 및 명백한 것들 공격 프롬프트(obvious-things attack prompts) |
MEMORY-SAFETY-AND-BINARY.md | 네이티브 대상(native targets)을 위한 메모리 안전성(Memory-safety), 바이너리(binary), 및 커널 탐색 클래스(kernel hunting classes) |
AI-AND-LLM.md | LLM 기반 대상(LLM-backed targets)을 위한 프롬프트 주입(Prompt-injection), 에이전트/도구(agent/tool), 및 출력 처리(output-handling) 탐색 클래스 |
WEB-PROTOCOL-AND-AUTH.md | HTTP 프로토콜 및 인증 대상(HTTP-protocol and auth targets)을 위한 HTTP 요청 프레이밍(request-framing), 캐시(cache), 및 인증 프로토콜(authentication-protocol) 탐색 클래스 |
CLIENT-SIDE.md | 클라이언트 측/브라우저 대상(client-side/browser targets)을 위한 DOM 주입(DOM-injection), 메시징 신뢰(messaging-trust), UI 복구(UI-redress), 및 프로토타입 오염(prototype-pollution) 탐색 클래스 |
SUPPLY-CHAIN-AND-RELEASE.md | 의존성(Dependency), CI, 릴리스(release), 서명(signing), 업데이트(update), 플러그인(plugin), 및 확장(extension) 탐색 클래스 |
CLOUD-AND-DEPLOYMENT.md | IAM, 코드형 인프라(infrastructure-as-code), 컨테이너(container), 서버리스(serverless), 인그레스(ingress), 및 런타임 구성(runtime-configuration) 탐색 클래스 |
PROTOCOLS-RPC-AND-MESSAGING.md | RPC, 직렬화(serialization), 큐(queue), 브로커(broker), 웹훅(webhook), 및 스트리밍 프로토콜(streaming-protocol) 탐색 클래스 |
RESOURCE-EXHAUSTION-AND-AVAILABILITY.md | 공유 리소스(Shared resource), 할당량(quota), 큐(queue), 워커(worker), 및 운영자 지출(operator-spend) 탐색 클래스 |
DATA-ISOLATION-AND-LIFECYCLE.md | 테넌트 격리(Tenant isolation), 캐시, 검색(search), 내보내기(export), 백업(backup), 마이그레이션(migration), 삭제(deletion), 및 복원(restore) 탐색 클래스 |
DESKTOP-MOBILE-AND-LOCAL-IPC.md | 네이티브 앱(Native app), 딥링크(deep-link), 웹뷰(webview), 내보내기 구성 요소(exported-component), 헬퍼(helper), 데몬(daemon), 및 로컬 IPC 탐색 클래스 |
VALIDATION-AND-REPORTING.md | 3~6단계 후보 검증(Phases 3–6 candidate validation), 구조화된 출력(structured output), 기록 검증(record verification), 및 보고(reporting) |
report-schema.json |
세 가지 모든 findings.json 판결에 대한 JSON 스키마 |
validate-findings.cjs |
Phase 4 및 Phase 5에서 findings.json을 위한 제로 의존성(Zero-dependency) 검증기 |
validate-findings.test.cjs |
Findings 검증기 테스트 및 프로듀서 호환 피처 체크 |
validate-coverage-ledger.cjs |
Phase 1–5에서 coverage-ledger.json을 위한 제로 의존성(Zero-dependency) 검증기 |
validate-coverage-ledger.test.cjs |
Coverage-ledger 검증기 테스트
Skills CLI를 사용하여 스킬 설치:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
사용자 레벨(user-level) 설치를 위해 --global을 사용하세요:
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit \
--global
에이전트 선택 및 비대화형(non-interactive) 옵션은 npx skills --help를 실행하세요.
감사하려는 코드베이스에서 코딩 에이전트를 시작한 다음, 보안 감사를 요청하세요:
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-project
이 스킬은 요청이 트리거(보안 감사, 취약점 찾기, 코드 침투 테스트 등)와 일치할 때 자동으로 활성화됩니다. 직접적인 코드베이스 감사 또는 침투 테스트 요청은 전체 감사 모드(full audit mode)를 사용합니다. 보안 질문 및 집중적인 취약점 작업은 보고 아티팩트(report artifacts)를 요청하지 않는 한 안내 모드(guidance mode)를 사용합니다. 전체 감사 모드에서는 지정되지 않은 출력 디렉터리는 ~/security-audit-skill/<repo-name>/run-<N>을 기본값으로 합니다.
. 워크플로우는 버전 관리 시스템이 무시하는 디렉터리를 명시적으로 선택할 때만 대상 리포지토리 내부에 기록합니다.
- 도구 사용 및 병렬 서브 에이전트를 지원하는 모델을 가진 코딩 에이전트
- 제로 의존성(zero-dependency) 발견 사항 및 커버리지 원장 검증기를 위한 Node.js
- 대상 리포지토리를 제어하는 빌드, 테스트, 프로세스, 브라우저, 에뮬레이터, 퍼저(fuzzers), 그리고 고정된 환경(fixtures)을 위한 OS 기반 샌드박스. 이는 외부 네트워킹을 비활성화하고, 정제된 허용 목록 환경을 사용하며, 리소스 제한을 적용하고, 할당된 스크래치 경로에만 쓰기를 허용해야 합니다. 이러한 제어 장치가 없으면, 워크플로우는 대상 코드를 실행하는 대신 리드(lead)를
needs_validation상태로 유지합니다.
확립된 경계 실패만을 확인하세요. 정확한 해결되지 않은 사실과 함께 원본에 기반한 차단된 리드를 needs_validation으로 유지하세요. 적대적 검증(Adversarial validation). 발견 사항을 확인하는 에이전트는 그것을 발견한 에이전트가 아닙니다. 심각도는 영향도에 달려 있습니다. 체크리스트에서 벗어난 것이 아니라, 발생 가능성 x 영향도입니다. 깊이 방어(Defense-in-depth)의 격차는 취약점이 아닙니다. 레이어 A가 공격을 막으면, 레이어 B의 부재는 강화 노트일 뿐입니다. 여러 번 실행하는 것이 커버리지를 향상시킵니다. 저희 테스트 실행에서 단일 실행은 반복 실행으로 발견된 전체 취약점 중 약 절반만을 발견했습니다.
AI 기반 보안 도구에 대한 질문, 피드백 또는 기록 비교는 [email protected]으로 보내주세요.
MIT -- LICENSE 참조.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기