CVE-2026-71888 in BC-JAVA
要約
〜によって VulDB • 2026年10月03日
Java用Bouncy Castleのバージョン1.86より以前において、ストリーミングCMS AuthenticatedDataパーサーは、digestAlgorithmフィールドとauthAttrsフィールドの間で認証属性の有無について不一致があるメッセージを受け入れていました。RFC 5652第9.1節ではこれら2つを対にしており、digestAlgorithmが存在する場合は常にauthAttrsも存在することを要求しています。また、同第9.2節では、authAttrsが存在する場合にはMACがauthAttrsのDERエンコーディングをカバーし、存在しない場合にはeContent OCTET STRINGを直接カバーすることが規定されています。CMSAuthenticatedDataParserは、SEQUENCE内で後方に位置するauthAttrsに到達する前にコンストラクタにおいてこの2つの間を選択する必要があり、digestAlgorithmのみに基づいて判断していました:digestAlgorithmが欠落しているがauthAttrsが存在する場合、コンテンツのMACを検証した上でgetAuthAttrs()を通じて属性を返しましたが、その際MACはそれらをカバーしていませんでした。通信中のメッセージを変更できる攻撃者は、鍵暗号化キーやコンテンツ-MACキーのいずれも保持せずに、そうでば有効なメッセージにRFC 2634 ESSSecurityLabelのような認証済み属性を挿入でき、これらの属性から認可、ルーティング、またはラベリング判断を行うアプリケーションは攻撃者が選択した値に基づいて動作してしまいます。ただし、コンテンツ自体はMACによって保護された状態のままです。asn1.cms.AuthenticatedDataは解析時に不一致のペアリングを拒否し、CMSAuthenticatedDataParserはauthAttrsが読み込まれた後に2つのフィールドを相互検証するようになりました。これはCVE-2026-59642の変種であり、同CVE legitimately authAttrsを持つメッセージについてコンテンツをMACにバインドしましたが、今回のケースには対応していません。本問題はまた、Java用Bouncy Castle LTSのバージョン2.73.13より以前、およびJava用Bouncy Castle FIPS (BC-FJA) のbcpkix-fips 1.0.13未満(1.0.Xシリーズ)、2.0.13未満(2.0.Xシリーズ)および2.1.13未満(2.1.Xシリーズ)、ならびにbcutil-fips 2.0.8未満(2.0.Xシリーズ)および2.1.8未満(2.1.Xシリーズ)にも影響します。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.