CVE-2026-53508 — oasdiff
Fix: oasdiff/oasdiff#832CVE-2026-53508 is a CWE-73 vulnerability in github.com/oasdiff/oasdiff. A fix is available for github.com/oasdiff/oasdiff — see the affected versions and patch details below.
oasdiff does not enforce --allow-external-refs=false on the git-revision load path (SSRF / local file read)
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
github.com/oasdiff/oasdiffReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
From v1.13.2 through v1.18.0, oasdiff did not enforce --allow-external-refs=false (library: openapi3.Loader.IsExternalRefsAllowed = false) when loading a spec from a git revision (the rev:path form, e.g. main:openapi.yaml). External $refs were resolved on that load path even when external refs were explicitly disabled, so the mitigation silently did not apply there.
Impact
A caller who set --allow-external-refs=false specifically to safely process untrusted specs remained exposed — on the git-revision load path only — to:
- SSRF via
$ref: "http://<internal-host>/…", and - Local file reads via
$ref: "/path"orfile://.
Affected callers:
- CLI:
oasdiff diff main:openapi.yaml HEAD:openapi.yaml --allow-external-refs=false(andbreaking/changelog/summary, and thegit-diff-driver) run over untrusted spec content. - Go library consumers of
github.com/oasdiff/oasdiff/loadthat setIsExternalRefsAllowed = falseand load from a git-revision source viaload.NewSpecInfo.
The file and URL load paths correctly enforced the setting; only the git-revision path was affected. Callers that left external refs at the default (true) are not in scope for this advisory.
Patches
v1.18.1 enforces the external-refs policy on the git-revision path (so --allow-external-refs=false now blocks external $refs there) and returns a dedicated exit code (123) when an external $ref is refused.
Workarounds
- Upgrade to v1.18.1, or
- Avoid the git-revision input form when processing untrusted specs with external refs disabled.
Notes
- Introduced in v1.13.2 (#832, which added
$ref-chain resolution on the git-revision path); fixed in v1.18.1 (#974, #975). - The permissive default (
allow-external-refs: true) and its zero-interaction exposure in CI via the GitHub Action is tracked separately in GHSA-fhj3-7267-7vv5 (oasdiff-action).
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/oasdiff/oasdiff | ≥ 1.13.2&&< 1.18.1 | 1.18.1go get github.com/oasdiff/oasdiff@v1.18.1 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/oasdiff/oasdiff, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/oasdiff/oasdiff to 1.18.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-53508 is resolved across your whole dependency graph.
Workarounds
Restrict outbound requests from the affected component to an allowlist of hosts, block access to link-local and internal address ranges at the network layer, and require authentication on internal services so a forged request cannot reach them unauthenticated.
Frequently Asked Questions
Is CVE-2026-53508 in your dependencies?
Find it across Go, including transitive dependencies.