Skip to main content

Hemmelig CVE-2025-69206

MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2025-12-29 security-advisories@github.com
4.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as Hemmelig user
  2. Delivery
    Create Secret Request with rebinding/redirect webhook URL
  3. Exploit
    Server resolves and requests internal target
  4. Execution
    Reach loopback or internal network service
  5. Impact
    Probe 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

npm hemmelig fix: 7.3.3

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

Vendor (github) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

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

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
niche self-hosted open-source secret-sharing app, small deployment footprint
Exploit
POC
Public exploit code exists
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Affected Products (CPE)CVE.org

cpe:2.3:a:hemmelig:hemmelig:*:*:*:*:*:*:*:*

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy