
登録されたオープンソースリポジトリを分離されたオフラインVMでビルドし、セキュリティ脆弱性をスキャンして、再現手順と提案されたパッチを含む検出結果をメールで通知するサービス。
OSS Scannerは、Anthropicによるサービスで、重要なオープンソースリポジトリのセキュリティ脆弱性をスキャンします。このサービスの詳細については、red.anthropic.com/oss-scannerをご覧ください。
なお、このツールの使用は、OSS Scanner利用規約に定められた条件に従うものとします。
オープンソースプロジェクトを登録するには、1つのディレクトリを追加するプルリクエストを作成してください:
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 内のメールアドレスは公開されます。セキュリティエイリアスなど、公開されても問題ないアドレスを使用してください。
暗号化されたメールレポートを受け取るには、アーマード形式の OpenPGP 公開鍵を追加してください。その場合、レポートは primary_contact にのみ送信されます。pgp は auto_ccs と併用できません:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
レポートの出力先を選ぶには、各チャネルが受け取る最低重大度を設定します: low、medium、high、critical、またはチャネルを無効にする none。省略したチャネルにはここに示すデフォルトが使用され、両方の最小値以上のレポートは両方のチャネルに送信されます。pgp はメールにのみ適用されるため、GitHub のレポートはあなたの鍵で暗号化されません:
output_format:
email:
min_severity: low
github_security_advisory: # GitHub private vulnerability reporting
min_severity: none
Dockerfile は、次の2か所のいずれか1か所に必ず用意してください:
dockerfile: にそのパスを設定します(.oss-scanner/Dockerfile のような場所を推奨します)。こちらが推奨される方法です。ここでプルリクエストを出さなくてもビルドを更新できるためです。または、project.yaml の隣に projects/<name>/Dockerfile として配置し、project.yaml に Dockerfile: キーを設定しません。リポジトリにファイルを追加したくない場合は、ここに置けば、スキャナはリポジトリ内のコピーとまったく同じようにビルドします。(脅威モデルも同じ仕組みです。リポジトリ内の場所を threat_model フィールドに設定するか、ここに projects/<name>/threat_model.md として配置してください。)
Dockerfile の目的は、環境をセットアップし、すべての依存関係をインストールし、プロジェクトをビルドすることです。初期のプロジェクトセットアップはネットワークアクセスが有効な状態で実行されますが、その後のセキュリティ監査はインターネットアクセスなしで実行されます。ビルドやテストに必要なものはすべて、初期の Dockerfile セットアップ中に取得する必要があります。ビルドしたイメージ内でテストが通ることを確認することを推奨します。
threat_model.md(任意ですが強く推奨します)ファイルを使うと、スキャナに意図するセキュリティ目標に関するドキュメントを提供できます。レポートの重大度をどのように評価するかについてのガイダンスを提供することが最も有用であることが分かっています(例: 認証後の SQLi を high と見なすか critical と見なすか? 実証されたエクスプロイトを伴わないバッファオーバーフローは high で上限とするか? 蓄積型 XSS はいつ medium、high、critical になるか?)。このファイルには、プロジェクトが何をするか、信頼できない入力がどこから入るか、どのコンポーネントが重要でどれがスコープ外か、レポートやパッチをどのような形にしてほしいか、その他重要または有用だと思うことを記載できます。
プルリクエストを開く前に、次の2つのコマンドを実行することを推奨します:
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 をご覧ください。