「クリスマスイブまでにパッチしろ!」と米政府絶叫。
世界中のネットで使われているオープンソースのJavaロギングライブラリ「Log4j」の2.0ベータ9~2.14.1に深刻な脆弱性が見つかり、ゼロデイ攻撃のランサムウェア被害が続出! 「こんなヤバいのは見たことない」と米サイバーセキュリティ・インフラストラクチャ安全保障局(CISA)はガイダンスのページを設け、クリスマスイブまでに最新版にアップデートするよう警告を発しています。心当たりの人は急ごうね。
脆弱性発見の経緯
脆弱性の悪用は今月1日からはじまっていたようです。9日には、ハッカーが被害者のシステムを乗っ取って暗号通貨マイニングに利用したり、『マインクラフト』のプライベートサーバーをハックする被害が表面化し、上へ下への大騒ぎに発展。セキュリティの専門家が週末返上でパッチの開発に奔走しました。
オープンソースの限界?
Javaはリリースから25年目となり、成熟したレガシーな開発環境...というイメージですが、今も世界中のネットサービス、Webサイト、アプリケーションで使われています。上の図を見て笑ってしまいましたが、笑いごとじゃないよね。こんなに大事なものを善意のボランティアによる無償奉公に頼る、今のインターネットのいびつな構造(「オープンソースのサスティナビリティ問題」と呼ばれる)が浮き彫りになったかたちです。
Log4jって何?
ここまで騒ぎが大きくなるとLog4jのこと、ハックのメカニズムも気になりますよね。@entropyqueen_さんがわかりやすく解説しているので少し訳しておきますね。
技術にくわしくない人たちのために#log4jの解説をします。ネットのあちこちで不具合が出ていて、何がどうなってるのか、なぜ「${jndi:ldap」が話題なのかみんなも知りたいかと思うので。
Log4jというのは、プログラミング言語のJavaで使われる人気のロギングライブラリを指します。ロガーというのは、コンピュータ上のデータを保存するソフトウェアのこと。これを使って利用状況をモニタリングして、ソフトウェアが正常に動いているか判断し、万一のときにはデバッグに役立つ情報を集める、ということをしています。
ログに残る情報は膨大です。たとえばWebサイト閲覧中はIPアドレス、使用ブラウザ(firefox、chrome、edge...)、リクエスト日時、アクセスしたページなんかまで残っちゃう!
log4jのライブラリは多くのJavaのソフトウェアで使われていて、Java対応端末はおよそ30億台。途方もない数です。Log4jはWebサーバー、スマホ、スマート冷蔵庫、その他さまざまなシーンで利用されているんですね。
ロガーは本来、利用状況をハードドライブにただ書き込むか、外部のサーバーに転送してそこに保管します。ただ、Log4jの場合は書き込む前に若干の処理があって、そのひとつが${◯◯}という文字列を探してほかの情報に置き換える処理。たとえば${date}は当日の日付に置き換えたり(説明の便宜上用意したもの。実際そうなるかはわかりません)。
${jndi:という文字列があると、これも置き換えようとするんですが、この文字列に関しては、データの所在を明示するだけで、ネット上のコンピュータからデータを読み込むメカニズムも実行されてしまうんです。このデータには悪意のソフトウェアを指定することも可能。
するとlog4jを使ってるコンピュータ上で悪意のソフトウェアが自動的に実行され、ハッカーは遠隔から(ほぼ)なんでも実行できちゃうんですね。
これは本当に最悪。どのコンピュータをターゲットにするか知る必要すらないんです。Webサーバに使用ブラウザのログも残るってさっき書きましたけど、使用ブラウザを"${jndi: [...]"と指定するだけで、log4j利用端末なら脆弱性がトリガーされてしまいます。
現実にのシナリオに置き換えると…通りがかりの他人に無意識に家の鍵を渡すようなものですかね、はい。
被害は甚大
CheckPointによると、10日金曜時点では攻撃試行件数はわずか数千件でしたが、24時間で20万件、72時間で83万件に急増。変異のスピードもすごくて、24時間で60種以上も検出されているそうです。特に狙われているのは全世界の企業。心当たりのみなさまは今すぐパッチ、パッチですよ!
米サイバーセキュリティ・インフラストラクチャ安全保障局によるガイダンスのページはこちら!