
CVE-2026-96889 向けのオフライン Sharp / librsvg エビデンスチェッカー。Sharp と librsvg のバージョンおよびビルドのエビデンスを確認します。スタンドアロンの Python 製。JSON/CSV/HTML レポートに対応。エクスプロイトペイロードは含みません。
CVE-2026-96889 / GHSA-wq5f-xc86-pv6w(Sharp 経由で使用される librsvg のメモリ脆弱性)向けのオフライン証拠チェッカーです。報告されたバージョン、来歴、設定を分類するものであり、稼働中のシステムを検査するものではありません。
このチェッカーは、選択されたネイティブライブラリ、報告されたバージョン、来歴、プラットフォーム、libc、SVG 入力パス、およびハードニングを個別に扱います。Sharp のインポート、アプリケーションの実行、画像のデコード、プローブの送信、到達可能性のテスト、侵害の検出は行いません。すべての結果には exploitability: not_tested が保持されます。
結果は提供された証拠を表すものであり、検証済みの実行時状態ではありません。チェッカーは、評価を許可されている資産にのみ使用し、実際のインベントリやレポートはバージョン管理の外に保管してください。
python3 またはバージョン付きの実行ファイルを使用してください。python --version が 3.10 以降を報告する必要があります。sharp_rsvg_rce_check.py。パッケージ、Node.js、付属ファイル、ネットワークアクセスは不要です。python sharp_rsvg_rce_check.py --sharp-version 0.35.4 --library-source bundled --sharp-build-source upstream
python sharp_rsvg_rce_check.py --sharp-version 0.35.5 --library-source bundled --sharp-build-source upstream
python sharp_rsvg_rce_check.py --library-source global --librsvg-version 2.63.2 --librsvg-build-source upstream
python sharp_rsvg_rce_check.py --inventory examples/inventory.json --format json
python sharp_rsvg_rce_check.py --inventory examples/inventory.json --format html --output report.html
以下の最初の2つのコマンドは、公式のSharpバンドルとその報告された修正バージョンを評価し、3番目は独立して報告されたグローバルlibrsvgを、最後の2つは合成インベントリを評価します。examples/inventory.json は合成データです。--output を指定しない場合、レポートは標準出力に出力されます(デフォルトはJSON)。
合成サンプルレポートを開く。データはサンプルのみです。これは実際の評価ではありません。プレビュー画像はそのサンプルのスクリーンショットであり、実際のシステムからの出力ではありません。
完全なオプション一覧を表示するには python sharp_rsvg_rce_check.py --help を実行してください。インベントリ、少なくとも1つの報告バージョン、または明示的なアダプタファイルを指定してください:
--inventory FILE、制限付きのスキーマv1 JSONインベントリ。アセット単位のオプションとは併用できません。--sharp-version、--librsvg-version、--library-source、--platform、--libc、--node-pie、--svg-decoder、--untrusted-svg などのアセット単位のオプションを伴う報告バージョン。--sharp-version と --librsvg-version は繰り返し指定可能で、競合する観測結果はマージされずに保持されます。--evidence-root も必要です(ローカルメタデータとソースアダプタ を参照)。ディレクトリが暗黙的にスキャンされることはありません。フィールド値、制限、インベントリ形式については、リファレンス および インベントリスキーマ を参照してください。
--library-source bundled は、デプロイされたプロセスが公式のSharpバンドルを使用していると報告されていることを意味します。--sharp-build-source upstream はオペレータによる主張であり、検証済みの来歴ではありません。--librsvg-version、--librsvg-build-source)とともに --library-source global を使用してください。| ステータス | 意味 |
|---|---|
unknown | 選択、正確なバージョン、来歴、またはサポートされるルールの適用範囲によって、選択されたコンポーネントのパッチ状態を確定できません。 |
potentially_affected | 報告された公式Sharpバンドルが修正バージョン未満です。ランタイム条件は別途扱われ、これは悪用可能性を確認するものではありません。 |
precondition_present | その影響を受けるバンドルとオペレータが報告した条件が、文書化されたRCEの可能性がある条件に一致します。実際の検証は行われていません。 |
mitigated_configuration | 影響を受けるバンドルが記録されたまま、オペレータが有効なSVGブロックまたはNode PIEを報告しています。これはパッチ済みまたは安全な結果ではありません。 |
fixed_version_reported | 選択されたコンポーネントが、レビュー済みの修復しきい値を満たしています。これはデプロイされたバイナリやパッチセットを証明するものではありません。 |
選択されたコンポーネントのバージョン評価は、そのプラットフォーム、前提条件、緩和の各次元とは別です。fixed_version_reported は報告バージョンに基づく結果であり、検証済みのデプロイ済みパッチでも安全保証でもなく、potentially_affected は悪用可能性が確認されたものではありません。グローバルな結果は、インストールされたSharpパッケージではなく、独立して提供されたネイティブライブラリを分類します。
libcまたはPIEが欠落している場合は、前提条件の次元では unknown のままです。非glibcプラットフォームや、信頼できない入力経路が存在しないという報告は、根本的なメモリバグを解消するものではありません。PIEは文書化されたRCE条件に対処しますが、他のメモリ破壊の影響は残る可能性があります。
運用上の失敗(終了コード2)は、評価結果とは区別されます。
| 終了コード | 意味 |
|---|---|
0 | 完了し、有効なゲートに一致しなかった。不明な証拠はデフォルトでは失敗とみなされない。 |
1 | --fail-on-finding が影響を受けるバージョンに一致した(mitigated_configuration を含む)。パッチ適用には依然としてレビューが必要なため。または --fail-on-unknown が不明なバージョン評価、もしくは影響を受けるバージョンにおける未解決の条件に一致した。2つのゲートは独立している。 |
2 | 引数、入力、または出力のエラー、ハードリミット、もしくはスキーマ検証の失敗。 |
130 | 中断された。レポートを書き込める場合、完了したアセットは complete=false として保持される。 |
完全なレポートが公開された後の中断は、そのレポートを保持し、終了コード 130 で終了する。中断によりファイル公開の成否が不確定になった場合、チェッカーは再試行せずに終了コード 130 で終了する。診断情報は公開が成功したかどうかを確定できないため、再試行する前に出力を確認すること。stdout への公開が開始された後は、中断により部分的なドキュメントが残る可能性があり、2つ目のレポートは追記されない。
メンテナーアドバイザリ と GitHub アドバイザリレコード は 2026-10-24 にレビューされた。
| 証拠 | 実装された比較 |
|---|---|
| 公式 Sharp バンドル | 0.35.5 未満の安定版 0.x は影響を受ける可能性がある。0.35.x 内の 0.35.5+ は報告された修正である。将来のリリースラインはこのスナップショットでは不明のままである。 |
| グローバル librsvg | 2.63.x 内の独立した上流の 2.63.2+ が報告された修復である。それ以前のバージョンはベンダーレビューが必要な不明のままであり、アドバイザリは修正を名指しするが、ネイティブライブラリの影響範囲の下限を別途示していない。 |
| ベンダー/カスタム/不明なビルド来歴 | 不明。上流のパッケージ番号はバックポートやカスタムパッチセットを立証しない。 |
有効な VipsForeignLoadSvg ブロック | 別個のデコーダ緩和の主張。 |
| PIE でコンパイルされた Node 実行ファイル | 別個の RCE 緩和の主張であり、ライブラリのパッチではない。 |
不正な形式、矛盾する、修飾された、プレリリース、および対象外の将来バージョンは不明のままである。矛盾する Sharp/ネイティブライブラリの観測結果も不明のままである。埋め込みスナップショットにはアップデータがなく、実行時評価がルール更新を取得することは決してない。修復については現在のベンダーガイダンスを参照すること。ルールの来歴については Methodology を参照。
python sharp_rsvg_rce_check.py --npm-lock examples/package-lock.example.json --evidence-root examples
python sharp_rsvg_rce_check.py --source examples/source.example.js --evidence-root examples --format html
python sharp_rsvg_rce_check.py --node-elf path/to/node --evidence-root path/to
python sharp_rsvg_rce_check.py --sbom path/to/bom.json --evidence-root path/to
反復可能な --npm-lock、--sbom、--node-elf、--source オプションには --evidence-root が必要です。選択したファイルはそのディレクトリ内で解決される必要があり、レポート内のパスは相対パスになります。これらは既存のインベントリやバージョン入力と併用できますが、別個に生成される adapter-* アセットレコードを生成します。生成される識別子は、提供されたインベントリ ID と衝突してはなりません。ディレクトリ検索、パッケージマネージャ操作、アプリケーションのインポート、ネイティブ実行、イメージデコードは行われません。
すべてのアダプタ結果は unknown のままで、悪用可能性は not_tested です。メタデータからは、デプロイされたネイティブライブラリの選択やパブリッシャーのパッチ来歴を特定できません。メタデータがオペレータの前提条件を埋めたり、別個のバージョン評価を変更したり、有効な緩和策を確立したりすることは決してありません。既存のスキーマ 1.0 の証拠契約は、これらの観測をインベントリ/ソース証拠およびロケーションとして扱います。JSON、CSV、HTML は同じ検証済みレコードを使用します。