VYPR
High severityOSV Advisory· Published Jan 10, 2026· Updated Jan 13, 2026

Fickling Blocklist Bypass: cProfile.run()

CVE-2026-22607

Description

Fickling is a Python pickling decompiler and static analyzer. Fickling versions up to and including 0.1.6 do not treat Python's cProfile module as unsafe. Because of this, a malicious pickle that uses cProfile.run() 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.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
ficklingPyPI
< 0.1.70.1.7

Affected products

1

Patches

1
dc8ae12966ed

Add cProfile to unsafe imports

https://github.com/trailofbits/ficklingThomas ChauchefoinJan 7, 2026via ghsa
2 files changed · +29 0
  • fickling/fickle.py+1 0 modified
    @@ -879,6 +879,7 @@ def unsafe_imports(self) -> Iterator[ast.Import | ast.ImportFrom]:
                     "marshal",
                     "types",
                     "runpy",
    +                "cProfile",
                 ):
                     yield node
                 elif "eval" in (n.name for n in node.names):
    
  • test/test_bypasses.py+28 0 modified
    @@ -111,3 +111,31 @@ def test_missing_runpy(self):
                 res.detailed_results()["AnalysisResult"].get("UnsafeImports"),
                 "from runpy import run_path",
             )
    +
    +    # https://github.com/trailofbits/fickling/security/advisories/GHSA-p523-jq9w-64x9
    +    def test_missing_cprofile(self):
    +        pickled = Pickled(
    +            [
    +                op.Proto.create(5),
    +                op.Frame(58),
    +                op.ShortBinUnicode("cProfile"),
    +                op.Memoize(),
    +                op.ShortBinUnicode("run"),
    +                op.Memoize(),
    +                op.StackGlobal(),
    +                op.Memoize(),
    +                op.ShortBinUnicode("print('CPROFILE_RCE_CONFIRMED')"),
    +                op.Memoize(),
    +                op.TupleOne(),
    +                op.Memoize(),
    +                op.Reduce(),
    +                op.Memoize(),
    +                op.Stop(),
    +            ]
    +        )
    +        res = check_safety(pickled)
    +        self.assertGreater(res.severity, Severity.LIKELY_SAFE)
    +        self.assertEqual(
    +            res.detailed_results()["AnalysisResult"].get("UnsafeImports"),
    +            "from cProfile import run",
    +        )
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

11

News mentions

0

No linked articles in our index yet.