各社のJava VMに砂場の枠が外れる脆弱性
タレコミ by jbeef
jbeef 曰く、
11月25日にBUGTRAQに流れた記事によると、 ポーランドのグループが、 Netscape、Microsoft、SunのそれぞれのJava VMに、 bytecode verifierのチェック漏れやJITコンパイラのバグなどが原因の セキュリティホールを発見したという。 Netscape 4.0〜4.8(Windows, Unix版)と Internet Explorer 4.0〜6.0では、 sandboxセキュリティ制約が崩れ、その結果、ローカルファイルの読み出しや、任意コマンドのローカル実行などの脅威がもたらされる。 Netscape 4.xでは、 JDBC関連のシステムクラスの実装ミスもあり、 合わせ技によって、 任意のネイティブコードの実行もできてしまうという。 SunのVMについては、発見者の報告では、 JDK 1.1〜1.4においてbytecode verifierのチェック漏れが見つかったが、 Netscape 6およびappletviewerではexploitに成功しなかったという。 しかし、Sunから12月12日付けで Sun Alert ID: 49304「Java VM Allows Constructors not to Call Other Constructors」が出ている。 発見者は9月にSun、Microsoft、Netscapeそれぞれにこれを伝えたが、 MicrosoftとNetscapeからはなんら返事がなかったという。bytecode verifierのチェック漏れはJavaが登場した当初からときどき発見されては修正されてきた (最近では2002年3月発表のものが最後だった)が、 具体的にどんな手順で攻撃されるかはほとんど公表されないできた。 そのため、高度な技術を持つものにしか攻撃できないとされ、 現実的な脅威は低めに見積もられることがあった。 しかし、 今回の発見者グループのサイトでは、今回のものと、 過去に話題となったが公表されなかったものについても、 具体的な方法を解説している。 こうした言語システムの設計、実装に携わっている者にとっては、 現実を知る上で参考になる資料となろう。 JITコンパイラのバグは、Netscape 4に採用されていたSymantec製のもの。 ある並びのbytecode列が誤ったコードに変換されるため、 指定した番地にジャンプさせることができてしまうという。
解決方法は、 Sun Alert ID: 49304によると、 JREを最新版(1.4.1_01以降、1.4.0_03以降、1.3.1_06以降、1.2.2_014以降)へアップグレードせよとのこと。1.1.x 系列の対策版はないらしい。 Netscape 4.xとInternet Explorerについては今のところ Javaをオフにして回避するしかない。 なお、日本のサンマイクロシステムズからは 1か月が経過した現在も告知が出ていない。 日本HPからは既に日本語訳が出ているので日本サンはそれを参考にしたらどうか。