Log4Shell
com/file}は、インターネットに接続されていた場合、指定したURLからデータを読み込む。したがって、攻撃者はロギングされる文字列を入力することで、公開URLでホストされた悪意のあるコードを読み込ませることが可能になる。たとえデータの実行自体が無効化されていたとしても、攻撃者はURLに特定の文字列を含めることで、たとえば秘密にすべき環境変数などのデータを攻撃者のサーバーに送信できる。
HTTPリクエストはロギングされることが多いため、よくある攻撃ベクターは、HTTPリクエストのURLや、ログに書かれることが多いUser-AgentなどのHTTPヘッダに悪意のある文字列を置くことである。初期の緩和策の1つは、${jndiなどの文字列を含むすべてのリクエストをブロックするという方法だった。しかし、このように単純に検索するだけの対策は、リクエストを難読化することで回避できてしまう。たとえば、${${lower:j}ndiは、文字jを小文字にする操作が実行されたあとにJNDIルックアップに変換されてしまう。入力がすぐにログに記録されなかったとしても、後に内部処理中にログに記録されて実行されてしまう可能性もある。
なおLog4j 1.x系については、JNDI Lookup機能を持たないこと、またJMS Appenderが有効でもクラス情報がデシリアライズされないため、本脆弱性の影響を受けない。
Log4Shell(別名CVE-2021-44228)は、よく使われているJavaログフレームワーク(英語版)のLog4jで発見されたゼロデイの任意コード実行脆弱性である。この脆弱性は、2021年11月24日にAlibabaのクラウドセキュリティチームによって秘密裏にApacheに報告され、2021年12月9日に一般に公開された。
この脆弱性は、Log4jがLDAPとJNDIのリクエストをチェックしないことを利用している。これにより、攻撃者は任意のJavaコードをサーバーや他のコンピュータ上で実行できてしまう。影響を受けるサービスとしては、Amazon AWS、Cloudflare、iCloud、JavaバージョンのMinecraft、Steam、Tencent QQなどがある。この脆弱性を、LunaSecは「壊滅的な割合の設計上の失敗」、Tenableは「過去10年間で最大かつ最も重大な単一の脆弱性」と特徴づけた。Log4jを擁するApache Software Foundationは、Log4ShellのCVSS(英語版)レーティングを最大値の10に指定した。