ネットワーク監視フレームワーク Cactiに4件の脆弱性(CVE-2026-39893・CVE-2026-39955・CVE-2026-39938・CVE-2026-39951)

セキュリティニュース

投稿日時: 更新日時:

ネットワーク監視フレームワーク Cactiに4件の脆弱性(CVE-2026-39893・CVE-2026-39955・CVE-2026-39938・CVE-2026-39951)

ネットワーク監視フレームワークのCactiに対し、2026年6月18〜19日、Cactiセキュリティチームによる4件のセキュリティアドバイザリがGitHub Security Advisoriesに公開されました。うち3件はCVSS 9.8のCritical、1件はHigh(CVSS 7.6)で、すべてバージョン1.2.30以前が対象です。

最も深刻なCVE-2026-39893とCVE-2026-39955は、Cactiにゲストアクセスが設定されているインスタンスで認証なしにSQLインジェクションを実行できるとされており、初期侵入を一切必要としないリモート攻撃が成立し得ます。同様に認証不要のCVE-2026-39938はローカルファイルインクルージョン(LFI)とOSコマンドインジェクションの両面を持つ深刻な脆弱性です。いずれもCacti 1.2.31で修正済みです。

サマリー

  • 4件の脆弱性はすべてCacti 1.2.30以前に影響。修正済みバージョンは1.2.31
  • CVE-2026-39893(CVSS 9.8・Critical):SQLインジェクション。graph_view.phprfilterパラメータがサニタイズなしでSQL RLIKE句に連結される。ゲストアクセス設定時は認証不要で悪用可能
  • CVE-2026-39955(CVSS 9.8・Critical):SQLインジェクション。graph_view.phpFILTER_VALIDATE_REGEXPの非アンカー検証バイパスにより未認証攻撃者がSQLペイロードを注入可能。機密性・完全性・可用性すべてに完全影響
  • CVE-2026-39938(CVSS 9.8・Critical):未認証のローカルファイルインクルージョン(LFI)。graph_themeパラメータとRRDtool IPC処理の脆弱性。パス・トラバーサル(CWE-22)とOSコマンドインジェクション(CWE-78)の両リスクを持つ
  • CVE-2026-39951(CVSS 7.6・High):蓄積型SQLインジェクション。Reportsのgraph_name_regexpパラメータ経由。低権限の認証ユーザーが必要だが機密性に高い影響
  • ゲストアクセスを有効にしているCactiインスタンスは、CVE-2026-39893とCVE-2026-39955への即時対応が最優先
CVE番号 深刻度 CVSS CWE 認証要否 影響コンポーネント
CVE-2026-39893 Critical 9.8 CWE-89(SQLインジェクション) 不要(ゲストアクセス時) graph_view.php / rfilterパラメータ
CVE-2026-39955 Critical 9.8 CWE-89(SQLインジェクション) 不要 graph_view.php / FILTER_VALIDATE_REGEXP検証バイパス
CVE-2026-39938 Critical 9.8 CWE-22(パス・トラバーサル)、CWE-78(OSコマンドインジェクション) 不要 graph_themeパラメータ / RRDtool IPC
CVE-2026-39951 High 7.6 CWE-89(SQLインジェクション) 低権限ユーザーが必要 Reports機能 / graph_name_regexpパラメータ
影響バージョン 1.2.30以前
修正バージョン 1.2.31
アドバイザリ公開日 2026年6月18〜19日(netniV)

Cactiとは

Cactiは、ネットワークデバイスやサーバーのパフォーマンスデータをRRDtoolを使って収集・グラフ化するOSSのネットワーク監視フレームワークです。SNMPを活用した帯域利用率・CPU負荷・メモリ使用量などのグラフ化ツールとして広く普及しており、ルーターやスイッチをはじめとしたインフラの稼働状況を可視化する目的でデータセンターやISPを中心に多数の環境で採用されています。ネットワークエンジニアとして複数の環境でインフラ設計に携わってきた経験からも、Cactiは小規模から大規模まで幅広く利用されているツールという印象があります。過去にも複数回の深刻な脆弱性が発見されており、今回が初めての事例ではありません。

CVE-2026-39893:グラフフィルターのSQLインジェクション-ゲストアクセス時は認証不要

Cactiセキュリティチームの内部監査で発見された脆弱性です。graph_view.php内でグラフフィルタを処理する際、リクエスト変数rfilterがサニタイズなしのままSQL RLIKE句に連結されていたことが原因です。Cactiはグラフ閲覧機能においてゲストユーザーによるアクセスをサポートしており、ゲストアクセスが有効になっているインストール環境では、このエンドポイントが認証なしで到達可能になっています。つまり、ゲストアクセスが有効な環境においては、認証情報を一切持たない外部の攻撃者がネットワーク経由でSQLインジェクションを直接実行できる状態にあったということになります。

