
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.
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.