Anthropic은 비용 없이 사용자의 오픈 소스 프로젝트를 스캔하여 보안 버그를 찾아줍니다. 문제는 자사 발표문에 명시되어 있습니다. 보고서가
GitHub의 repository README에 따르면, 이 스캐너는 격리된 VM에서 프로젝트를 빌드하고 인터넷 접속 없이 분석한 후 발견한 내용을 primary_contact와 모든 CC 수신자에게 이메일로 전송합니다. 각 보고서에는 재현기(reproducer)가 포함되며, 가능한 경우 제안된 패치도 함께 제공됩니다. launch post에서는 버그에 대한 설명과 가능하다면 해당 커밋을 도입한 지점까지의 이분 탐색(bisection) 정보를 추가합니다.
사람이 이러한 보고서를 검토하지 않기 때문에, Anthropic은 여기에 90일 공개 시한을 두지 않습니다. 그리고 README에는 '공개하지 않을 것'이라고 명시되어 있습니다. 발견된 취약점이 나중에 Anthropic의 조정된 공개 프로세스(coordinated disclosure process)를 통해 검증될 경우에만 시계가 작동합니다. FAQ에 따르면, 이 경우 인간의 검증 사실을 통보받은 후 90일 후에 공개될 수 있습니다. FAQ에는 또한 Anthropic이 나중에 일부 고심각도 보고서에 대해 사전 통지 및 옵트아웃(opt-out)과 함께 공개 기간을 설정할 수도 있다고 명시되어 있습니다.
데이터 측면에서는, FAQ에 따르면 스캐닝 에이전트는 인터넷 접속이 비활성화된 강화된 샌드박스(hardened sandboxes)에서 실행되며, 보고서는 필요한 Anthropic 보안 직원만이 접근할 수 있는 격리된 클라우드 프로젝트 내에 보관됩니다.
검토되지 않은 보고서의 품질은 어떠한가?
Anthropic은 자체 수치를 공개하며, 이는 그 자체로 읽을 가치가 있습니다. 6개월 동안 모델들은 29,000개 이상의 잠재적 취약점을 생성했습니다. 팀은 이 중 약 6,000개를 수동으로 검토 및 분류했으며, 모든 것을 요청한 유지 관리자들에게 (Anthropic https://www.anthropic.com/research/launching-opt-in-vuln-finding-service-for-open-source) 검증되지 않은 보고서를 포함하여 거의 5,000개의 보고서를 전송했습니다.
정확도를 확인하기 위해 Anthropic의 침투 테스터들은 48개 프로젝트에서 발견된 97개의 심각 및 고위험(critical and high-severity) 결함을 검토했습니다. 이 중 85개(88%)가 공개 절차 기준을 충족했습니다. 나머지 12개 중 11개는 알려진 문제나 스캔의 다른 결과와 중복되는 실제 버그였고, 하나는 오탐지(false positive)였습니다 (Anthropic). Anthropic이 자체적으로 초기 버전의 스캐너를 이용해 이 확인을 진행했으므로, 88%는 독립적인 감사(independent audit) 수치가 아닌 공급업체(vendor) 수치로 간주해야 합니다. Security Affairs는 10월 9일에 이 수치를 재차 언급했습니다.
launch post에 인용된 유지보수자들은 긍정적인 반응을 보였습니다. wolfSSL의 인용문은
코어 메인테이너는 projects/<name> 디렉터리를 추가하는 PR을 anthropics/oss-scanner에 열어 등록합니다. FAQ에 따르면, 자격 요건은 Google의 OSS-Fuzz와 유사한 기준을 따릅니다: 프로젝트 연령 및 업데이트 빈도, OpenSSF criticality score, 오픈 소스 라이선스, 사용처, 그리고 해당 프로젝트가 서비스하는 분야입니다. FAQ에는 신규 프로젝트는 일반적으로 자격이 되지 않으며, 인간이 당신이 코어 메인테이너인지 확인하고, 연락처가 SECURITY.md에 명시된 것과 같은 실제 프로젝트 보안 담당자인지 확인한다고 추가되어 있습니다.
다음은 가상의 라이브러리를 위한 템플릿을 기반으로 한 project.yaml입니다:
# projects/libexample/project.yaml
repo: https://github.com/example/libexample#main
primary_contact: [email protected]
...
primary_contact에는 보안 별칭(security alias)을 사용하세요: README는 project.yaml의 이메일 주소가 공개된다고 경고합니다. 만약 pgp 키를 추가하면, 템플릿에 따르면 모든 보고서는 해당 키로 암호화되어 오직 primary_contact에게만 전송되므로, pgp는 auto_ccs와 결합될 수 없습니다.
Dockerfile에서 네트워크는 이미지가 빌드되는 동안에만 존재합니다. Dockerfile 템플릿에는 에이전트가 테스트를 실행하는 데 필요할 수 있는 모든 것이 거기서 가져와야 한다고 명시되어 있습니다. 이 템플릿은 또한 체크아웃된 코드를 /src로 복사하고 디버그 정보 및 프레임 포인터로 빌드합니다.
PR을 열기 전에, README에서는 리포지토리 루트에서 두 가지 검사를 실행하도록 요청합니다: tools/validate.py는 projects/<name>/ 디렉터리를 규칙과 비교하고, tools/check <name>은 스캐너가 작동하는 방식대로 프로젝트를 빌드한 다음 네트워크 연결이 없는 완성된 이미지 내에서 셸을 열어줍니다. PR은 사용자 자신의 포크(fork)에서 오므로, 반드시 본인의 포크에서 작업하세요.
# anthropics/oss-scanner의 사용자 포크
git clone https://github.com/YOUR-USER/oss-scanner
cd oss-scanner
...
tools/check는 docker build가 하는 것처럼 네트워크 접근을 사용하여 Dockerfile을 실행하고, 스캐너가 하듯이 빌드된 이미지에 Claude Code를 설치합니다. README에서는 신뢰하는 프로젝트만 검사하라고 안내하므로, 실행하기 전에 Dockerfile을 읽어보세요.
첫 스캔 전에 위협 모델 작성하기
threat_model.md는 선택 사항이지만, README에서는 강력히 권장합니다. 이 파일은 스캐너에게 심각도(severity)를 어떻게 평가할지 알려주는 역할을 합니다. 예를 들어, 인증 후 SQL 주입이 프로젝트에 대해 높음(high)으로 간주해야 하는지 아니면 치명적(critical)으로 간주해야 하는지를 명시하는 식입니다. Anthropic 자체가 보고한 불필요하게 부풀려진 심각도가 바로 이 문제이므로, 이 파일을 가장 먼저 작성해야 합니다.
템플릿은 다섯 개의 섹션으로 구성되어 있습니다. 가상의 이미지 디코더에 대한 채워진 버전은 다음과 같습니다:
Threat model
============
...
여기서 당신은 모델을 위한 지침을 작성하고 있는 것입니다. 무엇이 범위(scope)에 포함되는지, 코드를 어떻게 실행해야 하는지를 명시하고, 보고받고 싶지 않은 사례들을 나열하세요. 모호하게 남겨두면 스캐너가 자체적으로 판단한 필터링되지 않은 심각도 개념이 당신의 받은 편지함으로 들어오게 됩니다.
일시 중단, 제외, 그리고 아예 등록 여부
보고서를 일시 중단하려면 disabled: true로 설정하세요. 제외(leave)하려면 projects/<name>/을 삭제하면 됩니다. 옵트아웃(opt out)한 후에는 FAQ에 따르면 Anthropic의 표준 공개 절차로 돌아갑니다.
크레딧은 필요하지 않습니다. 만약 발견된 취약점을 패치한다면, FAQ에는 ANT-2026-ABCD1234와 같은 형식으로 리포트 ID를 명시하는 라인을 요청합니다.
만약 프로젝트에 모델이 작성한 보고서의 흐름을 분류(triage)할 인력이 부족하다면, 기다리세요. Cyber Mission 공지에는 이 서비스가 "발견된 취약점을 따라잡을 역량을 갖춘 프로젝트를 위해 마련되었다"고 명시되어 있으며, 그러한 역량이 없는 프로젝트는 계속해서 사람이 검증한 공개 보고서를 받게 됩니다. 패치 작업의 경우, Anthropic은 또한 적격 프로젝트에 Claude for OSS를 통해 6개월 동안 무료 Claude Max 20x를 제공합니다.
각 보고서를 처음 읽는 사람이 바로 당신이라는 것을 알면서도, 자신이 관리하는 프로젝트를 등록하시겠습니까? 댓글로 알려주세요.
유용했다면
저는 Hermes IDE를 구축했으니, 이 점을 고려해 보세요. 스캐너 보고서를 Claude Code나 Codex에 넘겨 재현하고 패치하게 할 경우, Hermes는 각 작업에 고유한 브랜치와 워크트리를 제공하여 수정 사항이 다른 작업과 분리되도록 합니다. macOS, Windows, Linux에서 무료로 사용할 수 있습니다: 다운로드하거나 GitHub에서 소스 코드 읽기.
이 스캐너는 threat_model.md 파일을 읽어 무엇이 중요하고 얼마나 크게 보고해야 할지 결정합니다. 따라서 이 파일을 작성하는 방식이 받은 편지함에 도착할 내용의 형태를 만듭니다. Prompt Engineering Pocket Guide에서는 모델이 의도한 대로 작동하도록 그러한 지침을 작성하는 방법을 다루고 있습니다.
Prompt Engineering Pocket Guide: Techniques for Getting the Most from LLMs