
CVE-2026-105030 の python3 PoC。Kener 4.0.0 から 4.1.6 未満における、Dashboard API 経由の隠しモニターデータ開示。
このリポジトリには、Kener の公開モニターエンドポイントにおける情報漏洩 (CWE-200) 問題をテストするための、小規模な Python プルーフオブコンセプトが含まれています。公開時点で、他に公開されている PoC は確認されていません。
影響を受ける Kener のバージョンは 4.0.0 から 4.1.5 までで、4.1.6 で修正されています。
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
この問題は、クエリが適切にフィルタリングされていない場合に、隠しモニターや非アクティブなモニターを露出させる可能性がある、タグベースのモニター検索に関連しています。
この PoC は以下の用途を想定しています:
許可されていないターゲットに対してこの PoC を使用しないでください
この PoC は、以下のようなフィルタリングが適用されていない検索において、隠しモニターや非アクティブなモニターが公開エンドポイントから依然として返される可能性があることを実証します:
修正後の動作では、これらのエンドポイントは隠しモニターや非アクティブなモニターに対して 404 / 一致なしを返すべきです。
requests パッケージ依存関係をインストールします:
python3 -m pip install requests
データベースにアクセスできる場合は、公開表示されるべきではないモニターを作成します。
Postgres の場合:
INSERT INTO monitors (
tag, name, description, status, is_hidden,
category_name, monitor_type, cron, default_status,
created_at, updated_at
) VALUES (
'internal-secret-monitor',
'Internal Secret Monitor',
'Hidden/inactive monitor used for PoC',
'INACTIVE',
'YES',
'Home',
'HTTP',
'* * * * *',
'UP',
NOW(),
NOW()
);
必要に応じて別のタグ名を使用することもできます。
レコードが以下の状態であることを確認してください:
status = 'INACTIVE' またはそれ以外でアクティブでない状態is_hidden = 'YES'次に、PoC スクリプトを実行します。
アプリケーションが脆弱な場合、1つ以上のエンドポイントが以下を返す可能性があります:
これは、非表示/非アクティブなモニターが公開 API 経由で露出していることを示します。
適切なフィルタリングが行われている場合、レスポンスは代わりに以下のようになるはずです:
これが修正後の期待される動作です:
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
問題は単にタグの秘匿性だけではありません。問題は、公開エンドポイントが隠された、または非アクティブなモニターデータを決して公開すべきではないということです。攻撃者が何らかの手段でモニタータグを知った場合、以下の情報にアクセスできる可能性があります:
攻撃者は依然として、推測、ブルートフォース、またはその他の手段によって、何とかしてタグを見つけ出す必要があります。
以下を確認してください:
アプリがローカルで実行されており、ポートが一致していることを確認してください:
BASE_URL=http://localhost:3000
正しい URL を使用してください。例:
BASE_URL=https://localhost:3000
このPoCは以下の場合にのみ使用してください:
許可なく外部または第三者のシステムに対して実行しないでください。
このPoCは、非表示または非アクティブなモニタータグが公開Kener APIエンドポイントを通じて依然としてアクセス可能かどうかを確認します。