<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Oras-Go (&lt;= 2.6.1) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/oras-go--2.6.1/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 17 Sep 2026 19:11:06 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/oras-go--2.6.1/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Arbitrary File Write in oras-go via Symlink-Chain Bypass</title><link>https://feed.craftedsignal.io/briefs/2026-09-oras-go-symlink-bypass/</link><pubDate>Thu, 17 Sep 2026 19:11:06 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-oras-go-symlink-bypass/</guid><description>The oras-go library contains a path traversal vulnerability in its OCI layer extraction logic that allows attackers to overwrite arbitrary files on the host filesystem via a symlink-chain bypass.</description><content:encoded><![CDATA[<p>The <code>content/file.Store</code> component in <code>oras-go</code> (versions <code>&lt;= v2.6.1</code>) is vulnerable to an arbitrary file write attack during the extraction of OCI layer tarballs. The vulnerability is triggered when a descriptor includes the annotation <code>io.deis.oras.content.unpack: &quot;true&quot;</code>. The library performs lexical path validation using <code>filepath.Join</code> to ensure extracted files stay within the target extraction directory. However, this mechanism fails to account for kernel-level symlink resolution, where intermediate directory components may be symlinks that redirect subsequent path components.</p>
<p>An attacker can create a malicious OCI layer containing a symlink chain that lexically appears to reside within the extraction root but resolves to an arbitrary absolute path at the kernel level. A follow-up regular file entry with the same name is then opened without <code>O_NOFOLLOW</code> flags, allowing the attacker to write content through the symlink and overwrite files outside the intended working directory. This vulnerability provides an RCE primitive for users or automated systems that extract untrusted container images using affected <code>oras-go</code> versions.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker prepares a malicious OCI layer tarball and publishes it to a registry, setting <code>io.deis.oras.content.unpack: &quot;true&quot;</code> in the layer's descriptor.</li>
<li>The victim invokes <code>oras.Copy</code> or a similar function to pull and unpack the malicious layer into a local directory using an affected <code>oras-go</code> version.</li>
<li>The extraction routine parses the tar headers, creating a sequence of nested directories that facilitate a deep path structure.</li>
<li>The library extracts a symlink entry named &quot;up&quot; that points back to the base extraction directory, which is validated lexically as compliant.</li>
<li>The library extracts an &quot;escape&quot; symlink whose target is crafted with <code>..</code> components to cross the &quot;up&quot; symlink and escape the extraction root at the kernel-resolution level.</li>
<li>The library extracts a regular file entry sharing the name &quot;escape&quot;, triggering the <code>writeFile</code> logic.</li>
<li>The <code>writeFile</code> function opens the path using <code>os.OpenFile</code> without <code>O_NOFOLLOW</code>, causing the kernel to follow the symlink and perform the write operation at the attacker-controlled absolute path.</li>
<li>The final payload is written to the target location on the host, achieving arbitrary file overwrite.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows attackers to overwrite critical system files, configuration files, or binaries on the host system where <code>oras-go</code> is used for image extraction. This can lead to local privilege escalation or arbitrary code execution. The scope includes any application or service relying on <code>oras-go</code> for OCI artifact processing.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade <code>oras-go</code> to a version that addresses this vulnerability (post-v2.6.1) once a patch is available.</li>
<li>If patching is not immediately feasible, restrict the environment where untrusted images are unpacked to a sandboxed, low-privilege container or a dedicated filesystem namespace.</li>
<li>Implement post-extraction integrity checks to ensure critical system files have not been modified by the container runtime or image manipulation tools.</li>
<li>Monitor for unexpected file modifications in sensitive directories (e.g., <code>/etc/</code>, <code>/root/.ssh/</code>) originating from processes that utilize <code>oras-go</code>.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>arbitrary-file-write</category><category>path-traversal</category><category>library-vulnerability</category><category>supply-chain</category></item></channel></rss>