概要:Cactiに高リスクの脆弱性が発覚
オープンソースの監視プラットフォームCactiにおいて、攻撃者が脆弱なサーバー上で任意のコマンドを実行できる可能性のある新たなセキュリティ上の欠陥が公表されました。この問題はCVE-2025-66399として追跡されており、深刻度は高に評価されています。影響を受けるのはCactiのバージョン1.2.28までであり、バージョン1.2.29でこの問題は修正されています。
脆弱性の詳細:不適切な入力検証が原因
この脆弱性は、SNMPデバイス設定のワークフローにおける不適切な入力検証に起因します。認証されたユーザーがhost.php?action=saveを介してデバイスを作成または編集する際、Cactiはsnmp_communityフィールドの値を効果的なサニタイズなしに受け入れます。このフィールドはget_nfilter_request_var('snmp_community')を使用して取得され、空の検証正規表現でform_input_validateに渡されます。これにより、改行文字やシェルメタ文字などの危険な文字をフィルタリングするためのチェックが適用されません。
結果として、制御文字(改行文字を含む)を含む特殊なSNMPコミュニティ文字列が、データベースにそのまま保存されます。これらの値は後にバックエンドのSNMP操作に埋め込まれます。ダウンストリームのSNMPツールやラッパーが改行で区切られたトークンを個別のコマンドとして扱う環境では、攻撃者はCactiプロセスの権限で実行される追加のシェル命令をインジェクションすることができます。
実証コード(PoC)による攻撃シナリオ
概念実証(PoC)では、この弱点がリモートコード実行(RCE)の取得に悪用される方法が示されています。認証された攻撃者は、新しいデバイスを作成する際にhost.phpに細工されたPOSTリクエストを送信できます。snmp_community値に悪意のあるペイロード(例えば、複数の行にわたるリバースシェルコマンド)を埋め込むことで、攻撃者はシステムが自身が制御するリスナーへのアウトバウンド接続を開始させることができます。
デバイスエントリが保存された後、管理 → デバイスの下にあるデバイスページにアクセスするだけで、悪意のあるSNMP操作がトリガーされ、インジェクションされたコードが実行されます。
影響と重大性
この脆弱性が悪用された場合、基盤となるオペレーティングシステム上で任意のコマンドが実行される可能性があります。一般的な展開では、これにより監視データの操作、不正なファイル書き込み、システムレベルコマンドの実行、そして最終的にはCactiサーバーの完全な侵害につながる可能性があります。Cactiは重要なインフラストラクチャやネットワークに対して可視性を持つことが多いため、侵害されたインスタンスはさらなるラテラルムーブメントの強力な足がかりとなる可能性があります。
脆弱性の分類と謝辞
この脆弱性には、CWE-20: 不適切な入力検証という弱点カテゴリが割り当てられており、セキュリティ上重要なパスにおけるユーザー提供データに対する堅牢なチェックの欠如が浮き彫りになっています。CactiメンテナーのTheWitnessによってGHSA-c7rr-2h93-7gjfとして公開されたアドバイザリでは、セキュリティ研究者のHussainFathy氏が報告者としてクレジットされています。
推奨される対策
Cacti 1.2.28以前のバージョンを実行しているユーザーおよび管理者は、直ちにバージョン1.2.29へのアップグレードが強く推奨されます。バージョン1.2.29では、SNMPコミュニティフィールドの検証が強化され、問題が解決されています。
アップグレードが完了するまでは、組織は認証されたCactiアカウントへのアクセスを制限し、疑わしいSNMPアクティビティがないかログを監視し、露出している監視サーバーを高価値資産として扱う必要があります。
