UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Webセキュリティ】Log4jの脆弱性

Log4j脆弱性 CVE-2021-44228 のフローがわからなかったので調べた

調べたら具体的なやり方がわかったが、ここでは直接的なフローは書かないようにする

www.cyberkendra.com

概要

Log4jのJNDI Lookup機能で外部からの入力で任意のJavaコードを実行できてしまうということ

影響を受けるバージョン

2.0 <= Apache log4j2 <= 2.14.1

JNDIとは

Java Naming and Directory Interface(JNDI)は、ディレクトリ・サービスが提供するデータやオブジェクトを名前で発見 (discover) し、参照 (lookup) するのためのAPIである。他の全てのJava APIと同様、JNDIは他システムに対するインターフェースであり、具体的な実装からは独立している。またJNDIにはサービス・プロバイダ・インターフェース (SPI) が規定されており、フレームワークディレクトリ・サービスの実装をプラグインすることができる。ディレクトリ・サービスの実装はサーバでもフラットファイルでもデータベースでもよく、サービスの提供側が任意に選択できる。 Java Naming and Directory Interface - Wikipedia

フロー

  1. 脆弱性を悪用する文字列をHTTPリクエストして、それをログに書き込む
  2. Log4jのJNDI lookupの機能がそのログの文字列から変数化
  3. あることによってそれが悪意のあるJava Classをダウンロードし、それをJavaアプリが利用してしまう

関係プロジェクトでは使っていなかったのでよかった

また、今回はバージョンアップすればよいが、Javaのバージョンが古いとそのバージョンアップもできないとのことなので、定期的な言語とライブラリのアップデートは本当に大事だと思わせる出来事だった

他参考

https://piyolog.hatenadiary.jp/entry/2021/12/13/045541

https://milestone-of-se.nesuke.com/sv-advanced/sv-security/cve-2021-44228-log4shell-logjam/

https://www.ipa.go.jp/security/ciadr/vul/alert20211213.html

https://github.com/YfryTchsGD/Log4jAttackSurface