{"id":"MAL-2026-16130","kind":"package","aliases":["MAL-2026-16130"],"related":[],"title":"Malicious code in aitextkit-py (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (47e96f519e8acba48a6f7760b37a9ad70b94bfbf79fb5eac4fc682849b2837e3)\nThe package presents itself as a small text-cleaning utility library, but both shipped implementation modules (text.py and system.py) consist of a single-line pyobfuscator.com loader of the form `_ = lambda __: __import__('zlib').decompress(__import__('base64').b64decode(__[::-1]));exec((_)(b'...'))`, which reverses, base64-decodes, zlib-decompresses, and exec()s an opaque blob at module import. __init__.py imports from.text, so `import aitextkit` runs the decoded bytes on the installer's Python interpreter. __init__.py also re-exports an undocumented `setup` symbol whose body lives inside the obfuscated blob and which is not mentioned in the README, tests, or public API documentation - a common stager entry-point shape. system.py, which backs the documented `get_os_version()` helper, uses the identical loader and its tests reference `platform`, `release`, and `arch` fields, so the decoded code at minimum performs host enumeration inside code that is not inspectable from source. The declared text-utility purpose has no legitimate need to ship its entire implementation as an exec-decoded blob; the loader shape matches that used by PyPI credential-stealer families.\n\n## Source: kam193 (73303124008a821f9096bc4899d8df4302abc2e0f86822660422f855a1bc65cb)\nThe package hides code downloading script, which then downloads and executes a heavily obfuscated final stage. The remote stages are hosted on a domain presenting a suspicious-looking corporate website. The downloaded code establishes persistence e.g. as \"anymeetly-cameradriver\" systemd service. The discovered artifacts suggest strongly it acts as an infostealer and RAT.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-aitextkit-py\n\n\nReasons (based on the campaign):\n\n\n - obfuscation\n\n\n - Downloads and executes a remote malicious script.\n\n\n - persistence\n\n\n - infostealer\n\n\n - exfiltration-browser-data\n\n\n - rat\n\n\n - The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"aitextkit-py","fixed":[],"affected":"= 0.1.0; = 0.1.1","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-11T15:22:35+00:00","first_seen_at":"2026-10-26T20:51:57+00:00","triaged_at":"2026-10-26T21:10:31+00:00","updated_at":"2026-10-26T21:10:31+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-09':288C '-1':72C '-16130':10A,13A '-2026':9A,12A '2026':287C '47e96':32C '73303124008a821f9096bc4899d8df4302abc2e0f86822660422f855a1bc65cb':220C 'act':270C 'aitextkit':5A,15A,98C,290C 'aitextkit-pi':4A,289C 'aitextkit-py':14A 'also':111C 'amazon':30C 'amazon-inspector':29C 'anymeet':260C 'anymeetly-cameradriv':259C 'api':137C 'arch':166C 'artifact':266C 'b':74C 'b64decode':71C 'back':148C 'base':293C 'base64':70C,78C 'base64-decodes':77C 'blob':88C,125C,205C 'bodi':120C 'browser':309C 'byte':102C 'cameradriv':261C 'campaign':279C,286C,296C 'categori':276C 'clean':43C 'clear':281C 'code':2A,171C,178C,224C,254C,315C 'command':319C 'common':140C 'consist':54C 'contain':314C 'corpor':250C 'credenti':215C 'credential-steal':214C 'data':310C 'declar':186C 'decod':79C,101C,170C,204C 'decompress':68C,82C 'detail':21C 'discov':265C 'document':138C,150C 'domain':244C 'download':225C,229C,253C,298C 'e.g':257C 'edit':24C 'entir':198C 'entri':143C 'entry-point':142C 'enumer':176C 'establish':255C 'exec':73C,84C,203C 'exec-decod':202C 'execut':231C,300C,317C 'exfiltr':308C 'exfiltration-browser-data':307C 'export':114C 'f519e8acba48a6f7760b37a9ad70b94bfbf79fb5eac4fc682849b2837e3':33C 'famili':217C 'field':167C 'final':235C 'form':64C 'from.text':95C 'get':151C 'heavili':233C 'helper':154C 'hide':223C 'host':175C,241C 'ident':157C 'implement':49C,199C 'import':66C,69C,91C,94C,97C 'infosteal':273C,285C,306C 'init':92C,109C 'insid':122C,177C 'inspect':182C 'inspector':31C 'instal':105C 'intent':283C 'interpret':108C 'kam193':219C 'lambda':65C 'legitim':193C 'librari':45C 'like':284C 'limit':321C 'line':27C,59C 'live':121C 'loader':61C,158C,207C 'look':249C 'machin':330C 'mal':8A,11A 'malici':1A,17B,277C,282C,303C 'match':209C 'mention':130C 'minimum':173C 'modul':50C,90C 'need':194C 'obfusc':124C,234C,297C 'opaqu':87C 'os':152C 'packag':18B,35C,222C,313C 'per':19C 'perform':174C 'persist':256C,305C 'platform':163C 'point':144C 'present':36C,245C 'probabl':320C 'public':136C 'purpos':190C 'py':6A,16A,93C,110C,291C 'pyobfuscator.com':60C 'pypi':7A,213C 'python':107C 'rat':275C,311C 're':113C 're-export':112C 'readm':133C 'reason':292C 'refer':162C 'releas':164C 'remot':238C,302C,318C 'revers':76C 'run':99C 'script':226C,304C 'servic':263C 'set':325C 'setup':117C 'shape':145C,208C 'ship':48C,196C 'singl':58C 'single-lin':57C 'small':40C 'sourc':20C,28C,184C,218C 'specif':324C 'stage':236C,239C 'stager':141C 'stealer':216C 'strong':268C 'suggest':267C 'suspici':248C 'suspicious-look':247C 'symbol':118C 'system.py':53C,146C 'systemd':262C 'test':134C,161C 'text':42C,188C 'text-clean':41C 'text-util':187C 'text.py':51C 'undocu':116C 'use':155C,211C 'util':44C,189C 'version':153C 'victim':328C 'websit':251C 'whose':119C 'zlib':67C,81C 'zlib-decompress':80C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-11T15:22:35+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-16130","url":"https://osv.dev/vulnerability/MAL-2026-16130","severity":"critical","published_at":"2026-09-11T15:22:35+00:00","modified_at":"2026-09-14T17:45:05+00:00","first_seen_at":"2026-10-26T20:51:57+00:00","fetched_at":"2026-10-26T20:51:57+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"}