CheckCle 1.6.0以前、認証なしでデータ窃取・削除が可能
監視ツール CheckCle の 1.6.0 までの版では、ログインなしで外部から監視データや通知の秘密情報を読み書き・削除できる弱点が見つかりました。CVSS は 9.8 です。インターネットや広い社内ネットワークから CheckCle に届く環境では、アクセス制限を先に行い、秘密情報の入れ替えと設定の改ざん確認を進めてください。修正版の版番号は、現時点では公表されていません。
急ぎ度: 至急
ログインも利用者の操作も要らず、ネットワークから届けば読み取り・改ざん・削除ができるため、実際の悪用の確認は公表されていなくても、到達できる環境では先に手を打つ必要があります。
関係があるか
CheckCle 1.6.0 以前を稼働させているすべての組織が対象です。特に、管理画面や API がインターネットに公開されている環境、または多くの端末から届く社内ネットワーク上に置いている環境は影響が大きくなります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| CheckCle | 1.6.0 まで(1.6.0 を含む) | 修正版の版番号は公表されていません。開発元の GitHub(issue #214)と告知で確認してください |
確かめ方
- 1CheckCle を使っているか、社内の監視基盤の一覧や構成管理表で確認します。部門が個別に立てた監視サーバーも含めて探してください。
- 2稼働している版を確認します。管理画面の表示か、導入時の資料、コンテナを使っている場合はイメージのタグで確かめられます。1.6.0 以前なら対象です。
- 3CheckCle のサーバーに、インターネットや他のネットワークからどこまで届くかを、ファイアウォールやリバースプロキシの設定で確認します。
- 4稼働中の版に使うコンテナイメージを確かめる例です。コンテナで運用している場合に使います。
何が起きたか
CheckCle は、サーバーやサービスの稼働を監視し、異常時に通知を送り、状況を公開用のステータスページに表示するオープンソースのツールです。1.6.0 までの版では、このツールが内部で使っているデータベース機能 PocketBase の初期設定に問題があり、本来は認証を求めるべきデータの取り扱いが誰にでも許される状態で配布されていました。鍵のかかっていない書庫のように、近づける人なら誰でも中身を持ち出し、書き換え、捨てられる状態です。
具体的には、データを読み書きする API のアクセス規則(API rules)が空のままになっています。PocketBase では規則が空だと、ログインしていない人にも操作が許されます。そのため、認証なしで、保存されている記録の読み取り、変更、削除ができます。弱点の種類は、権限確認が欠けている問題(CWE-862)です。
脆弱性情報によると、読み取られうるものとして server_token の値と alert_configurations に入っている秘密情報が挙げられています。また、通知の無効化、ステータスページの書き換え、監視データの削除もできるとされています。深刻度は CVSS v3.1 で 9.8(Critical)です。
攻撃の流れ
-
1
到達可能か探す
インターネットや社内ネットワークから、CheckCle の API に届く状態の機器を見つけます。
-
2
認証なしで操作
API rules が空のため、ログインしないままデータの取得や更新が受け付けられます。
-
3
秘密情報を取得
サーバー用トークンや通知設定の秘密情報が読み取られるおそれがあります。
-
4
監視を妨害
通知の無効化、ステータスページの改ざん、監視データの削除が行われうる状態になります。
どう悪用されるか
悪用に必要なのは、CheckCle にネットワークから届くことだけです。ログインは要らず、特別な条件も、利用者に何かを操作させる必要もありません。CVSS の評価でも、攻撃の難しさは低く、機密性・完全性・可用性のすべてに高い影響があるとされています。
悪用された場合、まず server_token や通知設定の秘密情報が外部に渡るおそれがあります。通知設定の中身は環境ごとに異なり、公表された情報からは詳細が分かりませんが、通知先サービスの認証情報などが入っている場合は、他のサービスへの影響も考える必要があります。さらに、通知を止められると障害や侵害に気づけなくなり、ステータスページを書き換えられると、顧客や社内に誤った稼働状況を見せることになります。監視データが削除されると、障害の履歴や稼働率の記録も失われます。
実際の攻撃での悪用が確認されているかどうかは、現時点で公表されていません。
今すぐやること
-
1
CheckCle への到達経路を絞る
インターネットに公開している場合は、VPN、IP アドレス制限、リバースプロキシでの認証などで、必要な人と機器だけが届く状態にします。この対応は、修正版の入手を待たずに行えます。
-
2
稼働中の版を確認する
1.6.0 以前かどうかを確かめます。コンテナで運用している場合は、使用中のイメージとタグを確認します。
docker ps --format '{{.Names}} {{.Image}}' -
3
修正の公開状況を確認して適用する
開発元の GitHub の issue #214 と、リリースの告知を確認します。修正版が出ていれば、検証環境で動作を確かめたうえで本番に適用します。参照先には修正に関係するとみられるコミットがありますが、どの版に取り込まれたかは公表されていません。
-
4
秘密情報を入れ替える
外部から届く状態だった期間があれば、漏えいしたものとして扱います。
server_tokenを再発行し、通知設定に登録した Webhook の URL、API キー、メール送信用の認証情報などを、通知先側で無効化して新しくします。 -
5
改ざんと削除の痕跡を確認する
通知設定が無効になっていないか、ステータスページの内容が意図したものか、監視データや履歴に欠けがないかを確かめます。バックアップがあれば、現在のデータと比較します。アクセスログに、不審な送信元からの API 呼び出しが残っていないかも確認してください。
すぐ更新できないとき
修正版を入手できるまでは、ネットワーク側で到達できる範囲を必要最小限に絞ることが最も確実な軽減策です。PocketBase の管理画面で API rules を設定し直す方法もありえますが、CheckCle のエージェントや画面が正常に動かなくなるおそれがあります。実施する場合は、開発元が示す手順を確認し、検証環境で試してからにしてください。
背景
監視ツールは、サーバーやサービスの状態を見張り、異常を知らせる役目を持つため、通知先の認証情報やサーバー接続用のトークンなど、他のシステムにつながる秘密情報をまとめて保持します。そのため、監視ツール自体が破られると、障害に気づけなくなるだけでなく、そこに入っている認証情報が他の攻撃の足がかりになるおそれがあります。
今回の弱点は「権限確認の欠落」と呼ばれる種類です。アクセス制御の不備は、Web アプリケーションの弱点として長年にわたり最も多く報告されている分野の一つです。特に、データベース機能をそのまま API として公開する仕組みでは、初期設定のまま運用すると、意図せず全データが公開された状態になることがあります。導入後に設定を確認する習慣が、被害を防ぐうえで役立ちます。
よくある質問
Q.社内ネットワークだけで使っていますが、対応は必要ですか。
Q.実際に攻撃は確認されていますか。
Q.修正版が出るまで何もできませんか。
まだ分かっていないこと
- 修正版の版番号と公開日は公表されていません。開発元の GitHub の issue #214 とリリースの告知で確認してください。
- 実際の攻撃での悪用の有無は、現時点で明らかになっていません。
-
server_tokenとalert_configurations以外に、どの情報が影響を受けるかの詳細は公表されていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
CheckCle through 1.6.0 contains a missing authorization vulnerability that allows unauthenticated attackers to read, modify and delete records because shipped PocketBase collections use empty API rules. Attackers can query /api/collections//records endpoints to steal server_token values and alert_configurations secrets, disable alerting, alter status pages, or delete monitoring data.
出典: GitHub Security Advisories (Global) NVD GitHub Advisory