Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious source tarball with escaping symlinks
-
DeliveryGet project to reference it as a tar source
-
ExploitVictim runs BuildStream fetch on Python <3.12
-
ExecutionSymlink following writes files outside extract dir
-
PersistArbitrary file write as build user
-
ImpactCode execution / host compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
|
| Exploitation Conditions | Requires the tar source plugin of BuildStream to fetch an attacker-controlled or untrusted source tarball containing symlinks that escape the extraction directory, AND the host must run Python < 3.12 (Python >= 3.12 with BuildStream >= 2.3.0 applies the tarfile extraction filter that blocks the escape). Exploitation is limited by: the victim must build/fetch an untrusted project (trusted-source-only projects are not affected), SHA256 hash pinning on already-tracked sources prevents MITM substitution, and impact is bounded to the privileges of the user running BuildStream. Not exploitable against default use of trusted, tracked sources. |
| Impact | The published CVSS 3.1 base score is 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), which paints this as a wormable, no-interaction, unauthenticated remote compromise. That rating is misleading when cross-referenced against the other signals. EPSS is only 0.19% (10th percentile) and CISA's SSVC decision is Exploitation=none, Automatable=yes, Technical Impact=total - i.e. no observed or public exploitation despite the high technical impact. There is no CISA KEV listing and no public POC. Critically, the description itself lists mitigations that contradict the PR:N/UI:N framing: exploitation requires the victim to fetch/build a BuildStream project that references a malicious or attacker-controlled source tarball, and it only works on Python < 3.12 (Python >= 3.12 with BuildStream >= 2.3.0 uses the tarfile extraction filter that blocks the symlink escape). SHA256 pinning on tracked sources further blocks MITM tampering of already-tracked projects. In practice this is a supply-chain / trusted-input problem gated on user action (building an untrusted project) and a specific interpreter version, not an internet-facing remote hole - real-world priority is LOW-to-MODERATE for organizations that build untrusted BuildStream projects on Python < 3.12, despite the 9.8 label. |
| Exploit ScenarioDerived | An attacker publishes or tampers with a source tarball referenced by a BuildStream element's tar source plugin, embedding symlinks that point outside the extraction directory. When a developer or CI system fetches/builds that project on Python < 3.12, extraction follows the symlinks and writes attacker-controlled files anywhere the BuildStream user can write, enabling code execution or config tampering as that user. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 23, 2026
Symlink-based path traversal in the tar source plugin of Apache BuildStream (versions up to and including 2.8.0, running on Python < 3.12) lets a malicious source tarball write arbitrary files on the host with the privileges of the user running BuildStream, resulting in full confidentiality, integrity, and availability impact to that user's environment. The vendor-published CVSS 3.1 base score is 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), but the assessed vector adds UI:R: exploitation requires the victim to fetch and extract an attacker-controlled or otherwise untrusted source tarball, and it is not exploitable against projects that use only trusted, tracked sources, since SHA256 hash pinning of tracked tarballs prevents MITM substitution. No public exploit code and no confirmed active exploitation were identified at time of analysis (CISA SSVC exploitation: none; EPSS 0.19%, 10th percentile); the vendor-released patch is BuildStream 2.8.1, and hosts running Python >= 3.12 with BuildStream >= 2.3.0 are already protected because the Python tarfile extraction filter blocks the symlink escape.
RemediationAI
Vendor-released patch: upgrade Apache BuildStream to 2.8.1, which fixes the symlink escape in the tar source plugin (advisory: https://lists.apache.org/thread/9b342631x7bvtyg0pq7zgywtl2cmy34v, https://seclists.org/oss-sec/2026/q3/888). If upgrading immediately is not possible, running BuildStream on Python 3.12 or later with BuildStream >= 2.3.0 is an effective mitigation because the Python tarfile extraction filter blocks symlink members escaping the extraction root; the trade-off is that this requires changing the interpreter/runtime rather than the application and yields no protection on older Python. Additional compensating controls, each with trade-offs: enforce a trusted-source-only policy for all project elements (eliminates the attack vector but prevents legitimate use of third-party or user-supplied tarballs), pin/track every source tarball so its SHA256 hash is recorded and verified (blocks MITM substitution of tracked sources, but does not protect the initial untracked fetch of a malicious archive), and execute BuildStream builds as an unprivileged, low-privilege account inside a container or sandbox with write access limited to the build directory (bounds the file-write impact to that sandbox - which is precisely where the vulnerable extraction occurs - but adds operational overhead and may break builds that legitimately write outside their workspace). Do not rely on the vendor-published 9.8 base score in isolation when prioritizing: the assessed vector includes UI:R, the SSVC exploitation state is 'none', EPSS is 0.19% (10th percentile), and exploitability depends on an untrusted source tarball being fetched on a Python < 3.12 host.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause class is CWE-59, Improper Link Resolution Before File Access ('Link Following'). BuildStream's tar source plugin extracts fetched source tarballs during source staging; prior to the fix it did not constrain how symlink members inside the archive were resolved, so an archive containing a symlink pointing outside the extraction directory (e.g., to a path in the user's home or a configuration directory) could be followed when a subsequent archive member was written, causing files to be created or overwritten outside the intended source directory. The behaviour is version- and runtime-dependent: Python's tarfile module only gained an extraction filter (filter='data') in Python 3.12, and BuildStream >= 2.3.0 adopted it when running on Python >= 3.12, which is why the vulnerability is limited to BuildStream instances executing on Python < 3.12. Apache-distributed BuildStream is the affected codebase (EUVD lists 'Apache BuildStream 0 ≤ 2.8.0'); the advisory was published by security@apache.org and cross-posted to the oss-security list. The supplied tags (Python, Apache, Information Disclosure) reflect the disclosure surface, but the practical consequence is arbitrary file write as the invoking user rather than mere information disclosure.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
Sources disagree (Medium–Critical)AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Tarball delivered over network but victim must build an untrusted source, so UI:R; arbitrary file write as build user yields C/I/A:H within an unchanged scope.
vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.
CVSS VectorVendor: apache
Lifecycle Timeline
3DescriptionCVE.org
Improper link resolution before file access ('link following') vulnerability in the tar source plugin of Apache BuildStream running on Python < 3.12 allows malicious source tarballs to write files on the host, with the privileges of the user running BuildStream, via symlinks as part of source fetching. The impact of this issue is mitigated by:
- BuildStream projects should only use trusted sources in their elements as otherwise the build output can also not be trusted
- Tracking a source tarball pins its SHA256 hash, which prevents MITM attacks of users that are fetching an already tracked project
- When running on Python >= 3.12, BuildStream >= 2.3.0 already makes use of the Python
tarfilefilter functionality, which blocks the symlink escape
Users are recommended to upgrade to version 2.8.1, which fixes this issue.
Articles & Coverage 1
Executive ViewAI
Apache BuildStream's tar source plugin, in versions up to and including 2.8.0 running on Python earlier than 3.12, can be manipulated into writing arbitrary files onto a host with the permissions of the user running the build. The exposure is concentrated in engineering teams and CI/CD systems that consume source tarballs from outside their trusted, hash-pinned supply chain, so a successful attack could compromise developer endpoints or shared build infrastructure rather than a customer-facing service. Because exploitation requires a victim to fetch and extract an untrusted tarball and no public exploit or active exploitation has been identified, this is a high-priority supply-chain hardening obligation rather than a fire drill.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-85113
GHSA-5xjv-h9hc-3vv9
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB