Description
Trail of Bits fickling versions up to and including 0.1.10 do not include the Python standard library modules _posixsubprocess, site, and atexit in the UNSAFE_IMPORTS denylist (fickle.py). Because these modules are absent from the denylist, fickling's check_safety() function returns LIKELY_SAFE with zero findings for pickle payloads that invoke dangerous functions including _posixsubprocess.fork_exec (C-level process spawner capable of executing arbitrary binaries), site.execsitecustomize (executes arbitrary site customization code), and atexit._run_exitfuncs (triggers all registered exit handler callbacks). The fickling.load() API chains check_safety() into pickle.loads() as an explicit security gate; a LIKELY_SAFE verdict causes the payload to be deserialized and executed. This shares the same root cause as CVE-2026-22607 (cProfile), CVE-2025-67748 (pty), and CVE-2025-67747 (marshal/types). OvertlyBadEvals does not flag these modules because they are standard library imports. UnsafeImports does not flag them because they are not in the denylist. The UnusedVariables heuristic is defeated by the SETITEMS opcode pattern.
Published: 2026-07-04
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises because versions of Trail of Bits fickling up to 0.1.10 do not list the Python standard library modules _posixsubprocess, site, and atexit in its UNSAFE_IMPORTS denylist. As a result, fickling’s check_safety() routine returns a LIKELY_SAFE verdict and zero findings for pickle payloads that import these modules. The modules in question expose C‑level functions that can spawn arbitrary processes, execute site customization code, or invoke exit handlers, allowing an attacker to execute arbitrary code when the payload is deserialized. This flaw is a CWE‑184 input validation issue and a CWE‑502 deserialization weakness. The bypass occurs when pickle data is passed to fickling.load(), which chains check_safety() into pickle.loads() as an explicit security gate; a LIKELY_SAFE verdict causes the payload to be deserialized and executed.

Affected Systems

The affected product is Trail of Bits fickling. Vulnerable releases include 0.1.10 and all earlier versions. The issue is fixed in version 0.1.11 and later, where the missing modules are added to the UNSAFE_IMPORTS denylist. Any application that uses fickling.load() to deserialize untrusted pickle data while running a vulnerable version is at risk.

Risk and Exploitability

The CVSS score of 8.8 indicates high severity, yet the EPSS score of less than 1 % suggests that real‑world exploitation is currently unlikely, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector involves delivering a crafted pickle payload that imports one of the missing modules to an application that uses fickling.load(); this causes the payload to be deserialized with a LIKELY_SAFE verdict and the dangerous functions to be executed. The flaw therefore enables arbitrary code execution when the application processes untrusted data.

Generated by OpenCVE AI on August 1, 2026 at 19:42 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade fickling to version 0.1.11 or newer, which includes the missing modules in the denylist and fixes the CWE‑184 and CWE‑502 weaknesses.
  • Configure fickling’s safety check to explicitly reject any pickle payload that imports _posixsubprocess, site, or atexit, thereby enforcing the denylist and preventing the vulnerability from being exploited.
  • If an immediate upgrade is not feasible, replace fickling.load() with a safer deserialization routine that implements strict module whitelisting, or use Python’s built‑in pickle module in a restricted mode to mitigate the CWE‑502 risk.

Generated by OpenCVE AI on August 1, 2026 at 19:42 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 08 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Mon, 06 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 04 Jul 2026 15:45:00 +0000

Type Values Removed Values Added
First Time appeared Trailofbits
Trailofbits fickling
Vendors & Products Trailofbits
Trailofbits fickling

Sat, 04 Jul 2026 14:00:00 +0000

Type Values Removed Values Added
Description Trail of Bits fickling versions up to and including 0.1.10 do not include the Python standard library modules _posixsubprocess, site, and atexit in the UNSAFE_IMPORTS denylist (fickle.py). Because these modules are absent from the denylist, fickling's check_safety() function returns LIKELY_SAFE with zero findings for pickle payloads that invoke dangerous functions including _posixsubprocess.fork_exec (C-level process spawner capable of executing arbitrary binaries), site.execsitecustomize (executes arbitrary site customization code), and atexit._run_exitfuncs (triggers all registered exit handler callbacks). The fickling.load() API chains check_safety() into pickle.loads() as an explicit security gate; a LIKELY_SAFE verdict causes the payload to be deserialized and executed. This shares the same root cause as CVE-2026-22607 (cProfile), CVE-2025-67748 (pty), and CVE-2025-67747 (marshal/types). OvertlyBadEvals does not flag these modules because they are standard library imports. UnsafeImports does not flag them because they are not in the denylist. The UnusedVariables heuristic is defeated by the SETITEMS opcode pattern.
Title Fickling check_safety() bypass via unlisted standard library modules (_posixsubprocess, site, atexit)
Weaknesses CWE-184
CWE-502
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'}


Subscriptions

Trailofbits Fickling
cve-icon MITRE

Status: PUBLISHED

Assigner: BombadilSystems

Published:

Updated: 2026-07-06T14:59:37.264Z

Reserved: 2026-07-03T00:02:49.289Z

Link: CVE-2026-14534

cve-icon Vulnrichment

Updated: 2026-07-06T14:59:19.393Z

cve-icon NVD

Status : Analyzed

Published: 2026-07-04T14:16:28.400

Modified: 2026-07-10T15:10:15.827

Link: CVE-2026-14534

cve-icon Redhat

Severity : Important

Publid Date: 2026-07-04T13:25:55Z

Links: CVE-2026-14534 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-01T19:45:03Z

Weaknesses
  • CWE-184

    Incomplete List of Disallowed Inputs

  • CWE-502

    Deserialization of Untrusted Data