SAML認証をRubyで実装する際によく使われるライブラリ「ruby-saml」に、認証バイパスが可能となる深刻な脆弱性が2件(CVE-2025-66567、CVE-2025-66568)見つかりました。
影響を受けるバージョン
-
RubyGems パッケージ:ruby-saml
-
影響を受けるバージョン:1.12.4を含む 1.18.0 未満のバージョン
いずれの脆弱性もCVSS 9.3〜10相当のクリティカル判定で、攻撃者が正規の資格情報を持たずにユーザーになりすませるおそれがあります。
CVE-2025-66567の概要
CVE-2025-66567は、ruby-samlが内部で使っている2つのXMLパーサ
-
ReXML
-
Nokogiri
が、同じXMLでも異なる構造として解釈してしまう「parser differential」に起因します。
もともとこの部分は、過去の脆弱性 CVE-2025-25292 を修正するために手が入っていましたが、その修正が不十分だったことが分かりました。
CVE-2025-66568の概要
Nokogiriが内部で利用する libxml2 のカノニカライゼーション(canonicalization)処理の問題に起因します。
カノニカライゼーションとはSAML署名では、XMLドキュメントを一度「標準化(canonicalization)」してからダイジェストや署名を計算します。
これは、「同じ内容なのに改行や属性順の違いでハッシュ値が変わってしまう」問題を避けるための仕組みです。
libxml2のカノニカライゼーションAPIに不正なXMLを渡すと、本来はエラーになるべきところで、空文字列 (“”) を返してしまうケースがあります。
ruby-saml側はこの「空文字列返却」をエラーとして扱わず、「正しく正規化された」とみなして空文字列に対してDigestValue(ハッシュ)を計算してしまいます。








