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

Trail of Bits fickling up to version 0.1.10 fails to list several core Python modules—_posixsubprocess, site, and atexit—in its UNSAFE_IMPORTS denylist. As a result, the library’s check_safety() routine deems payloads that import these modules as LIKELY_SAFE, allowing the malicious functions in those modules to bypass the safety gate and be executed during deserialization.

Affected Systems

The affected product is Trail of Bits fickling. Versions 0.1.10 and any earlier releases are vulnerable. The problem is resolved in version 0.1.11 and later, where the missing modules are added to the denylist. Any application that uses fickling.load() to deserialize untrusted pickle data is at risk while using a vulnerable version.

Risk and Exploitability

The CVSS score of 8.8 indicates a high‑severity vulnerability, although the EPSS score of less than 1 % suggests that real‑world exploitation is currently unlikely. The issue is not listed in the CISA KEV catalog. The most probable attack vector is the delivery of a rogue pickle payload to an application that uses fickling.load(); the attacker must supply the malicious data to that process, which then blindly deserializes exposure requires upgrading the library or implementing a stricter deserialization policy.

Generated by OpenCVE AI on July 24, 2026 at 10:00 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade fickling to version 0.1.11 or newer to address the CWE‑184 input‑validation flaw and the CWE‑502 deserialization vulnerability, as the updated denylist includes the missing modules.
  • Configure fickling’s safety check to explicitly reject any pickle payload that imports _posixsubprocess, site, or atexit, thereby enforcing the denylist and preventing the CWE‑184 and CWE‑502 weaknesses 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 July 24, 2026 at 10:00 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

No data.

cve-icon Redhat

Severity : Important

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

Links: CVE-2026-14534 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-07-24T10:15:02Z

Weaknesses
  • CWE-184

    Incomplete List of Disallowed Inputs

  • CWE-502

    Deserialization of Untrusted Data