Cyber Resilience

CVE-2026-33139

Parzivalhack Pyspector ≤ 0.1.7

Public PoC
Published
20 March 2026
Modified
24 March 2026
Patch / advisory
CVSS Score v4 8.3
Click a component to see what it means
Raw vectorCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
EPSS Score 0.0017 7th percentile
Risk Priority 55 floored blend · peak EPSS

Summary

CVE-2026-33139 is a high-severity Incomplete List of Disallowed Inputs (CWE-184) vulnerability in Parzivalhack Pyspector. Its CVSS base score is 8.3 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 7th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.

The strongest mitigations our analysis identified map to SI-10 (Information Input Validation) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

PySpector, a static analysis security testing (SAST) framework for modern Python development workflows, is affected by CVE-2026-33139 in versions 0.1.6 and prior. The vulnerability is a security validation bypass in the plugin system, specifically within the validate_plugin_code() function in plugin_system.py. This function performs static AST analysis to block dangerous API calls before trusting and executing a plugin. However, the internal resolve_name() helper only processes ast.Name and ast.Attribute node types, returning None for others. As a result, indirect function calls like getattr(os, 'system') produce an outer func node of type ast.Call, causing resolve_name() to return None, silently skipping the security check.

A local attacker with no privileges can exploit this issue by crafting a malicious plugin that uses indirect calls to bypass validation. The attacker requires user interaction, such as tricking the user into loading the plugin, which then incorrectly passes the trust workflow. Upon loading, the plugin executes arbitrary system commands on the user's machine, leading to high confidentiality, integrity, and availability impacts (CVSS 7.8: AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H). This is linked to CWE-184 (Incomplete List of Disallowed Inputs).

The GitHub security advisory at https://github.com/ParzivalHack/PySpector/security/advisories/GHSA-v3xv-8vc3-h2m6 confirms the issue has been patched in PySpector version 0.1.7, recommending users upgrade to mitigate the vulnerability.

EU & UK References

Vulnerability Data

PySpector is a static analysis security testing (SAST) Framework engineered for modern Python development workflows. PySpector versions 0.1.6 and prior are affected by a security validation bypass in the plugin system. The validate_plugin_code() function in plugin_system.py, performs static AST analysis…

more

to block dangerous API calls before a plugin is trusted and executed. However, the internal resolve_name() helper only handles ast.Name and ast.Attribute node types, returning None for all others. When a plugin uses indirect function calls via getattr() (such as getattr(os, 'system')) the outer call's func node is of type ast.Call, causing resolve_name() to return None, and the security check to be silently skipped. The plugin incorrectly passes the trust workflow, and executes arbitrary system commands on the user's machine when loaded. This issue has been patched in version 0.1.7.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2026-41206Same product: Parzivalhack Pyspector
CVE-2026-33140Same product: Parzivalhack Pyspector
CVE-2026-48557Shared CWE-184
CVE-2026-41392Shared CWE-184
CVE-2026-44115Shared CWE-184
CVE-2026-42435Shared CWE-184
CVE-2026-53861Shared CWE-184
CVE-2023-45593Shared CWE-184
CVE-2026-71259Shared CWE-184
CVE-2025-67716Shared CWE-184

Affected Assets

parzivalhack
pyspector
≤ 0.1.7

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

Detect
Catch it (NIST detect / respond)

Harden
Shrink the surface (DISA STIG)
  • 2 hardening rules · 1 OS baseline
Validate
Prove the fix (OWASP ASVS)
  • V3.5.2
  • V4.4.2
  • V16.2.5

Mitigating Controls (NIST 800-53 r5) AI

SI-10 requires validity checks on inputs, which structurally replaces incomplete deny-lists with complete allow-list or sanitization logic.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly require complete, positive input validation instead of incomplete denylists.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing can discover missing input checks, but does not prevent the weakness during development.

prevents

Application security requirements can mandate complete input validation rules, but the control itself does not prescribe how to build those rules.

prevents

Secure architecture principles include robust input validation design, yet the control is broader than this single weakness.

prevents

Secure coding standards directly require exhaustive allow-lists or complete deny-lists for inputs, addressing the root cause of incomplete disallowed-input lists.

References