Camunda 7に遠隔コード実行の弱点、修正版あり
ワークフローエンジンCamunda 7に、タスク検索の仕組みを悪用されると、エンジンが動くサーバー上でOSコマンドを実行されるおそれのある弱点が見つかりました。7.24.0から7.24.13と7.23.0から7.23.16が対象で、7.24.14と7.23.17で修正されています。該当する版を使っている場合は、版の確認と更新を進め、あわせてREST APIの公開範囲を見直してください。
急ぎ度: 早めに
CVSS 9.8の深刻な弱点で修正版も出ていますが、実際の攻撃で悪用されたという情報は現時点で明らかになっていないため、まず外部に公開している環境から順に更新する対応が現実的です。
関係があるか
Camunda 7.24系または7.23系のプロセスエンジンを自社で運用し、タスク検索などのAPIをアプリケーションや外部の利用者に提供している組織が当てはまります。Camundaを組み込んだ自社開発システムや、業務システムの一部として同梱されている場合も対象になりえます。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Camunda 7.24系 | 7.24.0 以上 7.24.14 未満 | 7.24.14 |
| Camunda 7.23系 | 7.23.0 以上 7.23.17 未満 | 7.23.17 |
確かめ方
- 1自社のシステム一覧や構成管理表で、Camunda(Camunda 7)を使っているものを洗い出します。ベンダー製品に組み込まれている場合は、提供元にCamundaの版を問い合わせてください。
- 2アプリケーションに含まれるCamunda Engineの版を確認します。配置先のサーバーでは、次のようなコマンドでJARファイルの名前から版が分かります。
- 3ビルド管理にMavenやGradleを使っている場合は、依存関係の一覧で
camunda-engineの版を確認します。 - 4タスクの検索を行うREST APIを、社内外のどこからどの範囲に公開しているかを確認します。インターネットから到達できる場合は、優先度を上げて扱ってください。
何が起きたか
業務の流れを自動で進めるワークフローエンジン「Camunda 7」に、ログインできる利用者が、本来禁止されている種類の入力を通してしまう弱点が見つかりました。うまく悪用されると、エンジンが動いているサーバー上で、利用者が意図しないOSコマンドを実行される可能性があります。
Camundaには、タスクの検索条件に式(JUEL式)を書けるようにする機能があります。ただし、この機能は設定 enableExpressionsInAdhocQueries で制限できるようになっています。今回の弱点は、この制限の確認に抜けがあったことが原因です。
具体的には、AdhocQueryValidator.validate() が、TaskQueryDto で受け付ける orQueries という項目の中に入れ子で書かれた式を確認していませんでした。このため、制限を有効にしていても、その検査をすり抜けて式を評価させられます。式の評価からJavaのリフレクションを経て java.lang.Runtime.exec を呼び出せるため、エンジンのサービスユーザーの権限でOSコマンドが実行されます。分類としては、OSコマンドインジェクション(CWE-78)と、式言語のインジェクション(CWE-917)にあたります。
攻撃の流れ
-
1
APIに到達
攻撃者がCamundaのタスク検索APIに接続できる位置にいることが出発点になります。
-
2
検索条件を送信
入れ子になった検索条件 `orQueries` の中に式を紛れ込ませたリクエストを送ります。
-
3
検査をすり抜け
式を禁止する設定があっても、入れ子の部分が検査されないため通過します。
-
4
式が評価される
エンジンが式を評価し、Javaのリフレクション経由で任意のメソッドを呼び出されます。
-
5
OSコマンド実行
エンジンのサービスユーザーの権限で、サーバー上のコマンドが実行されます。
どう悪用されるか
攻撃にはネットワーク経由でCamundaのタスク検索を呼び出せることが必要です。説明文では、悪用できるのは認証済みの利用者とされています。一方、CVSSのベクターでは必要な権限が「なし」(PR:N)、利用者の操作も不要(UI:N)と評価されており、認証の扱いは資料によって食い違っています。自社の環境では、認証が必要か必要ないかにかかわらず、APIを呼べる人の範囲を狭める対応が有効です。
悪用に成功すると、Camundaが動くサーバーでエンジンのサービスユーザーの権限でコマンドが実行されます。業務データの閲覧や改ざん、プロセスの停止、同じネットワーク内の他のシステムへの足がかりにされる可能性があります。被害の大きさは、サービスユーザーに与えている権限と、サーバーが置かれたネットワークの分離状況に左右されます。
実際の攻撃で悪用された事例は、現時点で明らかになっていません。技術的な解説は、セキュリティ企業などによって公開されています。
今すぐやること
-
1
使っているCamundaの版を確認する
7.24.0から7.24.13、または7.23.0から7.23.16に当たるかを確認します。ベンダー製品に組み込まれている場合は、提供元に対応状況を問い合わせてください。
find / -name "camunda-engine-*.jar" 2>/dev/null -
2
修正版へ更新する
7.24系は7.24.14、7.23系は7.23.17以降に更新します。入手方法はCamundaのダウンロードページと、ベンダーの告知で確認してください。本番へ適用する前に、検証環境でタスク検索などの動作を確かめます。
-
3
REST APIの公開範囲を絞る
更新までの間、インターネットや広い社内ネットワークから到達できる場合は、ファイアウォールやリバースプロキシで接続元を必要な範囲に限定します。
-
4
アカウントと権限を棚卸しする
タスク検索APIを呼べるアカウントのうち、使っていないものや共有されているものを整理します。パスワードやトークンが漏れていないかも確認してください。
-
5
ログと挙動を点検する
更新前の期間について、見覚えのないタスク検索のリクエスト、エンジンのサービスユーザーによる想定外のプロセス起動や外部への通信がないかを確認します。
すぐ更新できないとき
ベンダーが公表した回避策は確認できていません。設定 enableExpressionsInAdhocQueries は、今回の弱点で検査をすり抜けられるため、この設定だけでは防げません。修正版の適用までの暫定対応としては、REST APIへの接続元の制限、APIを呼べるアカウントの最小化、エンジンのサービスユーザーの権限縮小が一般的な軽減策になります。いずれも根本的な対策ではないため、修正版への更新を前提に進めてください。
背景
Camunda 7は、業務の流れ(承認や申請などのプロセス)をBPMNで定義して実行するJava製のワークフローエンジンです。社内では、申請・承認システムや受発注の自動化基盤として組み込まれ、人が処理するタスクの管理や、システム同士の連携を担っています。そのため、業務データや他システムへの接続情報が集まりやすく、侵害された場合の影響は広くなりがちです。
JUELのような式言語は、設定や画面の入力から柔軟に計算や処理を書けるようにするために、多くのJava製品に取り入れられています。一方で、利用者が書いた式をそのまま評価してしまうと、サーバー上のコードの実行にまで発展する可能性があります。式言語を持つ製品では、同じ種類の弱点が繰り返し問題になってきました。今回のように、禁止の仕組みはあっても、入れ子になった入力の検査が漏れていたために抜け道ができる例もあります。
よくある質問
Q.ログイン(認証)が必要なら、外部からの攻撃は心配しなくてよいですか。
Q.`enableExpressionsInAdhocQueries` を無効にしていれば安全ですか。
Q.Camundaを直接使っていないのに影響を受けることはありますか。
まだ分かっていないこと
- 実際の攻撃で悪用されたかどうかは、現時点で明らかになっていません。
- 認証が必要かどうかについて、説明文とCVSSの評価に食い違いがあります。詳細はCamundaの告知やGitHubのアドバイザリで確認してください。
- 修正版の入手方法や提供の範囲(提供形態ごとの違い)は、公式のダウンロードページで確認してください。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Camunda 7.24.0 before 7.24.14 and 7.23.0 before 7.23.17 contains an expression injection vulnerability where AdhocQueryValidator.validate() fails to check sub-query expression maps within the orQueries field exposed by TaskQueryDto, allowing authenticated users to bypass the enableExpressionsInAdhocQueries restriction. Attackers can supply a malicious JUEL expression such as dueAfterExpression inside an orQueries entry to achieve arbitrary Java reflection and invoke java.lang.Runtime.exec, resulting in operating-system command execution as the engine service user.
出典: NIST National Vulnerability Database NVD GitHub Advisory
参照URL
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web nvd.nist.gov
- web docs.camunda.org
- web github.com