CVE-2026-18568 in XML::Sig情報

要約

〜によって VulDB • 2026年08月03日

Perl用XML::Sigのバージョン0.29から0.72未満において、すべての署名がスキップされた場合にverify関数がtrueを返すため、署名検証のバイパスが可能になる。

lib/XML/Sig.pm内のverifyは`//dsig:Signature`要素数を`$numsigs`にカウントし、それらに対して反復処理を行う。しかし、暗号学的なチェック(ダイジェストやキーの確認)が実行される前に`next`に進む2つのパスが存在する。1つ目は、`SignedInfo/Reference/@URI`が解決先要素を持たず、かつ`$numsigs`が1より大きい場合である。2つ目は、`id_attr`が設定されている場合に、参照先のIDと一致しないリファレンスがある場合である。ループはどのチェックが行われたかを記録しないため、すべての署名がこのいずれかのパスを通ると、制御は検証を終了させる無条件の`return 1`に到達する。Reference URIで指定されたIDを保持する要素が存在しないSignature要素が2つあれば十分であり、そのような要素が1つ存在し、かつ`id_attr`が設定されていても同様である。

信頼できないXMLをverify関数に渡す呼び出し元は、ダイジェストも署名値もチェックされていない文書に対してtrueの戻り値を受け取ることがある。`cert`または`cert_text`によるトラストアンカーを設定しても、キーチェックが行われないためこの状況は変わらない。バージョン0.28以前のものはXML::XPathベースのverifyを使用しており、そのようなスキップ処理がないため影響を受けない。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

CPANSec

予約する

2026年08月02日

モデレーション

承諾済み

エントリ

VDB-385606

EPSS

0.00000

アクティビティ

低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!