
登録されたオープンソースリポジトリを分離されたオフライン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内のメールアドレスは公開されます。セキュリティエイリアスなど、公開されても問題のないアドレスを使用してください。
レポートを暗号化して受け取るには、 armored形式のOpenPGP公開鍵を追加してください。レポートはprimary_contactのみに送信されます。pgpはauto_ccsと併用できません。
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Dockerfileは、以下のいずれか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を高または重大と見なすか?実証されたエクスプロイトを伴わないバッファオーバーフローは高までとするか?蓄積型XSSはいつ中、高、重大となるか?)。このファイルには、プロジェクトが何を行うか、信頼できない入力がどこから入るか、どのコンポーネントが重要でどれが対象外か、レポートやパッチをどのようにしてほしいか、その他重要または有用と思われることを記載することもできます。
プルリクエストを開く前に、以下の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もご覧ください。