
등록된 오픈소스 저장소를 격리된 오프라인 VM에서 빌드하고 보안 취약점을 스캔하여 재현기와 제안된 패치와 함께 결과를 이메일로 전송하는 서비스입니다.
OSS Scanner는 Anthropic이 중요한 오픈소스 저장소의 보안 취약점을 스캔하기 위해 제공하는 서비스입니다. 서비스에 대한 자세한 내용은 red.anthropic.com/oss-scanner에서 확인하세요.
이 도구의 사용은 OSS Scanner 약관에 명시된 조건의 적용을 받습니다.
다음 디렉터리 하나를 추가하는 풀 리퀘스트를 열어 오픈소스 프로젝트를 등록하세요:
projects/<name>
보안 스캐너는 격리된 VM에서 프로젝트를 빌드한 후 인터넷 접근 없이 분석하고, 발견된 내용을 재현 절차와 가능한 경우 제안 패치와 함께 primary_contact(및 모든 CC)에게 이메일로 보냅니다. 보고서는 모델이 생성하며 사람이 검토하지 않습니다. 이로 인해 이러한 발견 사항에 대해 90일 공개 기간을 두지 않으며 이를 공개하지 않습니다. 프로젝트 소유자는 project.yaml(스캐너 구성용), Dockerfile(프로젝트 빌드 방법 명시), 그리고 선택적으로 threat_model.md(프로젝트별 위협 모델링 제공)를 제공해야 합니다.
templates/project.yaml에서 시작하세요:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo와 primary_contact는 항상 필수입니다. dockerfile은 project.yaml 옆에 Dockerfile을 두지 않는 한 필수입니다(아래 참조). 나머지는 선택 사항입니다.
project.yaml의 이메일 주소는 공개됩니다. 보안 별칭처럼 공개되어도 괜찮은 주소를 사용하세요.
보고서를 암호화하여 받으려면 armored OpenPGP 공개 키를 추가하세요. 그러면 보고서는 primary_contact에게만 전송됩니다. pgp는 auto_ccs와 함께 사용할 수 없습니다:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Dockerfile은 정확히 다음 두 위치 중 한 곳에 제공해야 합니다:
dockerfile:을 해당 경로로 설정하세요(예: .oss-scanner/Dockerfile과 같은 위치를 권장합니다). 이 옵션이 선호되는데, 여기에서 풀 리퀘스트 없이 빌드를 업데이트할 수 있기 때문입니다; 또는,project.yaml 옆에 projects/<name>/Dockerfile로 두고, project.yaml에 Dockerfile: 키를 설정하지 마세요. 저장소에 파일을 추가하고 싶지 않다면 여기에 두면 스캐너가 저장소 내 복사본과 동일하게 빌드합니다.(위협 모델도 같은 방식으로 작동합니다. 저장소 내 위치를 threat_model 필드에 설정하거나, 여기에 projects/<name>/threat_model.md로 두세요.)
Dockerfile의 목적은 환경을 설정하고, 모든 의존성을 설치하고, 프로젝트를 빌드하는 것입니다. 초기 프로젝트 설정은 네트워크 접근이 활성화된 상태에서 실행되지만, 그 이후의 보안 감사는 인터넷 접근 없이 실행됩니다. 빌드나 테스트에 필요한 모든 것은 초기 Dockerfile 설정 중에 가져와야 합니다. 빌드된 이미지 안에서 테스트가 통과하는지 확인하는 것을 권장합니다.
threat_model.md(선택 사항이지만 강력히 권장) 파일을 통해 스캐너에 의도한 보안 목표에 대한 문서를 제공할 수 있습니다. 보고서의 심각도를 어떻게 평가하는지에 대한 지침을 제공하는 것이 가장 유용하다는 것을 확인했습니다(예: post-auth SQLi를 high로 보는지 critical로 보는지? 입증된 익스플로잇이 없는 버퍼 오버플로는 high로 제한하는지? 저장형 XSS는 언제 medium, high, critical인지?). 이 파일은 또한 프로젝트가 무엇을 하는지, 신뢰할 수 없는 입력이 어디로 들어오는지, 어떤 구성 요소가 중요하고 어떤 것이 범위 밖인지, 보고서와 패치가 어떤 형태이길 원하는지, 또는 그 밖에 중요하거나 유용하다고 생각하는 모든 것을 명시할 수 있습니다.
풀 리퀘스트를 열기 전에 두 명령을 실행하는 것을 권장합니다:
tools/validate.py는 projects/<name>/을 위 규칙에 따라 검사합니다.tools/check <name>은 우리 스캐너가 하는 방식으로 프로젝트를 빌드하고, 네트워크 없이 완성된 이미지에서 셸을 엽니다. 이 컨테이너에서 테스트가 통과하면, 우리 스캐너도 프로젝트에서 작동할 가능성이 높습니다. tools/check --qemu <name>은 스캐너와 동일하게 구성된 가상 머신 안에서 같은 작업을 수행합니다.이 도구들은 호스트에 git, Docker, 그리고 PyYAML이 있는 Python 3(pip install pyyaml)가 설치되어 있어야 합니다. --qemu는 Docker 대신 x86-64의 Linux와 QEMU가 필요합니다.
primary_contact에게 이메일을 보냅니다.primary_contact 및 추가 CC에게 이메일로 전송됩니다.PR로 언제든지 프로젝트를 수정할 수 있습니다. 프로젝트 등록을 해제하려면 disabled 필드를 true로 설정하여 보고서를 일시 중지하거나, projects/\<name\>/를 제거하여 프로젝트를 완전히 철회하세요.
tools/check는 docker build가 그러하듯이 네트워크 접근이 있는 상태로 프로젝트의 Dockerfile을 실행합니다. --qemu를 사용하면 빌드가 가상 머신 안에서 실행되어 파일에서 격리되지만, 여전히 컴퓨터와 로컬 네트워크의 서비스에 접근할 수 있습니다. 신뢰하는 프로젝트만 검사하거나, 잃을 것이 없는 머신을 사용하세요.tools/check는 (스캐너가 그러하듯이) 빌드하는 이미지에 Claude Code를 설치합니다. Claude Code는 자체 약관의 적용을 받습니다.red.anthropic.com/oss-scanner를 방문하세요.
유지보수 상태: 이 저장소는 Anthropic이 활발히 유지보수합니다. 우리는 등록 풀 리퀘스트(projects/<name>/ 아래의 변경 사항)만 검토하고 병합하며, tools/ 또는 templates/에 대한 변경을 포함한 다른 기여는 받지 않습니다. 등록 방법은 CONTRIBUTING.md를, 이 저장소의 취약점 보고는 SECURITY.md를, 그리고 CODE_OF_CONDUCT.md를 참조하세요.