Katalog CVE

CVE-2026-100863

ŚrednieCVSS 5.0
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.25%

Percentyl 14 - wyżej niż 14% wszystkich znanych CVE

Streszczenie

Heym w wersjach 0.0.90 i wcześniejszych zawiera dwie luki w zabezpieczeniach egress SSRF, obie naprawione w app/services/ssrf_guard.py w wersji 0.0.91. Po pierwsze, loader obrazów LLM (_load_image_bytes) pobierał kontrolowane przez wywołującego adresy URL HTTP/HTTPS za pomocą zwykłego httpx.get, stosując tylko sprawdzenie schematu i omijając klienta HTTP z przypiętym egress. Po drugie, _is_public_address odpakowywał tylko adresy IPv6 mapowane na IPv4, więc formy przejściowe IPv6 — prefiks NAT64 64:ff9b::/96, przestarzałe adresy IPv4-compatible ::x.x.x.x oraz 6to4 (2002::/16) — mogły przenosić adresy loopback, RFC1918, link-local lub cloud-metadata IPv4 poza walidację URL i przypięcie IP przy połączeniu.

Ocena ryzyka

Atakujący przez webhook lub API może wymusić żądania do wewnętrznych zasobów, w tym loopback, sieci RFC1918 i punktów końcowych metadanych chmury, co może prowadzić do ujawnienia danych lub eskalacji uprawnień. Luka wymaga, aby autor workflow użył wyrażenia 'imageInput': '$userInput.body.imageUrl'.

Rekomendacja

Zaktualizuj Heym do wersji 0.0.91 lub nowszej, która kieruje loader obrazów przez guard_http_url i chronionego klienta, ocenia adresy NAT64 i IPv4-compatible na podstawie osadzonego adresu IPv4 oraz odrzuca 64:ff9b:1::/48, 6to4 i Teredo. Przejrzyj workflowy pod kątem użycia wyrażeń imageInput z danymi wejściowymi użytkownika.

Inne podatności w Heym

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS