ニュース

「Java」に署名検証がフリーパスになってしまう危険な脆弱性 ~影響は計り知れず

2022年4月の「Critical Patch Update」で対策済み、最新版への更新を

「Java」における「サイキックペーパー」脆弱性に対し注意を喚起するブログ

 先日の「Critical Patch Update」で修正された「Java」の脆弱性「CVE-2022-21449」は、悪用された場合の影響が大きいようだ。ECDSA(楕円曲線デジタル署名アルゴリズム)の実装に欠陥があり、不正なデジタル署名の検証が誤って成功してしまう。ForgeRock社のセキュリティ研究家は、SFテレビドラマ『ドクター・フー』(Doctor Who)に登場する架空の道具「サイキックペーパー」(望むままの内容を表示できる白紙。フリーパスの身分証明書として利用できる)になぞらえて、その危険性を指摘している。

 それによると、この脆弱性は「Java 15」でEC(楕円曲線)コードをC++言語からJava言語に書き換える際に混入したという。このコード書き換えはメモリの安全性と保守性を向上させる目的で行われたが、ECDSA署名を構成する2つの値(r、s)のいずれかがゼロであるケースをチェックする処理が抜けていた。そのため、検証をパスできる不正な署名を作成できてしまう。

検証をパスできる不正な署名を作成できてしまう

 Oracleはこの脆弱性の「CVSS v3」基本値を「7.5」と評価しているが、ECDSAはデジタルコンテンツに署名に幅広く利用されているため、その影響を計るのは難しい。ForgeRock社による評価は「10.0」だ。

 「CVE-2022-21449」は2021年11月に発見・報告され、2022年4月の「Critical Patch Update」で修正が確認された。以下の最新バージョンへの更新が推奨されている。

  • Java SE 18.0.1
  • Java SE 17.0.3
  • Java SE 11.0.15
  • JDK 8u331(Update 331)

 前述の理由で「Java 15」より前のバージョンはこの脆弱性の影響を受けないと見られているが、ドキュメントによっては古いバージョンも影響範囲とされており、情報が錯綜している。更新が可能なのであれば、古いバージョンに関しても対応をお勧めしたい。