30秒で判断
対応すべき人:
- HTTP::Daemon 6.17未満を使用しているPerlアプリケーション
send_file()にユーザー入力や外部からのデータを渡している
対応不要な人:
- HTTP::Daemon 6.17以降を使用している
- HTTP::Daemonを使用していない
send_file()を使用していない、または静的なパス文字列のみ渡している
確認コマンド:
perl -mHTTP::Daemon -e 'print $HTTP::Daemon::VERSION, "\n"'
# または
cpan -D HTTP::Daemon
概要
HTTP::Daemon(Perl)のsend_file()メソッドが、引数をPerlの2引数open()に渡してしまう設計上の脆弱性です(CVE-2026-8450、CVSS 9.1)。
Perlの2引数open()はファイルパス文字列に含まれる「マジックプレフィックス」を解釈します:
| cmd→ コマンドをパイプで実行cmd |→ コマンドの出力をHTTPレスポンスとして送信> path/>> path→ ファイルへの書き込み/追記
信頼されない入力(HTTPリクエスト由来のファイルパス等)をsend_file()に渡すと、デーモンプロセスの権限でOSコマンドが実行されます。読み取りパイプ形式では、コマンドの標準出力がHTTPレスポンスのボディとして返されます。
CVSSベクトル
| 項目 | 値 |
|---|---|
| スコア | 9.1 |
| 深刻度 | Critical |
| CWE | CWE-73(ファイル名または経路の外部制御)、CWE-78(OSコマンドインジェクション) |
| 攻撃元区分 | ネットワーク (AV:N) |
| 攻撃条件の複雑さ | 低 (AC:L) |
| 必要な特権レベル | 不要 (PR:N) |
| ユーザー関与 | 不要 (UI:N) |
| 機密性への影響 | 高 (C:H) |
| 完全性への影響 | 高 (I:H) |
| 可用性への影響 | 高 (A:H) |
影響を受けるソフトウェア
| 製品 | 影響バージョン | 修正バージョン |
|---|---|---|
| HTTP::Daemon(Perl) | 6.17未満 | 6.17以降 |
修正バージョンと回避策
推奨対応: HTTP::Daemon 6.17以降へアップデート
cpan install HTTP::Daemon
# または
cpanm HTTP::Daemon@6.17
コード修正(アップデートが困難な場合):
send_file()に渡すパスを3引数open()を使うよう修正するか、入力のホワイトリスト検証を実施してください。
関連リンク
データソース: NVD (NIST)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
