
Un PoC python3 pour CVE-2026-105030 Kener 4.0.0 avant 4.1.6 Divulgation de données de surveillance masquées via l'API du tableau de bord
Ce dépôt contient un petit proof-of-concept Python pour tester un problème de divulgation d'informations (CWE-200) dans les endpoints publics de moniteurs de Kener. Au moment de la publication, aucun autre PoC public n'a été identifié.
Les versions de Kener affectées vont de 4.0.0 à 4.1.5, et le problème est corrigé dans la version 4.1.6
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
Le problème est lié aux recherches de moniteurs basées sur les tags, qui peuvent exposer des moniteurs cachés ou inactifs lorsque la requête n'est pas correctement filtrée.
Ce PoC est destiné à :
N'utilisez pas ce PoC contre des cibles non autorisées
Ce PoC démontre qu'un moniteur caché ou inactif peut encore être renvoyé par les endpoints publics lorsque la recherche n'applique pas de filtrage tel que :
Le comportement corrigé est que ces endpoints doivent renvoyer 404 / aucune correspondance pour les moniteurs cachés ou inactifs.
requestsInstaller les dépendances :
python3 -m pip install requests
Si vous avez accès à la base de données, créez un moniteur qui ne devrait pas être visible publiquement.
Pour 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()
);
Vous pouvez également utiliser un autre nom de balise si nécessaire.
Assurez-vous que l'enregistrement est :
status = 'INACTIVE' ou sinon inactifis_hidden = 'YES'Exécutez maintenant le script PoC.
Si l'application est vulnérable, un ou plusieurs endpoints peuvent renvoyer :
Cela indique que le monitor masqué/inactif est exposé via une API publique.
Avec le filtrage approprié, la réponse devrait plutôt être :
C'est le comportement attendu après la correction :
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
Le problème n'est pas simplement le secret du tag. Le problème est qu'un endpoint public ne devrait jamais révéler les données d'un monitor masqué ou inactif. Si un attaquant découvre un tag de monitor par n'importe quel moyen, il peut potentiellement accéder à :
L'attaquant doit toutefois trouver le tag d'une manière ou d'une autre, par devinette, par force brute ou par d'autres moyens.
Vérifiez que :
Assurez-vous que l'application est en cours d'exécution localement et que le port correspond :
BASE_URL=http://localhost:3000
Utilisez l'URL correcte, par exemple :
BASE_URL=https://localhost:3000
Utilisez ce PoC uniquement :
N'exécutez pas ce PoC contre des systèmes externes ou tiers sans autorisation.
Ce PoC vérifie si une balise de moniteur masquée ou inactive reste accessible via les points de terminaison publics de l'API Kener.