Skip to main content

jack CVE-2026-62979

| EUVDEUVD-2026-114471 HIGH
Information Exposure (CWE-200)
2026-10-30 GitHub_M
8.4
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with shared peer API key
  2. Delivery
    Enumerate valid connector id via /peer/search
  3. Exploit
    Request item with non-existent entity id
  4. Execution
    Force upstream 404 FetchError serialized to response
  5. Persist
    Read leaked X-Api-Key / CF-Access-Client-Secret
  6. Impact
    Full 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

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

jack < 0.1.0

Affected Packages

euvd jack fix: 0.1.0

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

Vendor (GitHub_M) PRIMARY 8.4 HIGH
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
vuln.today AI 9.6 CRITICAL

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 22:03 EUVD
CVE Published
Oct 30, 2026 - 20:55 cve.org
HIGH 8.4

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Rare
obscure self-hosted hobby project, tiny peer-to-peer footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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