Fickling has a bypass via runpy.run_path() and runpy.run_module()
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. Fickling versions up to and including 0.1.6 do not treat Python’s runpy module as unsafe. Because of this, a malicious pickle that uses runpy.run_path() or runpy.run_module() is classified as SUSPICIOUS instead of OVERTLY_MALICIOUS. If a user relies on Fickling’s output to decide whether a pickle is safe to deserialize, this misclassification can lead them to execute attacker-controlled code on their system. This affects any workflow or product that uses Fickling as a security gate for pickle deserialization. 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-wfq2-52f7-7qvj |
- 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-wfq2-52f7-7qvj
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-wfq2-52f7-7qvj fickling (PyPI) Fixed in 0.1.7 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-22606
- 2026-10-03 Alias added: GHSA-wfq2-52f7-7qvj
References
Other 8
- https://github.com/trailofbits/fickling/releases/tag/v0.1.7
- https://github.com/trailofbits/fickling/security/advisories/GHSA-565g-hwwr-4pp3
- https://github.com/trailofbits/fickling/security/advisories/GHSA-r7v6-mfhq-g3m2
- https://github.com/trailofbits/fickling/pull/108
- https://github.com/trailofbits/fickling/pull/187
- https://github.com/trailofbits/fickling/pull/195
- https://github.com/trailofbits/fickling
- https://github.com/trailofbits/fickling/blob/977b0769c13537cd96549c12bb537f05464cf09c/test/test_bypasses.py#L87
More trailofbits Fickling vulnerabilities
- TI-2026-18173 Fickling vulnerable to detection bypass due to "builtins" blindness CVSS 4.0HIGH 8.9
- TI-2026-18170 Fickling has Static Analysis Bypass via Incomplete Dangerous Module Blocklist 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-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-22606 · CVE Program
- CVE-2026-22606 · NVD
- FIRST EPSS
- GHSA-wfq2-52f7-7qvj · 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