CVE-2026-25632: Unsafe Dynamic Importlib Class Resolution

`importlib.import_module()` is called with a non-literal argument and the result is passed to `getattr()` to dynamically resolve a class. If either value originates from user-controlled input (e.g., a JSON "__type__" field, a msgpack payload, or any deserialized structure), an attacker can load arbitrary installed Python modules and instantiate arbitrary cla

Provally CuratedPublic repositoryCriticalHigh confidenceVerifiedApache-2.0Python
greprules fetch cve-2026-25632-unsafe-dynamic-importlib-class-resolution --engine opengrep

Description

`importlib.import_module()` is called with a non-literal argument and the result is passed to `getattr()` to dynamically resolve a class. If either value originates from user-controlled input (e.g., a JSON "__type__" field, a msgpack payload, or any deserialized structure), an attacker can load arbitrary installed Python modules and instantiate arbitrary cla