Cactiアドバイザリ(GHSA-69gg-mjfm-jjpc)によれば、修正はPR #7054(コミット891344a5)でlib/database.phpに新たなヘルパー関数db_qstr_rlike()を追加するかたちで実施されました。この関数は入力値の長さを255文字に制限し、|{}、NULバイトなどの危険なメタキャラクターを除去した後、db_qstr()によるパラメータ化クォートを適用します。あわせて、RLIKEエンジン入力から交替文字や繰り返し量指定子を除去することで、ReDoS(正規表現サービス拒否)のリスクも低減されています。2026年4月17日に実施されたフル監査で、lib/やrootの*.php、cli/内すべてのRLIKE処理箇所がdb_qstr_rlike()を経由するよう確認されています。

CVE-2026-39955:バリデーションバイパスによるSQLインジェクション-機密性・完全性・可用性に完全影響

研究者davidkm-aiによって発見され、netniVがコーディネートした脆弱性です。同じくgraph_view.phpに存在し、FILTER_VALIDATE_REGEXPによる入力検証処理が「非アンカー型(unanchored)」であったことが悪用されました。アンカーなしの正規表現チェックは、入力値の中間部分にパターンが含まれていれば検証を通過してしまうため、検証をバイパスして悪意あるSQLペイロードを注入できる状態になっていました。

GHSA-gp82-qhrg-crv7のCVSSスコアはCVE-2026-39893と同じく9.8であり、機密性・完全性・可用性のすべてに高い影響が及ぶと評価されています。こちらも認証不要で悪用可能とされており、特権レベルなし・ユーザーインタラクションなし・ネットワーク越しのリモート攻撃が成立し得る組み合わせです。修正はPR #7039とPR #7055で実施されました。

CVE-2026-39938:未認証のローカルファイルインクルージョン-RRDtool IPC処理との複合リスク

報告者kx00007とdavidkm-aiが発見し、netniVがコーディネートしたCritical脆弱性です。graph_themeパラメータの扱いとRRDtool IPC(プロセス間通信)のシリアライズ処理に不備があり、未認証の攻撃者がパス・トラバーサル(CWE-22)とOSコマンドインジェクション(CWE-78)の両手法でサーバーを攻撃できる状態にありました。

Cactiアドバイザリ(GHSA-rm7p-qcqm-x5m6)によれば、当初の修正ではbasename()のみを使ったパス制限が適用されましたが、これがバイパス可能であることが確認されたため、その後cacti_validate_theme()という新しい関数を用いてファイルシステムのアローリスト検証を実装する、より強化された修正(PR #6966)が適用されました。パス・トラバーサルとOSコマンドインジェクションという二つの攻撃クラスを組み合わせた点で、サーバーの機密性・完全性・可用性のすべてに対する広い攻撃面を持つ脆弱性です。

CVE-2026-39951:Reportsのgraph_name_regexpを使った蓄積型SQLインジェクション

内部発見・netniVコーディネートの脆弱性で、CactiのReports機能にあるgraph_name_regexpパラメータを通じた蓄積型(Stored)SQLインジェクションが可能な状態でした。CVSSスコアは7.6(High)で、3件のCriticalと異なり低権限の認証ユーザー(PR:L)が必要という点で攻撃の前提条件が高くなっています。ただし、機密性への影響は「High」と評価されており、データベース内容の漏えいリスクは無視できません。

GHSA-pf37-v86f-5xwpのアドバイザリによれば、graph_name_regexpを対象にした全SQLシンクの監査が完了し、すべてdb_qstr_rlike()を経由することを確認。すべてのHTML出力はhtml_escape()で処理されることも確認され、PR #7039の修正で対応が完了しました。

影響範囲と対応

4件すべてのアドバイザリはCacti 1.2.30以前を対象バージョンとして明記しており、修正済みバージョンは1.2.31です。Cactiセキュリティチームは2026年4月17日のセッションで全修正のレビューを完了させており、アドバイザリはその後に公開されています。

Cactiを運用している情報システム部門が特に確認すべき点は、ゲストアクセスの有効・無効の設定です。CVE-2026-39893とCVE-2026-39955のどちらもゲストアクセスが有効なインスタンスにおいて認証不要となっており、外部に公開されているCactiインスタンスでゲストアクセスを許可している環境は特に高リスクです。

推奨される対応は次の3点です。まず、Cacti 1.2.31への即時アップデートを行います。インターネットに公開されているCactiインスタンスはすべて対象として扱い、アップデートが完了するまでの間はファイアウォールやIPアクセス制限で外部からのアクセスを遮断することが望まれます。次に、ゲストアクセスの有効化の有無を確認し、不要な場合は無効化してください。最後に、ゲストアクセスが必要な環境においてはCactiへの到達経路を信頼できるネットワーク範囲に限定する構成を検討してください。

Cactiは過去にも脆弱性が繰り返し発見されている監視ツールです。当サイトで解説したCVE-2024-43363でもリモートコード実行のリスクが指摘されており、今回のアドバイザリバッチでも同様に認証不要の深刻な脆弱性が含まれています。ネットワーク監視ツールの性質上、Cactiは内部ネットワーク全体の構成情報を保持していることが多く、侵害された場合の影響はシステム単体の問題にとどまりません。アップデート管理の対象として定期的に確認する運用体制を整えることをおすすめします。

出典

当サイト関連記事: