{"id":"MAL-2026-18298","kind":"package","aliases":["MAL-2026-18298"],"related":[],"title":"Malicious code in claudeopusfile (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (de2f0d45d8a2c0489d082d86a91c63fc5cad53f891b3dd1e976cd7479344c65f)\nsetup.py imports claudeopusfile.compat._ensure_compat during pip install. compat.py constructs the string 'exec' from a chr-code tuple (chr(101),chr(120),chr(101),chr(99)) and invokes it via getattr(builtins, _RUN)(compile(code, '<claudeopusfile-compat>', 'exec'),...) on content produced by zlib.decompress(base64.b85decode(_shimdata.DATA)) — an opaque base85+zlib blob shipped in claudeopusfile/_shimdata.py. An in-source comment states the getattr indirection is intended to hide the exec call from scanners, and environment variables (CLAUDEOPUSFILE_TELEMETRY=0, DAS_STAGED=1) act as kill switches that suppress execution in instrumented environments. The package additionally ships claudeopusfile/_payload.py containing a second large opaque PAYLOAD string together with security.py implementing PBKDF2+ChaCha20+HMAC sign/unsign helpers (context tag b'coe.'), providing a signed-channel decryption path for a staged second payload. Decoded content runs with the installer's privileges on `pip install`. The package's advertised purpose (prompt-generator utility) has no need to decode and execute an opaque blob at install time.\n\n## Source: kam193 (9a776d104d66cbeec1283bd7a7e9decc15da19a1946dd27c7d7ca632a6cdc2f2)\nDuring installation, obfuscated code is used to fetch code hidden in an image containing a Python application with a native extension module. This module holds an obfuscated infostealer which collects sensitive data and exfiltrates them to a C2 server retrieved from transaction history in the Polygon blockchain.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-donutautosellsrc\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n\n\n - Downloads and executes a remote executable.\n\n\n - obfuscation\n\n\n - The package contains code to detect if it is running in a sandbox environment.\n\n\n - malware\n\n\n - native-extension\n\n\n - steganography\n\n\n - c2-in-blockchain","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"claudeopusfile","fixed":[],"affected":"= 0.1.1; = 0.1.2","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-25T23:35:59+00:00","first_seen_at":"2026-10-26T20:52:03+00:00","triaged_at":"2026-10-26T20:53:36+00:00","updated_at":"2026-10-26T21:05:48+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-09':250C '-18298':8A,11A '-2026':7A,10A '0':104C '1':107C '101':49C,53C '120':51C '2026':249C '99':55C '9a776d104d66cbeec1283bd7a7e9decc15da19a1946dd27c7d7ca632a6cdc2f2':190C 'act':108C 'addit':120C 'advertis':169C 'amazon':26C 'amazon-inspector':25C 'applic':207C 'b':141C 'base':253C 'base64.b85decode':71C 'base85':75C 'blob':77C,184C 'blockchain':237C,287C 'builtin':61C 'c2':228C,285C 'c2-in-blockchain':284C 'call':96C 'campaign':241C,248C,256C 'categori':238C 'chacha20':135C 'channel':147C 'chr':45C,48C,50C,52C,54C 'chr-code':44C 'claudeopusfil':4A,102C 'claudeopusfile':12A 'claudeopusfile.compat':31C 'claudeopusfile/_payload.py':122C 'claudeopusfile/_shimdata.py':80C 'clear':243C 'code':2A,46C,64C,194C,199C,268C 'coe':142C 'collect':220C 'comment':85C 'compat':33C 'compat.py':37C 'compil':63C 'construct':38C 'contain':123C,204C,267C 'content':67C,156C 'context':139C 'das':105C 'data':222C 'de2f0d45d8a2c0489d082d86a91c63fc5cad53f891b3dd1e976cd7479344c65f':28C 'decod':155C,179C 'decrypt':148C 'detail':17C 'detect':270C 'donutautosellsrc':251C 'download':258C 'edit':20C 'ensur':32C 'environ':100C,117C,278C 'exec':41C,65C,95C 'execut':114C,181C,260C,263C 'exfiltr':224C 'extens':211C,282C 'fetch':198C 'generat':173C 'getattr':60C,88C 'helper':138C 'hidden':200C 'hide':93C 'histori':233C 'hmac':136C 'hold':215C 'imag':203C 'implement':133C 'import':30C 'in-sourc':82C 'indirect':89C 'infosteal':218C,247C,257C 'inspector':27C 'instal':36C,160C,165C,186C,192C 'instrument':116C 'intend':91C 'intent':245C 'invok':57C 'kam193':189C 'kill':110C 'larg':126C 'like':246C 'line':23C 'mal':6A,9A 'malici':1A,13B,239C,244C 'malwar':279C 'modul':212C,214C 'nativ':210C,281C 'native-extens':280C 'need':177C 'obfusc':193C,217C,264C 'opaqu':74C,127C,183C 'packag':14B,119C,167C,266C 'path':149C 'payload':128C,154C 'pbkdf2':134C 'per':15C 'pip':35C,164C 'polygon':236C 'privileg':162C 'produc':68C 'prompt':172C 'prompt-gener':171C 'provid':143C 'purpos':170C 'pypi':5A 'python':206C 'reason':252C 'remot':262C 'retriev':230C 'run':62C,157C,274C 'sandbox':277C 'scanner':98C 'second':125C,153C 'security.py':132C 'sensit':221C 'server':229C 'setup.py':29C 'shimdata.data':72C 'ship':78C,121C 'sign':146C 'sign/unsign':137C 'signed-channel':145C 'sourc':16C,24C,84C,188C 'stage':106C,152C 'state':86C 'steganographi':283C 'string':40C,129C 'suppress':113C 'switch':111C 'tag':140C 'telemetri':103C 'time':187C 'togeth':130C 'transact':232C 'tupl':47C 'use':196C 'util':174C 'variabl':101C 'via':59C 'zlib':76C 'zlib.decompress':70C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-25T23:35:59+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-18298","url":"https://osv.dev/vulnerability/MAL-2026-18298","severity":"critical","published_at":"2026-10-25T23:35:59+00:00","modified_at":"2026-10-26T06:45:15+00:00","first_seen_at":"2026-10-26T20:52:03+00:00","fetched_at":"2026-10-26T20:52:03+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}