{"id":"MAL-2026-15927","kind":"package","aliases":["MAL-2026-15927"],"related":[],"title":"Malicious code in qoeoe (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d1e6c0c50dfb4a99c6e8b2ca640cadd33877e737479d8739d5db5b39271bc967)\nThe package ships a single module qoeoe/starts.py whose entire body is a lambda that base64-decodes a reversed ~108 KB string literal and passes the resulting ~80 KB opaque blob directly to exec(). qoeoe/__init__.py imports starts unconditionally, so the decoded payload runs on any `import qoeoe`. The package has an empty README, no advertised functionality, no readable API surface, and no legitimate reason to hide its module body behind reversed+base64 obfuscation piped to exec. This is the import-time loader/dropper shape: arbitrary attacker-controlled code executes on the installer's Python interpreter as soon as the package is imported.\n\n## Source: kam193 (fb52479116026de0be08479d69a7e28915fc9add4b66ff31152b0a47dc256977)\nThe provided functionality hides code that exfiltrates files to a remote location.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-asti\n\n\nReasons (based on the campaign):\n\n\n - files-exfiltration\n\n\n - action-hidden-in-lib-usage\n\n\n - target:android","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"qoeoe","fixed":[],"affected":"= 0.1.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-04T10:27:28+00:00","first_seen_at":"2026-10-26T20:51:56+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':159C '-15927':8A,11A '-2026':7A,10A '108':48C '2026':158C '80':56C 'action':170C 'action-hidden-in-lib-usag':169C 'advertis':83C 'amazon':26C 'amazon-inspector':25C 'android':176C 'api':87C 'arbitrari':113C 'asti':160C 'attack':115C 'attacker-control':114C 'base':162C 'base64':44C,100C 'base64-decodes':43C 'behind':98C 'blob':59C 'bodi':38C,97C 'campaign':150C,157C,165C 'categori':147C 'clear':152C 'code':2A,117C,139C 'control':116C 'd1e6c0c50dfb4a99c6e8b2ca640cadd33877e737479d8739d5db5b39271bc967':28C 'decod':45C,69C 'detail':17C 'direct':60C 'edit':20C 'empti':80C 'entir':37C 'exec':62C,104C 'execut':118C 'exfiltr':141C,168C 'fb52479116026de0be08479d69a7e28915fc9add4b66ff31152b0a47dc256977':134C 'file':142C,167C 'files-exfiltr':166C 'function':84C,137C 'hidden':171C 'hide':94C,138C 'import':64C,74C,109C,131C 'import-tim':108C 'infosteal':156C 'inspector':27C 'instal':121C 'intent':154C 'interpret':124C 'kam193':133C 'kb':49C,57C 'lambda':41C 'legitim':91C 'lib':173C 'like':155C 'line':23C 'liter':51C 'loader/dropper':111C 'locat':146C 'mal':6A,9A 'malici':1A,13B,148C,153C 'modul':34C,96C 'obfusc':101C 'opaqu':58C 'packag':14B,30C,77C,129C 'pass':53C 'payload':70C 'per':15C 'pipe':102C 'provid':136C 'pypi':5A 'python':123C 'qoeoe':4A,12A,75C 'qoeoe/__init__.py':63C 'qoeoe/starts.py':35C 'readabl':86C 'readm':81C 'reason':92C,161C 'remot':145C 'result':55C 'revers':47C,99C 'run':71C 'shape':112C 'ship':31C 'singl':33C 'soon':126C 'sourc':16C,24C,132C 'start':65C 'string':50C 'surfac':88C 'target':175C 'time':110C 'uncondit':66C 'usag':174C 'whose':36C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-04T10:27:28+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-15927","url":"https://osv.dev/vulnerability/MAL-2026-15927","severity":"critical","published_at":"2026-09-04T10:27:28+00:00","modified_at":"2026-09-04T21:30:08+00:00","first_seen_at":"2026-10-26T20:51:56+00:00","fetched_at":"2026-10-26T20:51:56+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"}