30秒で判断
- 対応すべき人: Perl の DBI / DBD::DBM を利用し、接続属性(
dbm_type/dbm_mldbm)やDSNの一部に外部入力が影響し得るアプリを運用している - 対応不要な人: DBI を利用していない、1.653 以降を使用している、DBD::DBM を使わず接続属性を固定値で渡している
- 確認コマンド:
perl -MDBI -e 'print $DBI::VERSION'でバージョンを確認
概要
DBI は Perl のデータベース独立インターフェースです。本脆弱性では、DBD::DBM が接続属性 dbm_type と dbm_mldbm の値を検証せずに require に渡します。require はパス形式の文字列をリテラルなファイル名として扱い @INC を参照しないため、属性値がPerlに読み込ませるファイルそのものを選べてしまいます。
DBD::DBM が付与する MLDBM::Serializer:: プレフィックスは境界にならず(:: が / に書き換えられるだけ)、/ を含む値でシリアライザディレクトリの外へ辿れます。結果として、DSNの一部やバックエンド選択パラメータを通じて第三者が属性値に影響を与えられる場合、指定されたモジュールのファイルスコープのコードが実行される可能性があります。DBD::Gofer は接続属性をサーバー側へ転送し、DBI::ProxyServer はDSNが driver プレフィックスで始まるかしか確認しない点も注意が必要です。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 9.8(CRITICAL) |
| CWE | CWE-470(安全でないリフレクションによる制御されたコードの実行) |
| 攻撃の起点 | 外部入力に影響される接続属性 / DSN |
影響を受けるソフトウェア
| 製品 | ベンダー | バージョン |
|---|---|---|
| DBI (Perl) | perl5-dbi | 1.653 より前 |
修正バージョンと回避策
DBI 1.653 以降へアップデートしてください。アップデートまでの緩和策として、dbm_type / dbm_mldbm を含む接続属性やDSNに外部入力を混入させない、DBD::DBM を利用しない構成に切り替える、DBI::ProxyServer を信頼できないネットワークに公開しないことを推奨します。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
