概要
PHP PDF 生成ライブラリ PhpWeasyPrint(pontedilana/php-weasyprint)のバージョン 2.6.0 未満において、PHAR ストリームラッパーを利用したデシリアライゼーションによるリモートコード実行(RCE)が可能な脆弱性が確認されました。
本ライブラリは出力ファイル名に対して phar:// ストリームラッパーをブラックリスト方式でチェックしていますが、このチェックは大文字・小文字を区別します。PHP のストリームラッパーは大文字・小文字を区別しないため、PHAR://、Phar:// などの変形で検証をバイパスできます。バイパスされたパスが file_exists() で評価される際、PHP 7(PHP 7.4+ をサポート)では細工された PHAR アーカイブのメタデータがデシリアライズされ、リモートコード実行につながります。
本脆弱性は CVE-2023-28115(KnpLabs/snappy の同種問題)のパッチバイパスです。
CVSSベクトル
| 指標 | 値 |
|---|---|
| 攻撃ベクトル(AV) | ネットワーク (N) |
| 攻撃複雑度(AC) | 高 (H) |
| 必要権限(PR) | 不要 (N) |
| ユーザー操作(UI) | 不要 (N) |
| スコープ(S) | 変更なし (U) |
| 機密性(C) | 高 (H) |
| 完全性(I) | 高 (H) |
| 可用性(A) | 高 (H) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| php-weasyprint | pontedilana | < 2.6.0 |
修正バージョンと回避策
修正バージョン: php-weasyprint 2.6.0
推奨対応:
- php-weasyprint を 2.6.0 以降へ更新する
- 出力ファイル名に外部入力を使用している場合は、入力値を厳密に検証する
- PHP 8.0 以降への移行も脅威軽減の一手段となる(PHP 7 の
phar://デシリアライゼーション挙動に依存しているため)
関連リンク
データソース: NVD (NIST), GitHub Advisory Database
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
