CVE-2026-33130
Uptime.Kuma Uptime Kuma 1.23.0 – 2.2.1
Raw vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:NSummary
CVE-2026-33130 is a medium-severity PHP Remote File Inclusion (CWE-98) vulnerability in Uptime.Kuma Uptime Kuma. Its CVSS base score is 6.5 (Medium).
Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 27th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2026-13670
Vulnerability Data
Uptime Kuma is an open source, self-hosted monitoring tool. In versions 1.23.0 through 2.2.0, the fix from GHSA-vffh-c9pq-4crh doesn't fully work to preventServer-side Template Injection (SSTI). The three mitigations added to the Liquid engine (root, relativeReference, dynamicPartials) only block quoted…
more
paths. If a project uses an unquoted absolute path, attackers can still read any file on the server. The original fix in notification-provider.js only constrains the first two steps of LiquidJS's file resolution (via root, relativeReference, and dynamicPartials options), but the third step, the require.resolve() fallback in liquid.node.js has no containment check, allowing unquoted absolute paths like /etc/passwd to resolve successfully. Quoted paths happen to be blocked only because the literal quote characters cause require.resolve('"/etc/passwd"') to throw a MODULE_NOT_FOUND error, not because of any intentional security measure. This issue has been fixed in version 2.2.1.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise Techniques
CVEs Like This One
Affected Assets
Mitigating Controls
Control response
—
—
—
V1.3.2V1.3.7V1.3.10
Mitigating Controls (NIST 800-53 r5) AI
Developer testing and static analysis can discover missing filename restrictions before deployment.
Validating all inputs before they reach include/require statements directly stops untrusted filenames from being used.
Enforcing access authorizations on resources limits what an included file can reach even if a bad name is supplied.
Information-flow rules can block the loading of external or unauthorized files into the PHP process.
Security engineering principles require use of safe templating APIs and proper escaping of external input.
Mitigating Controls (NIST CSF 2.0) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.
Secure SDLC practices such as input validation and allow-listing of include paths directly prevent the weakness.
Hardened runtime configuration (e.g., allow_url_include=off) directly blocks RFI even if code is flawed.
Execution restrictions can prevent the remote payload from running, while eliminating the weakness reduces the need for such controls.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
Security testing can detect RFI but does not prevent the weakness by itself.
Secure development lifecycle mandates input validation and safe include/require patterns that directly prevent remote file inclusion.
Application security requirements explicitly call for controls against injection and unsafe file operations.
Secure architecture principles reduce attack surface but do not specifically address dynamic file inclusion.
Secure coding standards directly require whitelisting and sanitization of filenames used in include/require statements.
Information access restriction limits what files can be read but does not address dynamic inclusion logic.