Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-exploitable with no authentication or user interaction against default documented setup; confidentiality high due to cryptographic key exposure; no integrity or availability impact.
Primary rating from Vendor (https://github.com/muxinc/next-video).
CVSS VectorVendor: https://github.com/muxinc/next-video
Lifecycle Timeline
3Blast Radius
ecosystem impact- 1 npm packages depend on next-video (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 2.8.1.
DescriptionCVE.org
Impact
The HTTP route handler exported by next-video/request-handler - which the README instructs consumers to mount at /api/video - allows an unauthenticated remote attacker to read arbitrary .json files from the production filesystem of any application following the documented setup.
The handler's GET endpoint accepts a url query parameter and uses it to locate and serve a JSON asset descriptor from disk. The only guard between "remote URL" and "local file path" is a regex check for ^https?://. Any value that does not match that prefix is treated as a local path, .json is appended, and the file is read with fs.readFile and returned in the HTTP response - with no authentication, no path canonicalization, and no traversal guard.
On a typical Next.js deployment this exposes, at minimum:
- The Next.js Server Actions AES encryption key (
.next/server/server-reference-manifest.json) - The Next.js Preview/Draft Mode keys (
previewModeId,previewModeSigningKey,previewModeEncryptionKey) - Internal build manifests, route registries, and absolute runtime paths
- Application-specific asset metadata (e.g. Mux
uploadId,assetId,playbackIdvalues stored invideos/*.json)
Any application that mounted /api/video following the documented one-liner is affected.
Patches
2.8.1
Workarounds
Until a patched version is available, wrap the exported handler in your own route file and validate the url parameter before passing it through:
- Reject any
urlvalue that does not begin withhttps://, or that does not match a known allowlist of trusted remote hosts. - Alternatively, remove the
/api/videoroute entirely if your application only uses build-timeimportof local video files and does not use<Video src="https://...">with string URLs at runtime.
References
src/request-handler.ts- the vulnerable GET handlersrc/assets.ts-getAssetPath(), where the local-vs-remote branching occurssrc/utils/utils.ts-isRemote(), the sole guard between the two branchessrc/config.ts-loadAsset(), which performs the unconstrainedfs.readFile
AnalysisAI
Unauthenticated arbitrary JSON file read in the npm package next-video (versions ≤ 2.8.0) exposes cryptographic server secrets to any remote attacker who can reach the /api/video route. The /api/video request handler accepts a url query parameter and, for any value not beginning with https://, constructs a local filesystem path by appending .json and serving the file contents directly with no authentication, no path canonicalization, and no directory traversal guard. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | The application must have mounted the next-video request handler at /api/video (or any route) as recommended in the library's official README - this is the documented default setup, not a non-default configuration. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | Real-world risk is high despite the absence of a formal CVSS score in the available input data. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | The primary fix is upgrading next-video to version 2.8.1 (https://github.com/muxinc/next-video/releases/tag/v2.8.1), which introduces the assertSafeAssetSource() function that validates all local paths resolve within the configured video folder using path.resolve and path.relative containment checks before serving any file; the patch commit is at https://github.com/muxinc/next-video/commit/73abf1d534c2ac48db546ecfed0e89cbaf124f6f. … Detailed patch versions, workarounds, and compensating controls in full report. |
Threat intelligence, references, and detailed analysis are available after sign-in.
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-77690
GHSA-2p39-2jf3-fv2q