GitHub Advisoryadvisory · Go

GHSA-2jcc-mxv7-p3f9 oasdiff does not enforce --allow-external-refs=false on the git-revision load path (SSRF / local file read)

MEDIUM Published 2026-07-07 Modified 2026-07-07 Official page ↗
Aliases
CVE-2026-53508
Ecosystem
Go
Packages
github.com/oasdiff/oasdiff
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Weaknesses
CWE-693, CWE-73, CWE-918
Reviewed
2026-07-07

Affected packages

• Go github.com/oasdiff/oasdiff: >= 1.13.2, < 1.18.1 → fixed in 1.18.1

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 `$ref`s 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:///…"`, and • Local file reads via `$ref: "/path"` or `file://`. Affected callers: • CLI: `oasdiff diff main:openapi.yaml HEAD:openapi.yaml --allow-external-refs=false` (and `breaking` / `changelog` / `summary`, and the `git-diff-driver`) run over untrusted spec content. • Go library consumers of `github.com/oasdiff/oasdiff/load` that set `IsExternalRefsAllowed = false` and load from a git-revision source via `load.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 `$ref`s 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).

Related

Alias · CVE (1)

  • CVE-2026-53508 oasdiff is a command-line and Go package that compares and detects breaking changes in OpenAPI specs. vulnerability

Weakness · CWE (3)

  • CWE-693 Protection Mechanism Failure weakness
  • CWE-73 External Control of File Name or Path weakness
  • CWE-918 Server-Side Request Forgery weakness

References