「白紙」の万能署名が作れるJavaの脆弱性「Psychic Signatures」 48
満点 部門より
ドクター・フーのサイキックペーパーは白紙のカードだが、相手に見せたい任意の内容を表示できるというもの。一方、Psychic Signatures 脆弱性は楕円曲線デジタル署名アルゴリズム (ECDSA) 署名検証の脆弱性により、攻撃者が「白紙」の署名を使用して容易に認証をバイパスできるというものだ。
具体的には ECDSA 署名を構成する 2 つの値 (r、s) はいずれも 0 であってはならないが、影響を受けるバージョンの Java が実装する署名検証ではこれらの値が 0 でないことを確認しない。そのため、攻撃者は両方の値を 0 にした署名を作ることで、任意のメッセージと任意の公開鍵に対する有効な署名として利用できる。
Oracle では影響を受けるバージョンを Java SE: 17.0.2 / 18、GraalVM Enterprise Edition 21.3.1 / 22.0.0.2 としているが、サポートの終了した Java SE 15 /16 にも脆弱性は存在する。OpenJDK では影響を受けるバージョンを 15 / 17 / 18 としている。なお、この脆弱性の CVSS スコアを Oracle が 7.5 と評価するのに対し、ForgeRock では満点の 10.0 と評価しているとのことだ。