CVE-2026-14534

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.
Configurations

Configuration 1 (hide)

cpe:2.3:a:trailofbits:fickling:*:*:*:*:*:python:*:*

History

25 Oct 2026, 15:10

Type Values Removed Values Added
Summary
  • (es) Las versiones de fickling de Trail of Bits hasta la 0.1.10 inclusive no incluyen los módulos de la biblioteca estándar de Python _posixsubprocess, site y atexit en la lista de denegación UNSAFE_IMPORTS (fickle.py). Debido a que estos módulos están ausentes de la lista de denegación, la función check_safety() de fickling devuelve LIKELY_SAFE con cero hallazgos para cargas útiles de pickle que invocan funciones peligrosas, incluyendo _posixsubprocess.fork_exec (generador de procesos a nivel de C capaz de ejecutar binarios arbitrarios), site.execsitecustomize (ejecuta código de personalización de sitio arbitrario) y atexit._run_exitfuncs (activa todas las devoluciones de llamada de los gestores de salida registrados). La API fickling.load() encadena check_safety() en pickle.loads() como una puerta de seguridad explícita; un veredicto LIKELY_SAFE hace que la carga útil sea deserializada y ejecutada. Esto comparte la misma causa raíz que CVE-2026-22607 (cProfile), CVE-2025-67748 (pty) y CVE-2025-67747 (marshal/types). OvertlyBadEvals no marca estos módulos porque son importaciones de la biblioteca estándar. UnsafeImports no los marca porque no están en la lista de denegación. La heurística UnusedVariables es eludida por el patrón de código de operación SETITEMS.

Information

Published : 2026-07-04 14:16

Updated : 2026-10-25 15:10


NVD link : CVE-2026-14534

Mitre link : CVE-2026-14534

CVE.ORG link : CVE-2026-14534


JSON object : View

Products Affected

trailofbits

  • fickling
CWE
CWE-184

Incomplete List of Disallowed Inputs

CWE-502

Deserialization of Untrusted Data