Control Web Panel の cwpsrv が差し替えられていないか確かめる(CWPdoor)
CWP の専用 Web サーバー cwpsrv をソースから改変・再ビルドしたバックドア版に置き換える攻撃。署名付きの要求だけでコマンドを実行し、その要求はアクセスログに残さない。見つかった検体は VirusTotal で検知ゼロだった。
いつ使うか
- Linux のホスティング管理パネル CWP(Control Web Panel)を使っている。インターネットに出ている CWP は 34 万超と観測されている
- パネルを入れたサーバーで root を取られた疑いがあるとき
手口の要点
- 更新を装うスクリプトが cwpsrv 1.15.10/1.24.0 向けの改ざんバイナリーを取得し、置き換えたあとファイルと親ディレクトリーの時刻を戻し、コマンド履歴も消す(実行には root が必要)。
- 要求ヘッダーの時刻が ±300 秒以内で、内蔵公開鍵で RSA 署名を検証できたときだけ動く。失敗した要求は普通に処理されるので、外から叩いても気づけない。
- 結果は AES で暗号化して返し、成功した要求はアクセスログに書かない。Ebury と同じアーカイブで見つかった例もある。
確認ポイント
- Unix ドメインソケット
ngx_http_integrity_helperがあるか(ss -xlpなどで確認)。 - cwpsrv にぶら下がる見慣れない補助の子プロセスがないか。
- cwpsrv バイナリーに
X-Ngx-Integrityを含む文字列がないか(stringsで確認)。 - ファイル時刻は戻されるので、時刻ではなくハッシュを正規配布物と比べる。
見つかったら
- 正規のファイルに戻し、最新版に更新し、パネルの認証情報を全部替える。
- ホスト全体を侵害済みとして扱い、Ebury など他の仕込みも調べる。入口になった脆弱性はまだ分かっていないので、パネルを外に出さない(接続元制限や VPN 越し)のが一番効く。