PHP セキュリティ アドバイザリ データベースは、さまざまな PHP プロジェクトおよびライブラリの既知のセキュリティ脆弱性を参照しています。このデータベースは、セキュリティ問題の主要な情報源として機能してはならず、参照されるソフトウェアに対して権限はありませんが、情報を一元管理して利便性と容易な利用を可能にします。
PHP セキュリティ アドバイザリ データベースは、パブリック ドメインにリリースされた無料の制限のないソフトウェアです。
手動チェック以外にアプリケーションの脆弱性をチェックするには、ローカル CLI ツールを使用する必要があります。
local-php-security-checker --path=/path/to/composer.lock
ヒント: Github を使用している場合は、PHP Security Checker Github Action を使用して、コードをプッシュするときに脆弱性を自動的にチェックできます。
セキュリティ アドバイザリの提供は、非常に簡単です。
新しいエントリを投稿するには、プル リクエストを送信するか、Github インターフェイス経由でファイルを直接作成します。
セキュリティ問題が存在するソフトウェアの Composer 名に基づいてディレクトリを作成します (たとえば、Symfony HttpFoundation コンポーネントの問題にはsymfony/http-foundation
を使用します)。
各セキュリティ問題は、CVE 識別子 (推奨) またはセキュリティ問題が発表された日付の後に増分が続くファイル (たとえば、 2012-12-12-1
) をファイルに保存する必要があります。
ファイルは YAML 形式であり、次のエントリが含まれている必要があります(例については既存のエントリを参照してください)。
title
: セキュリティ問題を短い言葉で説明するテキスト。
link
: 公式のセキュリティ問題の発表へのリンク (HTTP リンクよりも HTTPS リンクが優先されます)。
reference
: ソフトウェアを識別するための一意の参照 (サポートされているスキームはcomposer://
の後に Composer 識別子が続くものだけです)。
branches
: 影響を受けるブランチのハッシュ。名前はブランチ名 ( 2.0.x
など)、値は次のエントリを含むハッシュです。
time
: セキュリティ問題が修正された日時 (UTC)、または問題がまだ修正されていない場合は null (ほとんどの場合、次の形式で問題を修正したマージコミットの日付2012-08-27 19:17:44
) -- この情報は、プロジェクトが影響を受けるかどうかを判断するために使用されるため、できる限り正確である必要があります。
versions
: このブランチの影響を受けるバージョンを記述する制約の配列 (これは Composer で使用されるものと同じ形式です -- ['>=2.0.0', '<2.0.17']
)。
CVE 識別子がある場合は、それをcve
キーの下に追加します。
このプロジェクトのルートからphp -d memory_limit=-1 validator.php
実行して、ファイルが検証されていることを確認します。このスクリプトは、composer を介してインストールされるいくつかの依存関係を必要とするため、前にcomposer install
実行する必要があります。
影響を受けるコードの一部が別の Composer エントリを通じて利用できる場合 (メイン リポジトリの読み取り専用サブツリー分割がある場合など)、情報を複数のファイルに複製します。