見出し画像

本当に大丈夫?今更ながらApache Log4jの脆弱性について再警鐘

巷で話題となっている Apache Log4jの脆弱性(CVE-2021-44228)についてです。
世界中のソフトウェアベンダーやサービスプロバイダを震撼させていると言われるほどの深刻なもので、メディアを中心にかなり話題になっているので、公表から3週間ほど経っているので「今更その話か。聞き飽きたよ。」という方も多いでしょう。

今更感が強いLog4jの話をブログで書こうと思ったのか。
システムへの影響の有無について、誤った判断をさせてしまう可能性があると感じているからです。
詳しい知識を持っている方からしたら「そんな低レベルな話か」と思われてしまうような話なのですが、すべてのベンダー・技術者が必ずしも正確な知識を把握しているとは限りません。ITゼネコンと揶揄される多重下請け構造の中で下請けに丸投げしてしまう体制の中では、まさかと思うような低レベルな判断をされてしまうことは十分にあり得ます。

誤った判断により、本来対応すべきシステムが対応されないままになってしまうことはとても危険です。
そのため、「本当に大丈夫ですか?担当者に任せきりにしてないですか?」と改めて警鐘を促したいと考えています。

事例(フィクション)の話

話を理解してもらいやすくするためにフィクションですが事例の話をします。フィクションとは言え、近い話はあったので全くあり得ない話ではありません。

自分が担当しているシステムをITベンダーに運用保守を委託しているという状況を思い浮かべて読んでください。

【システム構築・運用を委託しているITベンダーとのやり取り】
私「Log4j 話題になってるけど、うちのシステム大丈夫?」
ITベンダー「Log4j使ってないから大丈夫です。」

【システムの基盤となるパッケージソフトウェア開発元とのやり取り】
開発元「Apache Log4j のLookup 機能を使用しておりませんので、本脆弱性の影響を受けることはありません。」
私「『Apache Log4j のLookup 機能を使用しておりません』とはどういう意味?」
開発元「Log4jは使用していますが、Lookup機能のあるクラスファイル(JNDILookup)について、クラスパスには記載しておりません。」
私「IPAが示している回避策『JndiLookup クラスをクラスパスから削除する』は『log4j-coreのjarファイルからJndiLookup.classを削除』ってことですよね?」
開発元「・・・」

【再度、システム構築・運用を委託しているITベンダーとのやり取り】
私「Log4j 使ってないって言ってたけど、パッケージ開発元は使ってるって言ってるんだけど?」
ITベンダー「・・・」

事例の検証

なぜ、このような誤った判断がされてしまう可能性があるのか?
原因は2つほど考えられます。

原因1:システム全体でLog4jを使っているかどうかの確認をしていない。

例えば、プログラマに「Log4jを使っている」と聞けば、「(私は)使っていません。」と答えてしまうかもしれません。Log4jは自分たちで開発しているプログラム以外でも採用しているミドルウェアやパッケージソフトで使われている可能性があります。

原因2:脆弱性の影響有無の判断基準について誤った認識をしている。

本脆弱性の情報を集めていくと、「Log4j が持つLookup 機能に脆弱性が含まれている」ことが分かります。(脆弱性に関する知識が十分でないと)人によってはこのことを「じゃあ、Lookup 機能を使ってなければいいんだね」と受け止めてしまう可能性があります。専門家にとっては当たり前の話ですが、「脆弱性は、その機能を使っていなければいい」というものではありません。自分の身体に癌があるのに「生きるのに(身体を動かすのに)その癌は使っていないから大丈夫」と言っているのと同じことです。自分では使っていなくても、その癌(脆弱性)が存在すれば攻撃者はその癌(脆弱性)を使って攻撃してきます。なので、対策をするには癌(脆弱性)自体を取り除かないといけないのです。

対策:システムを構成している全サーバのファイルを検索して、Log4jのライブラリ(log4j-coreのjarファイル)が存在しないことを確認する。

この誤った判断を避けるための対策は一つです。

Log4jのライブラリ(log4j-coreのjarファイル)が存在しなければ、システム内に脆弱性(癌)が存在しないことの確実な証明になります。
ちなみにlog4jを構成するモジュールのうち、log4j-apiのjar ファイルのみを使用している場合は脆弱性の影響を受けないようです。問題のあるLookup 機能は log4j-coreのjar に含まれていて、これを一緒に使用している場合に問題が出てくるようです。

Note that only the log4j-core JAR file is impacted by this vulnerability. Applications using only the log4j-api JAR file without the log4j-core JAR file are not impacted by this vulnerability.

https://logging.apache.org/log4j/2.x/security.html

あなたのシステムは本当に大丈夫?

もし、あなたがLog4jの影響について誰かに確認を依頼して「影響ないです」と回答が来ているけれど、上記の対策に記載したような確証が取れていないのであればぜひ再確認をお勧めします。

これを読んでいるあなたがITベンダーにシステムを委託している顧客の立場であれば、そのITベンダーに対して再確認してください。
ITベンダー内でプロジェクトを管理しているリーダー(プロジェクトマネージャーなど)の立場であれば、作業を依頼している担当者に対して再確認してください。

「餅は餅屋に」は分からなくありませんが、過信(丸投げ)してはいけません。自分の身は自分で守りましょう。

この記事が気に入ったらサポートをしてみませんか?