CVE-2026-14535
Last modified
CVE-2026-14535 is a critical-severity vulnerability rated 9.8/10 on the CVSS scale. In Trail of Bits fickling versions up to and including 0.1.11, the UnsafeImportsML analysis pass unconditionally calls AnalysisContext.shorten_code(node) on every import node it inspects, regardless of whether the import is flagged as unsafe. This call registers the shortened code representation in the shared AnalysisContext.reported_shortened_code set. EPSS estimates a 0.30% chance of exploitation in the next 30 days.
Description
In Trail of Bits fickling versions up to and including 0.1.11, the UnsafeImportsML analysis pass unconditionally calls AnalysisContext.shorten_code(node) on every import node it inspects, regardless of whether the import is flagged as unsafe. This call registers the shortened code representation in the shared AnalysisContext.reported_shortened_code set. When the MLAllowlist analysis pass subsequently runs, it calls the same shorten_code() method, receives already_reported=True for every import, and executes a continue statement that skips its allowlist check entirely. This renders MLAllowlist dead code for all imports — it never evaluates whether an import is in the ML allowlist or not. The MLAllowlist pass was designed to catch imports of modules outside the known-safe ML ecosystem (torch, numpy, transformers, etc.) that slip past the UnsafeImports denylist. With MLAllowlist inoperative, any standard library module not in the UNSAFE_IMPORTS denylist can be invoked via pickle deserialization while fickling's check_safety() returns LIKELY_SAFE. The fickling.load() API chains check_safety() into pickle.loads() as an explicit security gate, meaning a LIKELY_SAFE verdict causes the payload to be deserialized and executed. The root cause is shared mutable state between independently-correct analysis passes — UnsafeImportsML works as designed in isolation, MLAllowlist works as designed in isolation, but the shared reported_shortened_code set causes UnsafeImportsML to poison MLAllowlist's deduplication logic.
Metrics
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions |
|---|---|---|
| Trailofbits | Fickling | <= 0.1.11 |
References
- https://github.com/trailofbits/fickling/pull/278Issue Tracking, Patch
- https://github.com/trailofbits/fickling/security/advisories/GHSA-cffv-grgg-g429Exploit, Third Party Advisory
- https://github.com/trailofbits/fickling/security/advisories/GHSA-cffv-grgg-g429Exploit, Third Party Advisory
Timeline
- Published
- Last Modified
- Status
- Analyzed
Frequently Asked Questions
What is CVE-2026-14535?
How severe is CVE-2026-14535?
How do I fix CVE-2026-14535?
Related CVEs from 2026
- CVE-2026-1450The rognone plugin for WordPress is vulnerable to Reflected …6.1
- CVE-2026-14500The Bulk Order Update for WooCommerce plugin for WordPress i…5.3
- CVE-2026-1451The rognone plugin for WordPress is vulnerable to Reflected …6.1
- CVE-2026-1452Rejected reason: ** REJECT ** DO NOT USE THIS CANDIDATE NUMB…
- CVE-2026-1453A missing authentication for critical function vulnerability…9.8
- CVE-2026-14534Trail of Bits fickling versions up to and including 0.1.10 d…8.8
- CVE-2026-14536Improper enforcement of a mandatory multi-factor authenticat…8.8
- CVE-2026-1454The Responsive Contact Form Builder & Lead Generation Plugin…7.2
- CVE-2026-14544A flaw was found in HPLIP (HP Linux Imaging and Printing Sof…9.8
- CVE-2026-1455The Whatsiplus Scheduled Notification for Woocommerce plugin…4.3
- CVE-2026-1456GitLab has remediated an issue in GitLab CE/EE affecting all…7.5
- CVE-2026-1457An authenticated buffer handling flaw in TP-Link VIGI C385 V…8.8
Are you affected by CVE-2026-14535?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
