Description
Heym versions 0.0.90 and earlier contain two server-side request forgery (SSRF) egress gaps, both remediated in app/services/ssrf_guard.py in 0.0.91. First, the LLM image-edit input loader (_load_image_bytes) fetched caller-controlled HTTP/HTTPS URLs with a bare httpx.get, applying only a scheme check and bypassing the egress-pinning HTTP client; because the workflow DSL supports "imageInput": "$userInput.body.imageUrl", a webhook or API caller can choose the fetch target when a workflow author uses that expression, allowing requests to loopback, RFC1918, and cloud metadata endpoints. Second, _is_public_address unwrapped only IPv4-mapped IPv6 addresses, so IPv6 transition forms — the NAT64 well-known prefix 64:ff9b::/96, deprecated IPv4-compatible ::x.x.x.x addresses, and 6to4 (2002::/16, classified as globally routable by Python 3.11.0 through 3.11.9) — could carry loopback, RFC1918, link-local, or cloud-metadata IPv4 destinations past both the initial URL validation and the dial-time IP pin. Version 0.0.91 routes the image loader through guard_http_url and the guarded client, evaluates NAT64 and IPv4-compatible addresses by their embedded IPv4 address, and refuses 64:ff9b:1::/48, 6to4, and Teredo (2001::/32) outright.
Published: 2026-09-27
Score: 5.3 Medium
EPSS: n/a
KEV: No
Impact: Remote Server‑Side Request Forgery (SSRF) enabling access to internal, loopback, RFC1918, and cloud metadata endpoints
Action: Apply Patch
AI Analysis

Impact

Heym versions 0.0.90 and earlier allow a server‑side request forgery when a user supplies an image URL through the workflow DSL field "imageInput": "$userInput.body.imageUrl". The application fetches the URL using a bare httpx.get, ignoring egress‑pinning and performing only a scheme check; this permits an attacker to direct the server to reach any HTTP/HTTPS endpoint, including localhost, private networks, and cloud metadata services. In addition, the code incorrectly treats IPv6 transition forms such as NAT64, IPv4‑compatible, and 6to4 addresses as publicly routable, meaning the same flaw also applies to requests resolved via embedded IPv4 destinations. The impact is that an attacker can read or manipulate data on internal systems or leak information through metadata endpoints, compromising confidentiality, integrity, and potentially aiding further exploitation.

Affected Systems

The vulnerability is present in Heym, a product of heymrun, on all releases 0.0.90 and earlier. Version 0.0.91 and later contain a guard module that routes image loading through a vetted HTTP client, evaluates IPv6 addresses correctly, and denies requests to NAT64, IPv4‑compatible, 6to4, and Teredo addresses. No other products are mentioned in the advisory.

Risk and Exploitability

The CVSS score of 5.3 indicates a moderate severity of the vulnerability. The EPSS score is not provided, and the vulnerability is not listed in the CISA KEV catalog, suggesting no publicly confirmed exploits yet. However, the flaw can be triggered via normal API or webhook calls, making it potentially exploitable by any actor who can influence the image URL supplied by a workflow author. The lack of additional controls such as egress‑pinning or IP whitelisting increases the risk of unwanted internal requests.

Generated by OpenCVE AI on September 27, 2026 at 04:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Heym to version 0.0.91 or later, which routes image fetching through a guarded HTTP client and rejects unsafe IPv6 transition addresses
  • If an upgrade is not immediately possible, disable or restrict the "imageInput" field so that it accepts only trusted internal URLs and block external network access from the Heym server
  • Configure network egress filtering or firewall rules to deny outbound connections to loopback, RFC1918, and cloud‑metadata IP ranges from the application host

Generated by OpenCVE AI on September 27, 2026 at 04:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 27 Sep 2026 02:00:00 +0000

Type Values Removed Values Added
Description Heym versions 0.0.90 and earlier contain two server-side request forgery (SSRF) egress gaps, both remediated in app/services/ssrf_guard.py in 0.0.91. First, the LLM image-edit input loader (_load_image_bytes) fetched caller-controlled HTTP/HTTPS URLs with a bare httpx.get, applying only a scheme check and bypassing the egress-pinning HTTP client; because the workflow DSL supports "imageInput": "$userInput.body.imageUrl", a webhook or API caller can choose the fetch target when a workflow author uses that expression, allowing requests to loopback, RFC1918, and cloud metadata endpoints. Second, _is_public_address unwrapped only IPv4-mapped IPv6 addresses, so IPv6 transition forms — the NAT64 well-known prefix 64:ff9b::/96, deprecated IPv4-compatible ::x.x.x.x addresses, and 6to4 (2002::/16, classified as globally routable by Python 3.11.0 through 3.11.9) — could carry loopback, RFC1918, link-local, or cloud-metadata IPv4 destinations past both the initial URL validation and the dial-time IP pin. Version 0.0.91 routes the image loader through guard_http_url and the guarded client, evaluates NAT64 and IPv4-compatible addresses by their embedded IPv4 address, and refuses 64:ff9b:1::/48, 6to4, and Teredo (2001::/32) outright.
Title Heym before 0.0.91 SSRF via image fetching and IPv6 validation
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N'}

cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-27T01:28:52.561Z

Reserved: 2026-09-27T00:20:54.407Z

Link: CVE-2026-100863

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-27T02:17:26.117

Modified: 2026-09-27T02:17:26.117

Link: CVE-2026-100863

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-27T04:30:19Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)