{"data":{"id":"a26738f6-1626-448b-a49f-6368e5da1d58","title":"CVE-2026-104103: Ludwig is a low-code framework for building custom LLMs, neural networks, and other AI models. Prior to 0.17.8…","summary":"Ludwig versions before 0.17.8 have a path traversal flaw in ludwig.datasets.archives.extract_archive(). The function checks tar member names but not symlink or hard-link members, and uses os.path.commonprefix for its containment check, so a crafted archive can write files to arbitrary paths with the extracting process's privileges. Exploitation requires a user to process an archive from an attacker-controlled or compromised source on Python 3.12 or 3.13; Python 3.14 is not affected.","solution":"Fixed in 0.17.8.","labels":["security"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-104103","publishedAt":"2026-10-14T18:17:21.540Z","cveId":"CVE-2026-104103","cweIds":["CWE-22","CWE-59"],"cvssScore":"8.1","cvssSeverity":"high","severity":"high","attackType":["other"],"issueType":"vulnerability","affectedPackages":null,"affectedPackageNames":null,"affectedPackageRefs":null,"affectedVendors":[],"affectedVendorsRaw":["Ludwig"],"classifierModel":"claude-haiku-5-5","classifierPromptVersion":"v4","summaryPromptVersion":"v2","headline":"Ludwig archive extraction allows writes outside extraction directory","headlinePromptVersion":"h1","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H","attackVector":"network","attackComplexity":"low","privilegesRequired":"none","userInteraction":"required","exploitMaturity":"unknown","epssScore":0,"epssCheckedAt":"2026-10-15T06:09:20.870Z","kevDateAdded":null,"advisoryAliases":null,"affectedPackagesSource":null,"affectedPackagesCheckedAt":"2026-10-15T06:09:24.834Z","patchAvailable":null,"disclosureDate":"2026-10-14T18:17:21.540Z","capecIds":["CAPEC-126"],"crossRefCount":0,"attackSophistication":"moderate","impactType":["confidentiality","integrity"],"aiComponentTargeted":"framework","llmSpecific":false,"classifierConfidence":0.9,"researchCategory":null,"atlasIds":null}}