
A python3 PoC for CVE-2026-105030 Kener 4.0.0 before 4.1.6 Hidden Monitor Data Disclosure via Dashboard API
This repository contains a small Python proof-of-concept for testing an information disclosure (CWE-200) issue in Kener's public monitor endpoints. At the time of publication, no other public PoC was identified.
The Kener versions affected are 4.0.0 through to 4.1.5, and it is fixed in 4.1.6
https://www.rapid7.com/db/vulnerabilities/cve-2026-105030/
The issue is associated with tag-based monitor lookups that can expose hidden or inactive monitors when the query is not properly filtered.
This PoC is intended for:
Do not use this poc against unauthorized targets
This PoC demonstrates that a hidden or inactive monitor may still be returned by public endpoints when the lookup does not enforce filtering such as:
The fixed behavior is that these endpoints should return 404 / no match for hidden or inactive monitors.
requests packageInstall dependencies:
python3 -m pip install requests
If you have database access, create a monitor that should not be publicly visible.
For 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()
);
You can also use a different tag name if needed.
Make sure the record is:
status = 'INACTIVE' or otherwise not activeis_hidden = 'YES'Now run the PoC script.
If the application is vulnerable, one or more endpoints may return:
This indicates the hidden/inactive monitor is being exposed via a public API.
With the proper filtering, the response should instead be:
This is the expected behavior after the fix:
const monitors = await db.getMonitors({
tag,
status: GC.ACTIVE,
is_hidden: GC.NO,
});
The issue is not merely the secrecy of the tag. The problem is that a public endpoint should never reveal hidden or inactive monitor data. If an attacker learns a monitor tag by any means, they may be able to access:
The attacker still has to find the tag somehow, by guessing, by bruteforce, or by other means.
Check that:
Make sure the app is running locally and the port matches:
BASE_URL=http://localhost:3000
Use the correct URL, for example:
BASE_URL=https://localhost:3000
Use this PoC only:
Do not run this against external or third-party systems without permission.
This PoC checks whether a hidden or inactive monitor tag is still accessible through public Kener API endpoints.