Defending Code Reference Harness: Claude로 취약점을 찾아 고치는 보안 파이프라인에 대한 연구 (feat. Anthropic)

Defending Code Reference Harness 소개

소프트웨어 보안팀은 오랫동안 소스 코드를 사람이 직접 읽어 내려가며 취약점을 찾고, 의심스러운 지점을 수기로 검증한 뒤, 패치를 손으로 작성해 왔습니다. 이 과정은 느리고, 검토자의 경험에 크게 의존하며, 코드베이스가 커질수록 사람이 따라가기 어려워집니다. Defending Code Reference Harness는 이 흐름을 Claude 기반의 자율 에이전트 파이프라인으로 옮기려는 시도로, 취약점을 찾고(find), 실제로 재현되는지 검증하고(verify), 패치를 만들어 검증(patch)하는 루프를 코드로 구현한 참조 구현(reference implementation)입니다.

이 저장소는 Anthropic이 여러 조직의 보안팀과 협업하며 얻은 경험을 바탕으로 공개한 것으로, 함께 공개된 블로그 글에 그 모범 사례가 정리되어 있습니다. 중요한 전제는 이것이 완성된 제품이 아니라 참조 구현(reference, not a product) 이라는 점입니다. 일반적인 모범 사례를 코드로 보여주는 것이 목적이며, 모든 코드베이스에서 그대로 동작하도록 만들어진 것은 아닙니다. 저장소 자체는 더 이상 유지보수되지 않고 기여도 받지 않으며, 관리형 옵션이 필요한 경우 Anthropic은 별도의 호스팅 제품인 Claude Security를 안내하고 있습니다.

크게 두 가지 요소로 구성됩니다. 하나는 Claude Code에서 바로 실행하는 대화형 스킬 모음(/quickstart, /threat-model, /vuln-scan, /triage, /patch, /customize) 이고, 다른 하나는 harness/ 디렉토리에 담긴 자율 참조 파이프라인입니다. 파이프라인은 C/C++ 메모리 취약점 탐지를 위해 Docker와 ASAN(AddressSanitizer, C/C++용 메모리 오류 탐지기)을 사용하도록 구성되어 있으며, Bedrock, Vertex, Azure 등 사용자가 접근 가능한 Claude API 환경에서 동작합니다.

Defending Code Reference Harness의 파이프라인 동작 방식

자율 파이프라인은 여러 단계를 거쳐 동작하며, 각 단계는 격리된 에이전트가 맡습니다. 핵심은 한 에이전트의 추론이 다른 에이전트로 새어 들어가지 않도록 단계 사이를 분리해, 거짓 양성(false positive)을 줄이는 데 있습니다.

  • 빌드(Build): 대상의 Dockerfile 을 ASAN으로 계측한 Docker 이미지로 빌드합니다. 이 이미지는 find, grade, 재공격 단계에서 재사용되어 모든 에이전트가 동일한 환경에서 같은 코드를 보게 됩니다.
  • 정찰(Recon): 한 에이전트가 소스 트리를 읽고 공격 표면을 분할합니다. 예를 들어 "여기 별도로 공격할 가치가 있는 파서가 8개 있다" 처럼 영역을 나눠, 병렬 실행되는 에이전트들이 같은 버그로 수렴하지 않게 합니다. --auto-focus 플래그로 이 단계를 파이프라인에 포함시킬 수 있습니다.
  • 탐색(Find): 루프의 핵심입니다. 각 실행은 네트워크가 격리된 컨테이너 안에서 에이전트 하나를 받아, 소스를 읽고 잘못된 입력(malformed input)을 만들어 ASAN 바이너리에 넣습니다. 같은 입력이 3번 중 3번 크래시를 낼 때까지 반복하며, 결과로 보고서가 아니라 크래시를 일으킨 입력 파일을 내놓습니다.
  • 채점(Grade): 별도의 에이전트가 새 컨테이너에서 그 PoC(개념 증명 입력)를 다시 실행해, 크래시가 실제로 재현되는지, 프로젝트 코드에서 발생하는지, 단순한 메모리 고갈은 아닌지 확인합니다. find 컨테이너에서 grade 컨테이너로 넘어가는 것은 오직 PoC 바이트뿐이므로, 채점 에이전트는 탐색 에이전트의 추론에 영향받지 않습니다.
  • 심사(Judge)·중복 제거(Dedupe): 채점을 통과한 발견을 도구 없이 동작하는 짧은 에이전트가 이미 기록된 버그 목록과 비교해, 새 버그인지, 기존 버그의 더 나은 사례인지, 건너뛸 중복인지 판단합니다.
  • 보고(Report): 고유한 버그마다 보고 에이전트가 프리미티브 종류, 도달 가능성(reachability), 권한 상승 경로, 심각도를 담은 구조화된 익스플로잇 가능성 분석을 작성합니다.
  • 패치(Patch): 별도의 patch 명령으로 실행됩니다. 패치 에이전트가 수정안을 작성하면, 채점 에이전트가 새 코드가 빌드되는지, 원래 PoC가 더 이상 크래시를 내지 않는지, 대상의 테스트가 여전히 통과하는지, 그리고 새 탐색 에이전트가 그 수정을 우회할 방법을 찾지 못하는지를 확인합니다.

