Skip to main content

oasdiff EUVDEUVD-2026-68727

| CVE-2026-53508 MEDIUM
External Control of File Name or Path (CWE-73)
2026-07-07 https://github.com/oasdiff/oasdiff GHSA-2jcc-mxv7-p3f9
6.0
CVSS 4.0 · Vendor: https://github.com/oasdiff/oasdiff
Share

Severity by source

Vendor (https://github.com/oasdiff/oasdiff) PRIMARY
6.0 MEDIUM
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/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
vuln.today AI
8.6 HIGH

Network-reachable via untrusted spec content; no privileges required to craft payload; scope changes because SSRF can compromise systems beyond the oasdiff process; no integrity or availability impact.

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

Primary rating from Vendor (https://github.com/oasdiff/oasdiff).

CVSS VectorVendor: https://github.com/oasdiff/oasdiff

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
P
Scope
X

Lifecycle Timeline

2
CVSS changed
Aug 31, 2026 - 19:22 NVD
6.0 (MEDIUM)
Analysis Generated
Jul 08, 2026 - 00:32 vuln.today

DescriptionCVE.org

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" 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 $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).

AnalysisAI

Security-control bypass in oasdiff v1.13.2-v1.18.0 silently negates the --allow-external-refs=false safety flag when loading OpenAPI specifications via the git-revision input form (rev:path, e.g. main:openapi.yaml), leaving callers exposed to SSRF and local file disclosure despite explicitly intending to sandbox untrusted spec processing. Malicious $ref URIs embedded in a spec - pointing to internal HTTP endpoints or local filesystem paths - are resolved on the git-revision load path even when the policy is set, while the file-path and URL load paths correctly enforce the restriction. No public exploit code has been identified at time of analysis and the vulnerability is not in CISA KEV; vendor-released patch v1.18.1 is available.

Technical ContextAI

oasdiff is a Go library and CLI tool (pkg:go/github.com_oasdiff_oasdiff) for diffing OpenAPI 3.x specification files, commonly deployed in CI/CD pipelines to detect breaking API changes. The root cause is CWE-73 (External Control of File Name or Path): user-controlled data - specifically, external $ref strings embedded in an OpenAPI spec - can direct the loader to resolve arbitrary file-system paths or network URLs. The git-revision loading path (load.NewSpecInfo with rev:path syntax), introduced in v1.13.2 via PR #832 to support $ref-chain resolution when diffing git revisions, omitted the IsExternalRefsAllowed check that the file-path and URL loading paths correctly applied. This created a silent gap: calling code that set openapi3.Loader.IsExternalRefsAllowed = false to block external $ref resolution received no error and no warning, while the loader continued resolving external references on the git-revision code path. SSRF payloads can target internal HTTP endpoints (including cloud metadata services such as AWS IMDSv1), and file-scheme or bare-path references can read files accessible to the oasdiff process.

RemediationAI

Upgrade to oasdiff v1.18.1, which enforces the --allow-external-refs=false policy on the git-revision loading path and returns a dedicated exit code (123) when an external $ref is refused; the fix is implemented in PRs #974 and #975 (https://github.com/oasdiff/oasdiff/pull/974, https://github.com/oasdiff/oasdiff/pull/975). If upgrading immediately is not possible, the primary workaround is to avoid the git-revision input form (rev:path syntax, e.g. main:openapi.yaml) when processing untrusted OpenAPI specs with external refs disabled; instead, export each revision to a temporary file and pass the file path to oasdiff - the file-path loading form correctly enforced the policy in all affected versions. This workaround adds a pipeline step (git show > tmpfile) and sacrifices the convenience of the native git-revision syntax. Callers operating entirely within a trusted content environment (no untrusted spec input) face materially lower risk but should still upgrade to eliminate the latent exposure. The GitHub Security Advisory at https://github.com/oasdiff/oasdiff/security/advisories/GHSA-2jcc-mxv7-p3f9 is the authoritative reference.

Vendor StatusVendor

SUSE

Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected

Share

EUVD-2026-68727 vulnerability details – vuln.today

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