Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with shared peer API key
-
DeliveryEnumerate valid connector id via /peer/search
-
ExploitRequest item with non-existent entity id
-
ExecutionForce upstream 404 FetchError serialized to response
-
PersistRead leaked X-Api-Key / CF-Access-Client-Secret
-
ImpactFull admin control of Radarr/Sonarr
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires possession of the shared peer API key sent as the X-Api-Key header (PR:L) - by design this is handed to every peered 'friend', and there is no inbound peer allowlist, so key possession is the only check. If the target deployment is gated behind Cloudflare Access, valid CF Access service-token headers are also required. The attacker then hits an endpoint that propagates FetchError to handle-error.ts - GET /peer/items/:id or GET /servers/health (leak the internal *arr X-Api-Key), or GET /torznab/download/:id (leaks another peer's key plus CF-Access-Client-Secret) - and forces an upstream non-2xx response (e.g., a 404 via a non-existent entity id) or a schema-validation failure. No user interaction and no race are needed. Limiting factors: exploitation is confined to holders of the shared peer key; the /peer/search and /items routes swallow the error and return [], so they are not affected; and the flaw is fully remediated only by upgrading to 0.1.0. |
| Impact | This is a genuine, high-value disclosure flaw for anyone actually running jack, tempered only by the product's tiny footprint. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N, 8.4) is internally consistent with the description: network-reachable, low attack complexity, no user interaction, and PR:L reflecting the shared peer API key every 'friend' already holds. The high subsequent-system impact (SC:H/SI:H) is well justified - the leaked internal X-Api-Key grants full administrative control of the backend Radarr/Sonarr, a deliberate trust boundary the architecture otherwise enforces. The GHSA advisory includes a concrete step-by-step PoC (force a 404 from *arr by requesting a non-existent entity id), so triggering is trivial and attacker-controlled with no race. No EPSS score is provided in the input and the issue is not in CISA KEV, so there is no evidence of active or widespread exploitation; the vuln.today Decision label is 'this_week', indicating prompt-but-not-emergency remediation. The practical risk is bounded by who holds the peer key - by design a trusted-friends set with no inbound allowlist - rather than the open internet, which is why this is a real same-week priority for operators but not a mass-exploitation event. EPSS data is absent and should be checked to refine prioritization. |
| Exploit ScenarioDerived | A peer who has been issued the shared jack API key (plus Cloudflare Access service-token headers if the instance is CF-gated) calls GET /peer/items/:id with a valid connector id from /peer/search but a non-existent entity id, forcing the upstream Radarr/Sonarr to return a 404. jack serializes the raw FetchError - including the outbound X-Api-Key header - into the HTTP response body, handing the peer the internal *arr admin key. A public PoC reference exists in the GHSA advisory demonstrating exactly this; it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
jack prior to 0.1.0 serializes raw upstream FetchError objects into HTTP error responses, so an authenticated peer can read back the outbound request headers jack used - including the internal Radarr/Sonarr X-Api-Key and connector secrets such as CF-Access-Client-Secret. Exploitation requires only the shared peer API key sent as X-Api-Key (PR:L) plus valid Cloudflare Access service-token headers if the deployment is CF-Access gated; the attacker then forces an upstream non-2xx or schema-validation failure through GET /peer/items/:id or GET /servers/health (leaking the *arr key) or GET /torznab/download/:id (leaking another peer's key and CF Access secrets), with no race and no user interaction. The GitHub security advisory publishes detailed reproduction steps, but no confirmed working exploit tooling and no CISA KEV listing; the flaw is fixed in version 0.1.0 and carries a vendor-prioritized 'this week' remediation label.
RemediationAI
Vendor-released patch: upgrade to jack 0.1.0 (release tag v0.1.0, fixing commit 2b296b5137acca476f34a23b692dd8c04ae1f148), per advisory https://github.com/roziscoding/jack/security/advisories/GHSA-8gw5-7585-4997. Because leaked credentials remain valid after patching, rotate every Radarr/Sonarr X-Api-Key and every Cloudflare Access client secret that any peer could have harvested via /peer/items/:id, /servers/health or /torznab/download/:id; treat any peer you do not fully trust as having already read them. The 0.1.0 release also replaces the single shared secret with per-peer API keys scoped to the peer API (a peer key can no longer query the Torznab indexer or act as the download client) and with auto-issued managed keys registered in Radarr/Sonarr, so issue a separate key per peer after upgrading and revoke individually if a peer is compromised. The advisory's code-level guidance for anyone maintaining a fork is to return only { code, message } from handle-error.ts, stop attaching headers/body to FetchError (or store them non-enumerably or run them through redactObject() before serialization), and audit the http.request.headers span attribute set in lib/servers/base.ts; it also recommends serving peers over https:// only, since the peer key travels in the X-Api-Key header.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
jack is a Bun/Hono TypeScript service that brokers media-library sharing between friends' Radarr/Sonarr stacks peer-to-peer. The root cause is CWE-200 (with a CWE-209 information-exposure-through-error-message component): middleware/handle-error.ts returns the error object directly via c.json({ ok: false, error }, status), and lib/errors/FetchError.ts declares its extras field as a public, enumerable class property, so JSON serialization emits it. lib/servers/base.ts populates that field by throwing new FetchError(..., { body, method, headers: initWithAuth.headers }) on any upstream non-2xx response and on schema-validation failures, and those headers combine this.headers (custom connector headers such as CF-Access-Client-Secret) with the auth header carrying the *arr API key. lib/redact.ts applies redaction to logs and spans only, leaving the HTTP response path unredacted; the advisory additionally notes that lib/servers/base.ts writes the same outbound headers into the http.request.headers span attribute. The trust-boundary violation is architectural: even GET /servers deliberately omits API keys, and the redaction layer exists, yet the error serializer bypasses both. Only routes that propagate FetchError to the handler are exposed - GET /peer/items/:id, GET /servers/health and GET /torznab/download/:id - while /peer/search and /items catch the error and return an empty array, so they are unaffected.
Know when Jack 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N
Network-reachable with the shared peer key so AV:N/AC:L/PR:L/UI:N; disclosed key crosses into the *arr backend (S:C) granting read (C:H) and full config modification (I:H), with no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
jack lets users share media libraries through their Radarr/Sonarr stack, peer-to-peer. Prior to 0.1.0, middleware/handle-error.ts serializes raw FetchError objects into HTTP responses. lib/servers/base.ts attaches outbound request headers on upstream non-success responses and schema-validation failures; the public extras field in lib/errors/FetchError.ts remains enumerable and is emitted by JSON serialization. These headers include the internal Radarr/Sonarr X-Api-Key and custom connector headers such as CF-Access-Client-Secret. lib/redact.ts redacts logs and spans but not this response path. Any client with the shared peer API key, plus Cloudflare Access credentials if required by the deployment, can force an error without a race or user interaction. GET /peer/items/:id and GET /servers/health can expose the internal media-server key, while GET /torznab/download/:id can expose another peer's key and Cloudflare Access secrets. The /peer/search and /items routes catch these errors and are not affected. Disclosed internal keys grant full administrative control of the corresponding Radarr/Sonarr instance, crossing the intended boundary between friends' shared peer access and private backend credentials. This issue is fixed in version 0.1.0.
Technical POC Analysis
CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), with CWE-209 as the mechanism: generation of an error message containing sensitive information.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-62979 is a high-severity flaw in the jack connector (pre-0.1.0) that allows an authenticated peer to extract upstream API keys and Cloudflare Access secrets through crafted error responses. This affects all jack deployments integrated with Radarr/Sonarr or behind CF Access, exposing credentials that could enable lateral movement and unauthorized control over media infrastructure. Leadership should care because leaked *arr and connector secrets can undermine the integrity of the entire media pipeline and violate access control assumptions.
Restrict jack HTTP endpoints to trusted peer networks, rotate all *arr API keys and CF Access secrets, and monitor for abnormal peer requests; upgrade to 0.1.0 as soon as possible.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-114471
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB