DedeCMS に認証不要の任意コード実行、悪用の兆候あり
中国製のCMS「DedeCMS」の 5.8.1-beta 以前に、ログイン不要で外部からサーバー上の任意のPHPコードやOSコマンドを実行されるおそれのある弱点が見つかりました。Shadowserver Foundation が悪用の形跡を観測しており、インターネットに公開している DedeCMS のサイトが対象です。修正版は現時点で確認できていないため、まず自社での利用有無を調べ、公開経路の制限とログの確認を進めてください。
急ぎ度: 至急
認証不要でネットワーク越しに実行でき、CVSS v3 は 9.8 と最高水準で、悪用の形跡も観測されているためです。
関係があるか
DedeCMS 5.8.1-beta 以前を使い、Webサイトをインターネットに公開している組織が当てはまります。企業の広報サイト、キャンペーンサイト、子会社や海外拠点が個別に立てたサイトなど、情報システム部門が把握していないものにも注意が必要です。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| DedeCMS | 5.8.1-beta 以前のすべての版 | 公表されていません。ベンダーの告知で最新の状況を確認してください |
確かめ方
- 1資産台帳や構成管理の情報で、DedeCMS を使っているサイトがないか確認します。委託先が運用しているサイトも含めて、運用担当に問い合わせてください。
- 2Webサーバー上に DedeCMS のファイルがあるかを探します。
plusディレクトリ内にflink.phpがあれば、DedeCMS の可能性が高いです。 - 3管理画面や導入時の資料で、使っている版が 5.8.1-beta 以前かどうかを確認します。版が特定できない場合は、影響を受けるものとして扱うのが安全です。
何が起きたか
DedeCMS は、サイトの記事やページを管理するための仕組み(CMS)です。5.8.1-beta までの版には、外部から送られた情報の一部がそのままプログラムの一部として扱われ、実行されてしまう弱点があります。ログインしていない第三者でも、公開されているサイトに特別な通信を送るだけで、サーバー上でPHPコードやOSのコマンドを動かせる可能性があります。
技術的には、エラーや案内を表示する ShowMsg() という処理が、HTTP の Referer ヘッダーの内容をテンプレート用の文字列(DedeTemplate)に書き込み、それを読み込んで実行する作りになっています。外部から送られる値の検証が不十分なため、コード注入(CWE-94)に分類されています。友情リンクの登録を受け付ける /plus/flink.php が入口として確認されています。
この弱点については、Shadowserver Foundation が 2023-10-14 に最初に悪用の形跡を観測したと報告されています。ただし、被害の件数や規模、攻撃の背後にいる者については公表されていません。
攻撃の流れ
-
1
公開サイトを探す
攻撃者はインターネット上で DedeCMS が動いているサイトを見つけます。
-
2
細工した通信
ログインなしで、公開されている入口に細工したリクエストを送ります。
-
3
コードが混入
Referer の内容がテンプレートに書き込まれ、サーバーが読み込む対象になります。
-
4
コード実行
サーバー上で任意のPHPコードやOSコマンドが実行されます。
-
5
乗っ取り
サイトの改ざん、情報の持ち出し、他のシステムへの足がかりに使われるおそれがあります。
どう悪用されるか
悪用に必要な条件は少なく、ネットワーク越しに到達できれば、ログインも利用者の操作も要りません。CVSS では、攻撃の難しさは低く、機密性・完全性・可用性のすべてに大きな影響が出る評価(v3 で 9.8、v4 で 9.3)になっています。
悪用に成功すると、Webサーバーの権限で任意の処理が動かされます。サイトの改ざんやデータベースの情報の閲覧、Webシェルなどの不正なファイルの設置、同じサーバーや社内ネットワークの別の機器への侵入などが想定されます。実際にどの被害が出たかは公表されていません。
今すぐやること
-
1
DedeCMS の利用有無を洗い出す
公開しているサイトのうち DedeCMS を使うものを、委託先運用分も含めて確認します。
plusディレクトリ内のflink.phpの有無が手がかりになります。find /var/www -type f -name flink.php -path "*plus*" -
2
公開経路を制限する
修正版が確認できるまで、WAF やWebサーバーの設定で
/plus/flink.phpへの外部からのアクセスを遮断します。友情リンクの受付を使っていなければ影響は小さいはずです。 -
3
ログで不審なアクセスを確認する
Webサーバーのアクセスログに
/plus/flink.phpへの不審なリクエストがないかを調べます。特にdopost=saveを含む POST と、その直後の応答の様子を確認してください。ログの場所は環境によって異なります。grep "plus/flink.php" /var/log/nginx/access.log -
4
侵入の痕跡を点検する
身に覚えのないPHPファイルや、最近変更されたテンプレート・キャッシュ関連のファイルがないか、Webサーバー上で確認します。痕跡があれば、サイトを停止して、資格情報の変更も含めたインシデント対応に切り替えてください。
-
5
修正版の有無と移行を検討する
ベンダーのリポジトリや告知で修正の状況を確認します。修正が確認できない場合は、サイトの公開停止、静的化、別のCMSへの移行も選択肢に入れてください。
すぐ更新できないとき
修正版を当てられない場合は、WAF やWebサーバーの設定で /plus/flink.php への外部アクセスを遮断してください。管理者の接続元IPだけに制限できるなら、それも有効です。ただし、弱点があるのは ShowMsg() という共通の処理です。他の経路から同じ処理に到達できるかどうかは公表されていないため、遮断は応急処置と考え、サイト自体の公開範囲の縮小や移行も並行して検討してください。
背景
CMS は、企業の広報サイトやキャンペーンサイトの更新を担当者が簡単に行えるようにする基盤で、インターネットに公開されることが前提のソフトウェアです。そのため、弱点があると外部から直接狙われやすくなります。DedeCMS は中国で広く使われてきたPHP製のCMSで、日本でも、海外向けサイトや古い構築案件などで残っていることがあります。
外部から受け取った値をテンプレートや設定の文字列に混ぜ込み、そのままプログラムとして読み込ませてしまう弱点は、CMS やWebアプリで繰り返し問題になってきた種類のものです。HTTPヘッダーのように、利用者が画面で入力しない値でも、通信する側が自由に書き換えられるため、入力として扱う必要があります。
よくある質問
Q.ログインしていない人でも攻撃できますか。
Q.実際に攻撃は起きていますか。
Q.修正版にアップデートすれば解決しますか。
Q.社内向けのサイトで、外部には公開していません。対応は不要ですか。
まだ分かっていないこと
- 修正版の有無と、直った版の番号は公表されていません。
- 被害の件数や規模、攻撃を行った者については公表されていません。
-
/plus/flink.php以外に、同じ処理へ到達できる経路があるかどうかは明らかになっていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| DedeCMS | DedeCMS |
5.8.1-beta 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
DedeCMS through 5.8.1-beta contains a PHP code injection vulnerability in ShowMsg() where the HTTP Referer header is written into a DedeTemplate string and included. Unauthenticated attackers can send a crafted Referer to /plus/flink.php?dopost=save with an empty validate code to execute arbitrary PHP and system commands. Exploitation evidence was first observed by the Shadowserver Foundation on 2023-10-14.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web srcincite.io
- web github.com
- web github.com
- web vulncheck.com
- web nvd.nist.gov
- web github.com