---
id: CVE-2026-85731
title: oras-go is a Go library for managing OCI artifacts
summary: >-
  oras-go is a Go library for managing OCI artifacts. Prior to 2.6.2,
  content/file.Store extraction of OCI layers marked with
  io.deis.oras.content.unpack=true can write outside the store working
  directory. The pushDir path through extractT…
severity: high
cvss: 8.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'
cwe:
  - CWE-22
  - CWE-59
vendor: oras-project
product: oras-go
affected:
  - oras-go < 2.6.2
published: '2026-09-16'
updated: '2026-09-16'
sourceUpdated: '2026-09-16T18:17:17.963'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-85731'
references:
  - url: >-
      https://github.com/oras-project/oras-go/commit/adab2f25ea95ef4e6e41f50db9266a6701399422
    label: security-advisories@github.com
  - url: 'https://github.com/oras-project/oras-go/releases/tag/v2.6.2'
    label: security-advisories@github.com
  - url: >-
      https://github.com/oras-project/oras-go/security/advisories/GHSA-m37j-52j7-pjw7
    label: security-advisories@github.com
  - url: >-
      https://github.com/oras-project/oras-go/security/advisories/GHSA-m37j-52j7-pjw7
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-85731.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-85731'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-85731'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-85731'
  - url: 'https://github.com/advisories/GHSA-m37j-52j7-pjw7'
  - url: 'https://github.com/oras-project/oras-go'
tags:
  - nvd
  - cve.org
  - exploit-available
  - csaf
  - vex
  - red-hat
  - ghsa
  - go
  - osv
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-09-16T17:24:00.719255Z'
ingestedAt: '2026-09-16T16:59:56.587Z'
aliases:
  - GHSA-m37j-52j7-pjw7
ecosystem: go
patched:
  - oras.land/oras-go/v2 2.6.2
epss: 0.0063
epssPercentile: 0.48008
---

## Overview

oras-go is a Go library for managing OCI artifacts. Prior to 2.6.2, content/file.Store extraction of OCI layers marked with io.deis.oras.content.unpack=true can write outside the store working directory. The pushDir path through extractTarDirectory and ensureLinkPath validates symlink targets lexically, resolveRelToBase skips its parent-symlink walk for root-level entries, and writeFile follows a terminal symlink when opening a regular file. A malicious archive can therefore create a symlink chain whose lexical target remains inside the extraction root but whose resolved target is an attacker-selected absolute path, then overwrite that target with a same-named regular-file entry even when AllowPathTraversalOnWrite is false. Pulling an attacker-controlled artifact can create or overwrite any file writable by the process and may lead to code execution. This issue is fixed in version 2.6.2.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · updated 2026-09-16 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-85731.json)

## Package advisory (CVE-2026-85731)

Affected packages:

- `oras.land/oras-go/v2 <= 2.6.1`

Patched in:

- `oras.land/oras-go/v2 2.6.2`

Source: https://github.com/advisories/GHSA-m37j-52j7-pjw7
