Hemmelig
CVE-2025-69206
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as Hemmelig user
-
DeliveryCreate Secret Request with rebinding/redirect webhook URL
-
ExploitServer resolves and requests internal target
-
ExecutionReach loopback or internal network service
-
ImpactProbe or exfiltrate internal resources
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) an authenticated account on the Hemmelig instance (CVSS PR:L) and (2) use of the Secret Requests feature's Webhook URL field, which is where unsanitized server-side requests originate. The specific bypass techniques are DNS rebinding via domains that resolve to private IPs (e.g., localtest.me → 127.0.0.1) or abuse of open-redirect services (e.g., httpbin.org/redirect-to?url=http://127.0.0.1) - the pre-7.3.3 isPublicUrl filter validated only the literal hostname string, never the resolved IP, and did not disable HTTP redirects. Limiting factors: the attacker must be authenticated, the webhook must actually fire (triggered when a secret is submitted against the request), and real impact is constrained by what internal services the server can reach; instances on 7.3.3+ (which add DNS resolution checks and redirect:'error') are not affected. |
| Impact | This is a genuine but moderate-severity issue, best characterized as a high-confidence low-impact flaw rather than an urgent priority. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3) is internally consistent with the description: network-reachable, low complexity, but requiring an authenticated account (PR:L) and yielding only limited confidentiality impact with no integrity or availability effect. Exploitation status is 'publicly available exploit code exists' - the GHSA advisory includes a working PoC (localtest.me and httpbin.org redirect payloads) - but there is NO CISA KEV listing and no EPSS score was provided in the input, so there is no evidence of active or widespread exploitation; POC availability must not be conflated with in-the-wild use. No SSVC decision data was supplied. The practical risk is bounded by two factors: (1) an attacker must already be an authenticated user of the instance, and (2) the impact is SSRF (C:L) whose real-world severity depends heavily on what internal services are reachable from the Hemmelig server - classic SSRF can escalate against cloud metadata endpoints (e.g., 169.254.169.254) or unauthenticated internal admin panels, which the base CVSS does not capture. Signals are consistent with no conflicts: all sources agree this is an authenticated, limited-impact SSRF with a confirmed vendor patch. |
| Exploit ScenarioDerived | An authenticated user of a self-hosted Hemmelig instance creates a Secret Request and sets the Webhook URL to a value that bypasses the private-IP blocklist - either a DNS-rebinding domain such as localtest.me (which resolves to 127.0.0.1) or an open-redirect like httpbin.org/redirect-to?url=http://127.0.0.1:PORT. When the webhook fires, the server issues an HTTP request to the internal target, letting the attacker reach loopback or internal-network services otherwise unreachable from outside. A public proof-of-concept demonstrating both payloads is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Server-side request forgery filter bypass in Hemmelig versions prior to 7.3.3 allows an authenticated user to direct the server to make HTTP requests to internal or private network resources by supplying a webhook URL in the Secret Requests feature that uses a DNS-rebinding domain such as localtest.me (which resolves to 127.0.0.1) or an open-redirect service such as httpbin.org/redirect-to. The pre-7.3.3 isPublicUrl validation only compared the literal hostname string against a regex blocklist and the HTTP client followed redirects, so neither the resolved IP nor the redirect target was ever checked. Exploitation requires an authenticated account (CVSS PR:L) and the webhook must actually fire when a secret is submitted; the assessed impact is limited (CVSS 4.3, C:L/I:N/A:N) because the attacker cannot read the response, only trigger requests to reachable internal services. Publicly available exploit code exists, and the vendor-released patch is 7.3.3.
RemediationAI
Upgrade Hemmelig to vendor-released patch version 7.3.3 or later, which is the version the advisory GHSA-vvxf-wj5w-6gj5 and commit 6c909e571d0797ee3bbd2c72e4eb767b57378228 identify as fixed; the patch adds DNS resolution and per-address private-range checks, blocks failing or empty DNS lookups, and sets redirect: 'error' plus a 5-second timeout on outbound webhook requests. Until upgrading, the most effective compensating control is to constrain the Hemmelig server's outbound network reach rather than relying on application logic: apply egress firewall rules, Kubernetes NetworkPolicy, or a forward proxy allowlist so the server cannot reach RFC1918, loopback, link-local (169.254.0.0/16 and fe80::/10), and unique-local (fc00::/7) destinations, accepting that this may also break legitimate webhooks to internal systems that were intentionally used. A second option is to disable or restrict the Secret Requests webhook field entirely for non-administrative users, or turn the Secret Requests feature off, at the cost of losing that notification capability; note that this removes only the specific sink used in the published proof of concept and that any other server-side fetch path would need separate review. Also block or monitor resolution of known rebinding helper domains such as localtest.me and prevent outbound access to public open-redirector services, since those were the two bypass vectors demonstrated in the public exploit. Vendor advisory: https://github.com/HemmeligOrg/Hemmelig.app/security/advisories/GHSA-vvxf-wj5w-6gj5.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a classic CWE-918 server-side request forgery rooted in a denylist-only URL validation. Hemmelig is a self-hosted messaging application with client-side encryption and self-destructing messages; its Secret Requests feature lets users configure a webhook URL that the server calls when a secret is created, which is the SSRF sink. The vulnerable code in api/lib/utils.ts implemented isPublicUrl as a synchronous check that parsed the URL, lowercased the hostname, and tested it against regex patterns for localhost, RFC1918 ranges, link-local addresses, and special domains such as .local and .internal. Two design gaps made this bypassable: the check never resolved the hostname to an IP address, so a domain like localtest.me that passes the string denylist but resolves to 127.0.0.1 was permitted (DNS rebinding / DNS-based bypass), and the outbound fetch in api/lib/webhook.ts and the secret-request webhook route followed redirects by default, so a public open redirector like httpbin.org could steer the request to an internal address. The upstream fix, commit 6c909e571d0797ee3bbd2c72e4eb767b57378228, converts isPublicUrl into an async function that resolves A and AAAA records with dns/promises, validates each resolved address with the is-ip library, rejects when resolution fails or returns nothing, adds explicit blocked hostname patterns, and sets redirect: 'error' plus a 5000 ms AbortSignal.timeout on outbound webhook fetches. The affected package is npm/hemmelig prior to 7.3.3, matching CPE cpe:2.3:a:hemmelig:hemmelig:*:*:*:*:*:*:*:*.
Know when Hemmelig gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Network-reachable webhook feature (AV:N/AC:L) requires an authenticated account (PR:L); SSRF yields limited read of internal responses (C:L) with no integrity or availability impact and no scope change.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Hemmelig is a messing app with with client-side encryption and self-destructing messages. Prior to version 7.3.3, a Server-Side Request Forgery (SSRF) filter bypass vulnerability exists in the webhook URL validation of the Secret Requests feature. The application attempts to block internal/private IP addresses but can be bypassed using DNS rebinding or open redirect services. This allows an authenticated user to make the server initiate HTTP requests to internal network resources. Version 7.3.3 contains a patch for the issue.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
NVD
CVE.org
EPSS
GitHub
Exploit-DB