2022.8.2 /

枯れた技術に見つかった致命的脆弱性「Apache Log4j」とは

はじめに

2021年12月頃に報告された「Apache Log4j」というオープンソースライブラリの脆弱性は、非常に広範かつ極めて危険性の高い機器として、JPCERTでも注意喚起されています。

なぜ「Apache Log4j」がこれほど危険性が高いと判断されているのか、放置することでどのような影響があるのかについて説明します。

 

「Apache Log4j」とはどんなものか

「Apache Log4j」はJavaというプログラミング言語でWebサーバーなどのログ出力などに使用されるオープンソースのライブラリです。

主な利用法としては、Webサービスの開発者などがサーバー上で発生したイベントを調査や、ログインに失敗した際の原因をログから判断してトラブルシューティングなどがあります。

非常に多くのサーバーで使用されているライブラリであり、アメリカのセキュリティ会社「CyberReason」のブログでは「世界のWebサーバーの3分の1で使われている」と言われています。

このように非常に有用な利用ができ、世界中で使用されているライブラリですが、今回見つかった脆弱性は、Log4jのログとして記録された文字列の一部を変数として置換できる機能を悪用したもので、様々な致命的な攻撃ができてしまう危険性があります。

 

なぜ危険なのか

このLog4jの脆弱性「Log4Shell」を悪用した攻撃が世界中で見つかっており、内閣サイバーセキュリティセンターなどがすぐに対策を取るよう呼びかけています。

なぜそれほどまでに危険なのでしょうか?

 

影響範囲が広い

この脆弱性は特にクラウドサービスなど広範なサービスに影響することから、下記のようなサービスを提供している各社が今回の脆弱性に関する影響の有無やその対応状況について公表しています。

特にAWSでは、実際にアクセスキー情報を盗み出すような攻撃が観測されています。

 

  • マイクロソフト
  • Google
  • アマゾン・ウェブ・サービス(AWS)
  • シスコ(CISCO)
  • IBM
  • Intel
  • MINECRAFT
  • Oracle
  • サイボウズ

 

危険度が高い

Apache Log4jに見つかった「CVE-2021-44228」と名づけられた深刻な脆弱性は、ログとして記録された文字列から、一部の文字列を変数として置きかえる機能「JNDI Lookup」を悪用した「Log4Shell」というものです。

悪意のある文字列を含んだURLをログに記録し、そのURLにアクセスさせてマルウェアや悪意のあるJavaのコードをダウンロード・実行することで、サーバー上のデータ改ざんや盗み出し、破壊など様々なことができてしまう可能性があります。

このことから、脆弱性の深刻度を表す指標であるCVSSで、最も深刻度の高い10.0と判断されています。

「Kinsing」というコインマイナーや、「Mirai」というボットネットなどのマルウェアに感染させる悪用の例が実際に報告されています。

 

オープンソースソフトウェアのセキュリティ対策が不十分

今回のApacheやJavaは誰でも利用でき、ソースコードも公開されているオープンソースソフトウェア(OSS)と呼ばれるものです。

無償で利用できることも多く非常に有用なものですが、OSSを活用してサービスを開発する場合、発見された脆弱性に対してサービス開発者が対応する必要があります。

ただ、無償で使用していることでそのセキュリティに対しても危機意識が少なく、自社が開発しているサービスに使用しているOSSを把握していないケースも多くあるとされています。

また業務に特化したシステムはOSやミドルウェア、各種ライブラリなど多岐に渡っており、それぞれのセキュリティパッチの適用は容易ではなく、そもそも適切なIT管理者やセキュリティ担当がいない場合もあります。

そのため危険を把握するタイミングや脆弱性への対策が遅れて、被害が広がっている可能性があります。

 

攻撃の高度化が観測されている

いくつかの攻撃例が見つかっているApache Log4jですが、JPCERT/CCによると、Webサイト上のアプリケーションのセキュリティ対策の一つ、WAF(Webアプリケーションファイアウォール)の網に引っかからないように高度化された攻撃文字列がすでに観測されているといいます。

対策済みと思っていたものが無効化されてしまっている可能性があるため、セキュリティパッチなど定期的な確認・対応が必要です。

 

枯れた技術

今回の脆弱性はApacheという古くから使われているソフトウェアに潜んでいた致命的な脆弱性です。

ただ別の見方をすれば、実装されていたシステムは長い間安定的に稼働していたともいえます。

今回の機能自体も2013年に実装されたもので、9年近く問題なく使われていました。

このような枯れた技術で致命的な脆弱性が発見された場合、古いシステムの仕様を知っている技術者も少なくなり自社のシステム内にそのような技術が使われていることすら知らないこともありえます。

このような脆弱性は発見されて対処法が公開されても、自社がその対象であることに気づかないことや、気がついても仕様が理解できている技術者がすでに退職しているなど、すぐに対応できないことも多いため、非常に危険な状態が長期間続いてしまうこともあります。

 

対策

脆弱性を指摘されているのは、Log4jのバージョン2.0〜2.14.1のインターネットに接続しているものすべてです。

JPCERT/CCでは、Log4Jが稼働しており、インターネットに接続されているデバイスを洗い出し、速やかにLog4jのバージョンを最新バージョン(2.17.1(Java 8用)以降)にアップグレードするか、ベンダー各社が提供している緩和策を適用するよう勧告しています。

今回の脆弱性は、自社のシステムを見直し、どのようなOSやソフトウェアを使っていて、セキュリティパッチが当ててあるかをリストアップし定期的に確認・対応すべきであることを改めて思い起こさせたともいえます。

社内の技術者や専門の業者などに依頼して、できるだけ迅速に対応することが必要です。

SHARE

COLUMN LIST

CONTACT

お問い合わせはこちらから