BentoML has an Arbitrary File Write via Symlink Path Traversal in Tar Extraction
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Prior to 1.4.36, the safe_extract_tarfile() function validates that each tar member's path is within the destination directory, but for symlink members it only validates the symlink's own path, not the symlink's target. An attacker can create a malicious bento/model tar file containing a symlink pointing outside the extraction directory, followed by a regular file that writes through the symlink, achieving arbitrary file write on the host filesystem. This vulnerability is fixed in 1.4.36.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-27905
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 00:53 UTC · Revision 1
Source evidence
BentoML has an Arbitrary File Write via Symlink Path Traversal in Tar Extraction
core-osv · Original sourcePublished 3 Mar 2026, 22:45 UTC
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Prior to 1.4.36, the safe_extract_tarfile() function validates that each tar member's path is within the destination directory, but for symlink members it only validates the symlink's own path, not the symlink's target. An attacker can create a malicious bento/model tar file containing a symlink pointing outside the extraction directory, followed by a regular file that writes through the symlink, achieving arbitrary file write on the host filesystem. This vulnerability is fixed in 1.4.36.
osv:CVE-2026-27905
Complete source record
{
"id": "2f6ccfc4b619fe41f08588fca8a1f0d5a8686a6d354bfa4508cb125122d74bde",
"url": "https://osv.dev/vulnerability/CVE-2026-27905",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "BentoML has an Arbitrary File Write via Symlink Path Traversal in Tar Extraction",
"summary": "BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Prior to 1.4.36, the safe_extract_tarfile() function validates that each tar member's path is within the destination directory, but for symlink members it only validates the symlink's own path, not the symlink's target. An attacker can create a malicious bento/model tar file containing a symlink pointing outside the extraction directory, followed by a regular file that writes through the symlink, achieving arbitrary file write on the host filesystem. This vulnerability is fixed in 1.4.36.",
"evidence": "osv:CVE-2026-27905",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-27905",
"aliases": [
"CVE-2026-27905",
"GHSA-m6w7-qv66-g3mf",
"PYSEC-2026-2398"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/bentoml/bentoml",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "e1e0f7e4e407b378902507162b1339fd1da2b997"
},
{
"fixed": "4e0eb007765ac04c7924220d643f264715cc9670"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:bentoml:bentoml:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "1.4.36"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "4e0eb007765ac04c7924220d643f264715cc9670"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"v1.4.35",
"v1.4.34",
"v1.4.33",
"v1.4.32",
"v1.4.31",
"v1.4.30",
"v1.4.29",
"v1.4.28",
"v1.4.27",
"v1.4.26",
"v1.4.25",
"v1.4.24",
"v1.4.23",
"v1.4.22",
"v1.4.21",
"v1.4.20",
"v1.4.19",
"v1.4.18",
"v1.4.17",
"v1.4.16",
"v1.4.15",
"v1.4.14",
"v1.4.13",
"v1.4.12",
"v1.4.11",
"v1.4.10",
"v1.4.8",
"v1.4.7",
"v1.4.6",
"v1.4.5",
"v1.4.4",
"v1.4.3",
"v1.4.2",
"v1.4.1",
"v1.4.0",
"v1.4.0a2",
"v1.4.0a1",
"v1.3.22",
"v1.3.21",
"v1.3.20",
"v1.3.19",
"v1.3.18",
"v1.3.17",
"v1.3.16",
"v1.3.15",
"v1.3.14",
"v1.3.13",
"v1.3.12",
"v1.3.11",
"v1.3.10",
"v1.3.9",
"v1.3.8",
"v1.3.7",
"v1.3.6",
"v1.3.5",
"v1.3.4post1",
"v1.3.4",
"v1.1.11",
"v1.3.3",
"v1.3.2",
"v1.3.1",
"v1.3.0",
"v1.2.20",
"v1.2.19",
"v1.2.18",
"v1.2.17",
"v1.2.16",
"v1.2.15",
"v1.2.14",
"v1.2.13",
"v1.2.12",
"v1.2.11",
"v1.2.10",
"v1.2.9",
"v1.2.8",
"v1.2.7",
"v1.2.6",
"v1.2.5",
"v1.2.4",
"v1.2.3",
"v1.2.2",
"v1.2.1a1",
"v1.2.1",
"v1.2.0",
"v1.1.10",
"v1.1.9",
"v1.1.8",
"v1.1.7",
"v1.1.6",
"v1.1.5",
"v1.1.4",
"v1.1.3",
"v1.1.2",
"v1.1.1",
"v1.1.0",
"v1.0.25",
"v1.0.24",
"v1.0.23",
"v1.0.22",
"v1.0.21",
"v1.0.20",
"v1.0.19",
"v1.0.18",
"v1.0.17",
"v1.0.16",
"v1.0.15",
"v1.0.14",
"v1.0.13",
"v1.0.12",
"v1.0.11",
"v1.0.10",
"v1.0.9",
"v1.0.8",
"v1.0.7",
"v1.0.6",
"v1.0.5",
"v1.0.4",
"v1.0.3",
"v1.0.2",
"v1.0.0",
"v1.0.0-rc3",
"v1.0.0rc2",
"v1.0.0-rc2",
"v1.0.0-rc1",
"v1.0.0-rc0",
"v1.0.0-a7",
"v1.0.0-a6",
"v1.0.0-a5",
"v1.0.0-a4",
"v1.0.0-a3",
"v1.0.0-a2",
"v1.0.0-a1",
"v1.0.0-dev0",
"v0.13.1",
"v0.13.0",
"v0.12.1",
"v0.12.0",
"v0.11.0",
"v0.10.1",
"v0.10.0",
"v0.9.2",
"v0.9.1",
"v0.9.0",
"v0.9.0.pre",
"v0.8.6",
"v0.8.5",
"v0.8.4",
"v0.8.3",
"v0.8.2",
"v0.8.1",
"v0.8.0",
"v0.7.8",
"v0.7.7",
"v0.7.5",
"v0.7.4",
"v0.7.3",
"v0.7.2",
"v0.7.1",
"v0.7.0",
"v0.6.3",
"v0.6.2",
"v0.6.1",
"v0.6.0",
"v0.5.8",
"v0.5.7",
"v0.5.6",
"v0.5.5",
"v0.5.4",
"v0.5.3",
"v0.5.2",
"v0.5.1",
"v0.5.0",
"v0.4.9",
"v0.4.8",
"v0.4.7",
"v0.4.6",
"v0.4.5",
"v0.4.4",
"v0.4.3",
"v0.4.2",
"v0.4.1",
"v0.4.0",
"bentoml-release-v0.3.4",
"bentoml-release-v0.3.3",
"0.2.1-beta",
"0.2.0-beta",
"0.1.2-beta",
"0.1.1-beta",
"0.0.8.post1-beta",
"0.0.5-alpha"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-27905.json"
}
}
],
"modified": "2026-10-28T02:30:24.888244598Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27905.json",
"https://github.com/bentoml/BentoML/security/advisories/GHSA-m6w7-qv66-g3mf",
"https://nvd.nist.gov/vuln/detail/CVE-2026-27905",
"https://github.com/bentoml/BentoML/commit/4e0eb007765ac04c7924220d643f264715cc9670"
],
"provider_metadata": {
"cwe_ids": [
"CWE-59"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27905.json"
}
},
"related_cves": [
{
"value": "CVE-2026-27905",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 491335,
"published_at": "2026-03-03T22:45:40.434+00:00"
}