Defending Code Reference Harness의 Claude Code 스킬

파이프라인과 별개로, 저장소를 Claude Code에서 열면 바로 쓸 수 있는 대화형 스킬이 함께 제공됩니다. /threat-model 은 위협 모델을 세우고, /vuln-scan 은 그 위협 모델로 범위를 좁힌 정적 스캔을 수행하며, /triage 는 결과를 검증·중복 제거·순위화하고, /patch 는 검증된 발견에 대한 후보 패치를 만듭니다.

/quickstart, /threat-model, /vuln-scan, /triage 와 정적 결과(TRIAGE.json 또는 VULN-FINDINGS.json)에 대한 /patch 실행은 파일을 읽고 쓰기만 합니다. 따라서 Claude Code에서 각 도구 호출을 직접 승인하며 사용하는 한 샌드박스 없이도 안전합니다. 반면 대상 코드를 실제로 실행하는 자율 파이프라인은 기본적으로 gVisor 샌드박스 밖에서는 실행을 거부하며, 이를 우회하려면 명시적인 설정이 필요합니다. 샌드박스 구성과 주의 사항은 저장소의 docs/security.mddocs/agent-sandbox.md 에 정리되어 있습니다.

Defending Code Reference Harness 설치 및 사용

저장소를 받아 Claude Code에서 /quickstart 를 실행하면 30초 분량의 소개와 함께 canary 대상에 대한 첫 실행을 안내받을 수 있습니다.

git clone https://github.com/anthropics/defending-code-reference-harness
cd defending-code-reference-harness
claude

# 30초 소개 + canary 대상에 대한 첫 실행 안내
> /quickstart

자율 파이프라인을 직접 돌리려면 가상 환경 설치와 샌드박스 설정(Docker 필요)을 먼저 거친 뒤, bin/vp-sandboxed 로 recon → find → verify → report 루프를 실행합니다. 패치는 같은 명령의 patch 서브커맨드로 생성합니다.

# 1회 설정
python3 -m venv .venv && .venv/bin/pip install -e .
./scripts/setup_sandbox.sh   # gVisor 설치, 에이전트 이미지 빌드, 격리 검증 (Docker 필요)
export ANTHROPIC_API_KEY=sk-ant-...   # 또는 CLAUDE_CODE_OAUTH_TOKEN

# recon → find → verify → report 루프 실행
bin/vp-sandboxed run drlibs --model <model-id> --runs 3 --parallel --stream --auto-focus
# 각 발견에 대한 후보 패치 생성
bin/vp-sandboxed patch results/drlibs/<timestamp>/ --model <model-id>

저자들은 가장 빠르게 성과를 낸 보안팀일수록 완벽한 파이프라인을 설계하느라 시간을 쓰기보다 작게 시작해 직접 손을 댄 팀이었다고 정리하며, 1일 차에는 대화형 스킬로 전체 루프를 한 번 돌려 보고, 2일 차에 알려진 취약점이 있는 C/C++ 라이브러리에 파이프라인을 적용한 뒤, 3~5일 차에 자신의 대상에 맞게 /customize 로 이식하고, 2주 차에 자율 스캔·심사·패치를 본격적으로 돌리는 단계적 접근을 권합니다.

Defending Code Reference Harness의 라이선스

Defending Code Reference Harness는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:scroll: Defending Code Reference Harness 블로그 글

:github: Defending Code Reference Harness 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: