
Ein python3 PoC für CVE-2026-105030 Kener 4.0.0 vor 4.1.6 Verdeckte Monitor-Datenoffenlegung über die Dashboard-API
Dieses Repository enthält einen kleinen Python-Proof-of-Concept zum Testen einer Informationsoffenlegung (CWE-200) in den öffentlichen Monitor-Endpunkten von Kener.
Die betroffenen Kener-Versionen sind 4.0.0 bis 4.1.5, und der Fehler ist in 4.1.6 behoben
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
Das Problem steht im Zusammenhang mit tag-basierten Monitor-Lookups, die versteckte oder inaktive Monitore offenlegen können, wenn die Abfrage nicht ordnungsgemäß gefiltert wird.
Dieser PoC ist gedacht für:
Verwende diesen PoC nicht gegen nicht autorisierte Ziele
Dieser PoC demonstriert, dass ein versteckter oder inaktiver Monitor weiterhin von öffentlichen Endpunkten zurückgegeben werden kann, wenn das Lookup keine Filterung wie die folgenden erzwingt:
Das korrigierte Verhalten ist, dass diese Endpunkte 404 / keine Übereinstimmung für versteckte oder inaktive Monitore zurückgeben sollten.
requests-PaketAbhängigkeiten installieren:
python3 -m pip install requests
Wenn du Datenbankzugriff hast, erstelle einen Monitor, der nicht öffentlich sichtbar sein sollte.
Für 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()
);
Du kannst bei Bedarf auch einen anderen Tag-Namen verwenden.
Stelle sicher, dass der Datensatz Folgendes erfüllt:
status = 'INACTIVE' oder anderweitig nicht aktivis_hidden = 'YES'Führe nun das PoC-Skript aus.
Wenn die Anwendung anfällig ist, können ein oder mehrere Endpunkte Folgendes zurückgeben:
Dies zeigt an, dass der versteckte/inaktive Monitor über eine öffentliche API offengelegt wird.
Mit der ordnungsgemäßen Filterung sollte die Antwort stattdessen Folgendes sein:
Dies ist das erwartete Verhalten nach dem Fix:
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
Das Problem ist nicht bloß die Geheimhaltung des Tags. Das Problem ist, dass ein öffentlicher Endpunkt niemals versteckte oder inaktive Monitor-Daten preisgeben sollte. Wenn ein Angreifer einen Monitor-Tag auf irgendeine Weise erfährt, kann er möglicherweise auf Folgendes zugreifen:
Der Angreifer muss den Tag trotzdem irgendwie finden, durch Raten, durch Brute-Force oder auf andere Weise.
Prüfe, dass:
Stelle sicher, dass die App lokal läuft und der Port übereinstimmt:
BASE_URL=http://localhost:3000
Verwende die korrekte URL, zum Beispiel:
BASE_URL=https://localhost:3000
Verwende diesen PoC nur:
Führe dies nicht ohne Genehmigung gegen externe oder Drittsysteme aus.
Dieser PoC prüft, ob ein versteckter oder inaktiver Monitor-Tag weiterhin über öffentliche Kener-API-Endpunkte zugänglich ist.