
完全なエクスプロイトのセットアップと再現レポートについては、CVE-2022-42889-Project Vulnerability Exploitation Report ファイルを参照してください。エクスプロイトの構築と実行に使用した VM は、このリポジトリには含まれていません。
CVE-2022-42889 Text4Shell のセットアップとエクスプロイトの再現。
CVE-2022-42889 は「Text4Shell」としても知られ、Apache Commons Text ライブラリにおける重大な脆弱性です。Apache Commons Text は、テキスト処理や標準 Java Development Kit(JDK)のテキスト処理への機能追加を提供するために Java アプリケーションで頻繁に使用されるライブラリです。2018年に遡るバージョン、Apache Common Text ライブラリの 1.5 から 1.9 が影響を受けると報告されました。この脆弱性は StringSubstitutor クラス内の安全でない入力処理に起因し、攻撃者がライブラリの文字列補間機能を悪用できるようにします。その結果、悪意を持って細工された入力を処理するとリモートコード実行(RCE)が発生する可能性があり、このライブラリに依存するアプリケーションに重大なリスクをもたらします。したがって、CVE-2022-42889 は重大な脆弱性と見なされ、影響を受けるシステムに完全な侵害を含む深刻な影響を与える可能性があるため、CVSS 3.x 基本スコア 9.8 が割り当てられました。
この脆弱性は、Java ベースのアプリケーションで悪用される可能性があるため、悪名高い Log4Shell(CVE-2021-44228)や Spring4Shell(CVE-2022-22965)と比較されています。最も基本的な使用例でも脆弱であった Log4Shell や Spring4Shell とは異なり、Apache Common Text ライブラリの利用者全員が影響を受けるわけではありません。攻撃対象領域を露出させ、脆弱性を悪用可能にするには、ライブラリを特定の方法で使用する必要があるためです。
エクスプロイトのデモでは、エクスプロイトの実行に必要なすべてのスクリプトとツールを提供する cyberhack255 の GitHub 概念実証 を利用します。以下は、悪用がどのように進行するかの簡単な説明です:
text4shell-poc.jar)としてパッケージ化された Java アプリケーションを実行する docker コンテナをセットアップする Dockerfile を利用します。Alpine Linux ベースの公式 OpenJDK 8 ランタイムイメージを使用しており、最小限で軽量な環境を提供します。このファイルは、デモ中に bash スクリプトを有効にするために bash をインストールします。エクスプロイトの実行中にコンテナへの外部アクセスを許可するため、ポート 8080 が公開されます。
この PoC は、Apache Commons Text ライブラリの文字列置換メカニズムを悪用する悪意のあるペイロードの作成に焦点を当てています。ペイロードは、StringSubstitutor.createInterpolator() メソッドを呼び出して lookup キーのスクリプトをターゲットにします。このデモでは、ペイロードは docker 内に新しいファイルをリモートで作成します。