Fickling has Static Analysis Bypass via Incomplete Dangerous Module Blocklist
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-502.
Summary
Fickling is a Python pickling decompiler and static analyzer. Prior to version 0.1.7, the unsafe_imports() method in Fickling's static analyzer fails to flag several high-risk Python modules that can be used for arbitrary code execution. Malicious pickles importing these modules will not be detected as unsafe, allowing attackers to bypass Fickling's primary static safety checks. This issue has been patched in version 0.1.7.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- Yes
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| trailofbits | fickling | before 0.1.7 | 0.1.7 | Patch available | CNA |
| — | fickling (PyPI) | before 0.1.7 | 0.1.7 | Patch available | GHSA-q5qq-mvfm-j35x |
- fickling Vendortrailofbits Affected before 0.1.7 Fixed in 0.1.7 Patch available CNA
- fickling (PyPI) Vendor— Affected before 0.1.7 Fixed in 0.1.7 Patch available GHSA-q5qq-mvfm-j35x
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:trailofbits:fickling:*:*:*:*:*:python:*:* | before 0.1.7 | Vulnerable | trailofbits |
- cpe:2.3:a:trailofbits:fickling:*:*:*:*:*:python:*:* Versions before 0.1.7 Vulnerable ·trailofbits
Remediation
- Fix · CNA fickling (trailofbits) Fixed in 0.1.7
- Fix · GHSA-q5qq-mvfm-j35x fickling (PyPI) Fixed in 0.1.7 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-22609
- 2026-10-03 Alias added: GHSA-q5qq-mvfm-j35x
- 2026-10-29 EPSS moved to the 50th–90th percentile
References
Patch 4
- https://github.com/trailofbits/fickling/commit/29d5545e74b07766892c1f0461b801afccee4f91
- https://github.com/trailofbits/fickling/commit/9a2b3f89bd0598b528d62c10a64c1986fcb09f66
- https://github.com/trailofbits/fickling/commit/b793563e60a5e039c5837b09d7f4f6b92e6040d1
- https://github.com/trailofbits/fickling/commit/eb299b453342f1931c787bcb3bc33f3a03a173f9
Other 5
- https://github.com/trailofbits/fickling/releases/tag/v0.1.7
- https://github.com/trailofbits/fickling/pull/195
- https://github.com/trailofbits/fickling/commit/6b400e1a2525e6a4a076c97ccc0d4d9581317101
- https://github.com/trailofbits/fickling
- https://github.com/trailofbits/fickling/blob/977b0769c13537cd96549c12bb537f05464cf09c/test/test_bypasses.py#L88
More trailofbits Fickling vulnerabilities
- TI-2026-18173 Fickling vulnerable to detection bypass due to "builtins" blindness CVSS 4.0HIGH 8.9
- TI-2026-18169 Fickling vulnerable to use of ctypes and pydoc gadget chain to bypass detection CVSS 4.0HIGH 8.9
- TI-2026-18168 Fickling Blocklist Bypass: cProfile.run() CVSS 4.0HIGH 8.9
- TI-2026-18167 Fickling has a bypass via runpy.run_path() and runpy.run_module() CVSS 4.0HIGH 8.9
- TI-2026-12265 Fickling MLAllowlist analysis pass rendered inoperative by shared mutable state in AnalysisContext.shorten_code() CVSS 3.1CRITICAL 9.8
- TI-2026-12264 Fickling check_safety() bypass via unlisted standard library modules (_posixsubprocess, site, atexit) CVSS 3.1HIGH 8.8
Sources
- CVE-2026-22609 · CVE Program
- CVE-2026-22609 · NVD
- FIRST EPSS
- GHSA-q5qq-mvfm-j35x · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences