MAL-2026-17286Critical▾ Abyssal⚠ Exploited in the wildMalicious code in queeuees (PyPI)
▾ Abyssal zone — Critical with a public exploit or in-the-wild use
impact 52.3 · likelihood 0 · exploitation 18
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
-= Per source details. Do not edit below this line.=-
Queeuees 0.0.1 ships two top-level packages, Queeuees and Queues, with byte-identical init.py files. Each init.py assembles a byte blob from concatenated hex/tuple/rotated-byte literals and decodes it through bit-rotation, XOR keystream, seeded Fisher-Yates, inverse S-box, and LCG XOR stages. The result is passed to builtins.exec at import time via getattr(import('builtins'), 'exec')(payload), where the strings 'builtins' and 'exec' are hidden as byte arrays XORed with 75. Execution is triggered by a descriptor set_name hook that fires when the containing class is defined during module import, so import Queeuees or import Queues runs the decoded code. Identifiers use homoglyph-style names (_0I1IIO, _lIII1, _OI110l, _01I0) and cover-story labels ('Module signature database', 'Certificate fingerprint lookup table'), while the published metadata advertises the package as 'a very basic calculator'. The Queeuees name resembles the common word 'Queues' with duplicated vowels, and the identical payload under both names broadens the typo-catchment surface for the same import-time dropper.
Obfuscated code iterates over files in the system and adds a comment to every .py file found.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-09-queeuees
Reasons (based on the campaign):
obfuscation
modify-system-without-consent
queeueesRefer to the advisory for the patched release.