今年11月24日以降、「Apache Log4j」という「ログ出力ライブラリ」に深刻な脆弱性が見つかり、早急に対策を取る必要があるとの注意喚起が、専門機関からなされ、また報道でも大きく取り上げられています。
ApacheLog4j の脆弱性(CVE-2021-44228)に関する注意喚起(内閣官房サイバーセキュリティ―センター)
この脆弱性は、ウェブシステムや各種ソフトウェアに広く影響が及ぶ可能性があり、対応の緊急性が極めて高いものとされています。
また、海外のセキュリティ企業や、日本の警察庁等も、実際に脆弱性の悪用を試みる通信を確認していると注意喚起しています。
しかし、技術を専門としていないと、この問題が自分たちにどれほど関係があり、脆弱性を悪用されると何が起こるのか、イメージしづらいこともあるのではないかと思います。
本コラムは、できる限り分かりやすく解説することで、幅広い組織・企業の方々に、自分たちが安全かどうか、システム担当部門やシステム委託業者等に、早急に確認していただけるようにお願いしたいという思いから執筆しています。
Javaを使っているウェブサイトやサービス、ソフトウェアを運用されている方は、本記事や専門機関の最新情報をもとに、バージョンの確認とアップデートをお願いいたします。
そもそも、「Apache Log4j」「ログ出力ライブラリ」と言われても、ピンとこない方も多いのではないかと思います。
通常、インターネットにつながった状態でウェブサービスを公開したりソフトウェア・製品を使ったりするとき、アクセスの履歴やプログラムの動作履歴を「ログ」として一定期間、記録・保存します。これは、プログラムに不具合が起こったときに原因を調査したり、不正なアクセスがなかったか事後的に調査できるようにするためです。
(※インターネットにつながっていないプログラムでも、「ログ」を記録することは一般的に行われています。)
「ログ」を記録・保存するには、何らかのソフトウェアが必要な訳ですが、「Java」というプログラミング言語でよく使われてきたライブラリ(ソフトウェア部品)が「Apache Log4j」です。
(もちろん、「Apache Log4j」以外の「ログ」出力ライブラリも存在します。)
「Java」というのは、プログラミング言語の一つで、インターネットにつながっているサービスやウェブサイト、データベースを使っているようなシステム、各種ソフトウェア等の背後で、技術的に複雑な仕組みを動かすために使われています。
その歴史は非常に古く、1990年代から使われており、かなりポピュラーなプログラミング言語ですので、とても幅広い組織・企業で使われているはずです。
書店のコンピューター書籍のコーナーに行くと、「Java」に関する本が数多く置いてあるのを見かけられると思います。
「Java」の活用範囲は非常に幅広いですが、例えば、
・ オンラインショッピング
・ チケット予約
・ オンラインバンキング
・ オンラインゲーム
等も、「Java」を使って実現することができます。これ以外にも、ウェブサイトが思い通りに動くのも、「Java」のお陰であることが多いです。
また、ウェブサービス以外にも、技術的に複雑な仕組みを実現するのに便利なため、様々なソフトウェアでも「Java」が使われていることがあります。
このため、世の中のウェブサイト・サービス・ソフトウェアは、それなりに高い確率で「Java」を使って作成されている可能性があります。
(※英語ですが、影響を受け得るシステムやソフトウェアについては、アメリカのサイバーセキュリティ・インフラストラクチャ・セキュリティ庁がまとめています。ただし、こちらのサイトに掲載されていなければ影響を受けないとは限らないため、最新の情報にご留意ください。)https://github.com/cisagov/log4j-affected-db
数多くのウェブサイト、サービスやソフトウェアでは、「Java」が使われていることが多く、その「ログ」を記録するために「Apache Log4j」がよく使われてきたことを説明してきました。具体的な範囲は定かではないですが、「あらゆるウェブサイト・サービス・ソフトウェア」が「Java」を使い、「Apache Log4j」を使っている可能性を否定できないほど、幅広く使われてきたものです。
そこでようやく本題ですが、「Apache Log4j」に脆弱性があるというのは、どういうことなのでしょうか。
先ほど説明したとおり、「Apache Log4j」は「ログ」を出力するライブラリ(ソフトウェア部品)です。インターネットにつながっているウェブサイト、サービスやソフトウェアは、外部からアクセスがあった際に、どんな内容のアクセスだったかを記録することが一般的です。
通常は、どんなアクセスが来ても、文字としてファイル等に保存するだけで終わります。
しかし、今回見つかった「Apache Log4j」の脆弱性では、特定の文字列が「ログ」に含まれた場合に、システムが自動的に外部と通信を行ってしまい、その外部から任意のコードを実行(RCE)できるようになっていました。
アクセスする側はアクセスの内容をある程度自由に変えられますので、実質、特定の文字列を含んだアクセスをするだけでも、脆弱性を悪用できるという、攻撃が極めて容易な脆弱性です。
「RCE」というのは、「Remote Code Execution」の略で、「遠隔から任意のコードを実行できる」という意味の用語です。
しかし、「遠隔から任意のコードを実行できる」と言われても、具体的に何が起こり得るのか、なかなかイメージがしにくいのではないかと思います。
ざっくり言うと、「リモートから好き勝手なことができる」こと、です。
例えば、「Apache Log4j」が動いている環境に機密情報があれば、その情報を外部に送るよう指示することもできます。情報漏洩ですね。
また、マルウェアに感染させることもできます。遠隔操作ウイルスに感染させて、感染したコンピュータを更に自由に操ることもできるようになります。
あるいは、いわゆる「踏み台」として、他の人に別の攻撃をする際に乗っ取られて使われてしまうこともあるかもしれません。
こうしたことが、古いバージョンの「Apache Log4j」を使っているだけで可能となってしまうリスクがある、というのが、今回の脆弱性の恐ろしさなのです。
既に、この脆弱性を悪用してマルウェアに感染させるような攻撃が観測されているとも報告されています。
ここまで「Apache Log4j」の脆弱性とそのリスクについて説明してきましたが、脆弱性を突いた攻撃が成立するには一定の条件(Apache Log4jのバージョン等)があります。
今回の脆弱性の影響を受ける範囲は、Apache Log4j 2.15.0より前の2系のバージョン及び、Apache Log4j 2.15.0の出荷候補版であるApache Log4j 2.15.0-rc1と言われています。
脆弱なバージョンのApache Log4jを含むJava製品を利用していないか、自組織のシステムを調査することが推奨されています。サーバーソフトウェアだけでなく、クライアントソフトウェアも影響を受ける恐れがあるため注意が必要です。多数のベンダー製品やクラウドサービスが影響を受けており、ベンダーによる影響の調査が完了していないものも多数あるため、自組織で使用している各製品の影響有無について、製品ベンダーや政府系機関等の情報収集も重要です。
Javaを使っているウェブサイトやサービス・ソフトウェアを運用している場合は、一度、組織や社内のシステム担当部門の方は、自分たちが適切な対策が取れているかどうか、改めて確認してみてください。また、そもそもそれらを使用しているかどうかが分からない場合には、システム委託業者等に確認してみて下さい。少しの労力が、将来の大きな被害を防止するのに役立ちます。ご協力、よろしくお願いします。
脆弱なバージョンを利用している場合、速やかに最新バージョンへアップデートすることが強く推奨されています。すでにJava向けログ出力ライブラリ「Apache Log4j」の更新バージョンが緊急リリースされています。最新バージョンへのアップデートをお願いします。
詳しくはIPA情報処理推進機構ホームページ や JPCERT/CCのホームページ 、The Apache Software Foundationでも公開されておりますので、最新の情報を確認してください。
警察庁 Javaライブラリ「Apache Log4j」の脆弱性(CVE-2021-44228)を標的とした攻撃の観測について 2021年12月14日
https://www.npa.go.jp/cyberpolice/important/2021/202112141.html
ページの先頭へ