本記事は2021年12月28日(米国時間)に公開した英語ブログNew Log4j 2.17.1 fixes CVE-2021-44832 remote code execution but it’s not as bad as it soundsの日本語版です。
事前の予測通り、2021年12月28日19時35分頃(GTM/グリニッジ標準時)、ロギングライブラリLog4jに影響を与える別のセキュリティ脆弱性がCVE-2021-44832として公表されました。
この新しいセキュリティ脆弱性 CVE-2021-44832 は、これまで修正されたと考えられていた 2.17.0 までのバージョンに影響します。この脆弱性は、Log4j の 1.x ブランチに影響を与えた CVE-2021-4104 と性質が似ています。
#CVE-2021-44832の影響
もし、Log4jの最新の修正バージョンに速やかにアップグレードできるのであれば、そうすべきです。とはいえ、この特定の CVE-2021-44832 脆弱性は、CVSS スコアが中程度の 6.6 であり、攻撃者が悪用するためにはかなり高い事前条件を必要とすることを指摘しておきたいと思います。
CVE-2021-44832は、Log4j 2.17.0 (およびそれ以前のバージョン) に、攻撃者がロギング設定ファイルの内容を制御、変更し、リモート URI データソースを指して、任意の Java コードをロードできる場合、コード実行の脆弱性があると判断されます。
2.17.1 での修正と JVM 互換の旧バージョンへのバックポートのいずれも、設定ファイルの JNDI データソースが Java プロトコルのみを使用するように制限され、リモートネットワーク呼び出しが行われないようになり、この脆弱性が軽減されました。
#CVE-2021-44832を修正するために直ちに行うべき手順
Log4j チームは、このセキュリティ脆弱性に対する修正プログラムを公開しました。
- Java 8 以降をお使いの場合は、Log4j 2.17.1 にアップグレードしてください
- Java 7 用の 2.12.x ブランチを使用している場合、Log4j 2.12.4 にアップグレードしてください
- Java 6 用の 2.3.x ブランチを使用している場合、Log4j 2.3.2 にアップグレードしてください
#早々に流出した一連のLog4j脆弱性
今回の脆弱性の公開は、ますます憂慮すべきLog4jにおける無責任な公開の傾向の影響を受けたもので、メンテナンスをする人たちがが適切に問題を修正して新しいリリースを公開する前に、セキュリティ研究者が公開した脆弱性の詳細を漏らしてしまいました。
この問題は、最初の Log4j RCE から始まっており、研究者は、公式公開の数時間前に、Twitter や GitHub で脆弱性の詳細や概念実証までリークしました(タイムラインを参照)。今回も、公式発表の数時間前に、この脆弱性を発見したと主張するセキュリティ研究者によって、その存在がTwitterでリークされました。
どちらのケースでも、情報の漏洩は、おそらく悪意はないものの、Apacheのためにリリースを急がせることにつながったようです(新しいリリースにさらなる脆弱性やバグがある可能性を残すことになります)。さらにこの特定の例では、多くの組織が長期休暇を取るために、必要でも問題を迅速にトリアージして修正することができない時期にあたるため、選択肢があれば、Apacheはリリースを急ぐことを選ばなかっただろうと推測されます。
オープンソースのセキュリティは、世界全体にとってますます重要になってきており、責任ある情報開示の実践は、私たちのコミュニティが継続的にセキュリティを確保するための基礎となります。私たちは、Log4jやその他のオープンソースパッケージにおける将来の情報開示が、今後より安全に処理されることを望んでいます。
弊社Snykは、今後も責任ある情報開示に努めるとともに、新たな脅威の発生に注意を払い、ユーザーやオープンソース・コミュニティ全体に向けて、対応に役立つ情報を迅速に提供していきます。
#最後に
Snykでは日本語の公式TwitterとFacebookページを開設しました。ぜひフォローをして最新情報をご確認ください。