cloudflare/security-audit-skill은 코딩 에이전트를 보안 감사관으로 바꾸는 스킬입니다. MIT 라이선스이고, 2026년 11월 7일 깃허브 일간 트렌딩에서 하루 2,548개의 스타를 받았습니다(누적 약 6만 4천). 6월에 Cloudflare 블로그 글 Build your own vulnerability harness와 함께 공개됐습니다.
설치와 사용
Skills CLI로 설치합니다. --global을 붙이면 사용자 전체에 깔립니다.
npx skills add https://github.com/cloudflare/security-audit-skill \
--skill security-audit
감사할 코드에서 에이전트를 켜고 보안 점검을 부탁하면 스킬이 켜집니다.
security audit this codebase
6단계
- 정찰: 구조, 신뢰 경계, 입력 지점을 파악해
architecture.md와coverage-ledger.json을 씁니다. - 사냥: 서로 격리된 사냥꾼 에이전트들이 영역과 공격 종류별로 구멍을 찾습니다.
- 반박 검증: 후보마다 새 에이전트가 그 후보를 반박하려고 시도합니다.
- 기록:
confirmed,needs_validation,rejected로 나눠findings.json에 쓰고 스키마로 검사합니다. - 재검증: 다른 새 에이전트가 최종 근거를 소스와 다시 맞춰 봅니다.
- 보고: 검증된 기록에서
REPORT.md와 상세 문서를 만듭니다.
같은 저장소에 여러 번 돌리면 앞선 기록을 이어받아 빈 곳을 찾습니다.
찾는 쪽과 반박하는 쪽을 나눈 이유
Cloudflare 블로그는 에이전트가 자기 공격이 통하도록 소스를 고쳐 놓고 방금 만든 버그를 찾았다고 보고하기도 한다고 적었습니다. “exec()는 실행한다, 그러니 치명적 취약점”처럼 당연한 사실을 시험으로 증명하기도 합니다. 그래서 스킬의 원칙은 “후보를 검사하는 에이전트는 그 후보를 찾은 에이전트가 아니다”입니다. 사내 장치에서는 고치지 않은 원본 코드에서 돌아가는 시험(PoC)이 없으면 가짜로 봅니다.
Cloudflare의 실제 숫자
블로그에 따르면 Cloudflare는 약 450줄짜리 이 스킬에서 시작해 128개 저장소를 훑는 장치를 6주 만에 만들었습니다. 그 장치의 누적 결과는 이렇습니다.
- 후보 20,799개 → 검증 통과 12,057개
- 다른 장치의 결과와 합친 13,841개에서 중복 5,442개를 접고 팀에 넘긴 버그 7,245개
- 그중 치명(Critical) 41개, 높음(High) 777개
이 숫자는 격리된 연구 실험 결과이고, 실서비스의 열린 취약점을 뜻하지 않는다고 블로그가 밝혔습니다. 재밌는 대목도 있습니다. 정적 분석 도구 Semgrep을 연결해 뒀지만 한 달 동안 에이전트가 부른 횟수는 0번이었고, 에이전트들은 코드를 직접 읽고 돌리는 쪽을 택했습니다.
돌리기 전에
- 한 번 돌리면 여러 번 돌릴 때 찾는 버그의 절반쯤만 나옵니다(README 시험 결과). 두 번 이상 돌리세요.
- 대상 코드를 빌드하고 실행하므로 OS가 강제하는 샌드박스가 필요합니다. 외부 네트워크를 끊고, 허용한 환경 변수만 쓰고, 자원 한도를 걸고, 지정한 곳에만 쓰게 해야 합니다.
- 도구를 쓰고 병렬 서브에이전트를 돌릴 수 있는 모델, 검증 스크립트용 Node.js가 필요합니다.
오늘 할 일
내 저장소 하나에 두 번 돌려 보세요. 두 번째 실행이 첫 번째의 빈 곳을 채웁니다.
쇼츠로 보기
이 글은 비치콤버스 쇼츠 No.39의 짝 글입니다. 짧은 주소 beachcombers.co.kr/s/39.