Java言語ライブラリ Log4j のヤバい脆弱性

プロジェクトオーガナイザの吉田聖書よしだみふみです。

12月11日にJPCERT/CCが、Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起を発表しました。

Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起

この話題についてJPCERT/CCが発表したのは11日ですが、Twitterでは10日にはすでにかなりの騒ぎになっていました。Log4jというのはオープンソースのログ記録ライブラリであり、Java言語の特にServletでログを記録するには事実上Log4j一択でしたので、かなり影響範囲は広いと思います。

この脆弱性については「CVE-2021-44228」というIDで管理されており、既にライブラリの方は13日にセキュリティ対策されたバージョン2.16.0が公開されています。事実上ライブラリを入れ替えるのが不可能という場合でも、VMの起動オプションだったりクラスパスを変更することで回避する方法が記載されています。

尚、ライブラリの最新版は以下の Apache Log4j 2 の公式サイトをご確認ください。
https://logging.apache.org/log4j/2.x/index.html


※ この記事は、先日公開した以下の音声コンテンツを基に編集したものです。


さて、それでは本件がどういった脆弱性なのかということですが、簡単に言うと「ログとして記録された文字列が特定の条件を満たすとサーバ上で任意のコードが実行できてしまう」というものです。仮にチャットのメッセージをログに記録していたとすると、チャットで悪意のある文字列を送信すればシステムにダメージを与えることができるということになります。これはかなり深刻な事態です。

Log4jにはLookupと呼ばれる機能があって、それを悪用できるということなんですが、この機能は何のためにあるのか不明です。エンジニアの間でもそういった疑問が飛び交っているという報道もありました。私がバリバリJava言語で開発していたころはまだLog4jのバージョン1系だったと思いますので、Lookup機能の存在を知りませんでした。1系のバージョンは(もうEOLを迎えていますが)、Lookup機能が含まれていないので影響は受けないと書かれています。個人が発信しているサイトによっては1系でも影響ありと書かれているところもあるので、念のため今後公開される情報をウォッチしておく必要はあろうかと思います。

こういうセキュリティのニュースを聞くと、オープンソースかどうかにかかわらず、外部のライブラリやコンポーネントを利用することのリスクを感じます。例えばLog4jだったら、Log4jを直接呼び出すのではなく、ラッパークラスを作って間接的にLog4jを呼び出して、こういったセキュリティのインシデントがあった場合に、影響範囲の調査やライブラリの入れ替えにかかる工数を減らすような工夫が必要なのではないかと思います。

ただ、どんなライブラリでも無条件にラッパークラスを作れば良いということでも無くて、難しいケースとしては基底クラスを継承して使うようなライブラリとか、あるいはインタフェースが提供されてそれを実装しなければいけないライブラリは正直難しいかと思いますが、Apache Commonsのような汎用的な共通ライブラリであれば、ラッパークラスを作る意味はあるかなと思います。

そこまでするのかと思われるかもしれないですが、例えばある機能をライブラリを使って実装していましたと。最初は想定していなかったけれども、処理によってはそのライブラリが使えないケースが見つかった場合、条件分岐するような対応をすることになると思いますが、そのライブラリを使っている個所をすべて洗い出して条件分岐を入れていくというような対応をするのは現実的ではありません。でもラッパークラスを噛ませていれば、少なくともライブラリを直接呼び出しているのはそのラッパークラスだけになりますから、コードの変更そのものは軽微で済みます。

なかなかこういうインシデントが発生しないと現場ではそこまで気が回らないかもしれませんが、逆にこういうインシデントをきっかけにして、そういったメンテナンスコストが低くなるようなプログラム設計を取り入れていくことも検討する価値があるのではないでしょうか。



関連記事

プロマネの右腕

クロスイデアでは、新サービス・新ビジネスの 立上げや計画を中心に
プロジェクトマネジメントの支援を行っています。

新サービスの企画を任されたけど どう進めていいか悩んでいる担当者、
部下に新しい企画を任せたけど このままで大丈夫か不安な管理職の方、
以下のサイトをご参照ください。
https://www.crossidea.co.jp/services/right-hand-pmo.html

YouTubeにて動画配信中!

プロジェクトマネジメントのノウハウを
YouTubeで配信しています。
ブログと併せてご活用ください。

Comments are closed.