{"id":"MAL-2026-15935","kind":"package","aliases":["MAL-2026-15935"],"related":[],"title":"Malicious code in proxycer (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (2286dac5be0a9e8cc2e7b1ff92253d4b09beb0c43d5e795b9b9ea1391e6f8764)\nThe package's top-level __init__.py imports starts.py, which is a single-line loader that reverses a ~100KB string literal, base64-decodes it, marshal.loads the result into a code object, and exec()s it. All actual functionality is concealed behind reversal + base64 + marshal bytecode obfuscation, with an empty README and empty PKG-INFO description. The obfuscated code object runs automatically on `import proxycer`, so any behavior it contains (credential access, outbound network, filesystem writes, persistence) executes on the installer's host without source visibility.\n\n## Source: kam193 (c7f54d8a442ae6b7c359629af5db210aafade4776e03f44895e67923bd464e29)\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":"proxycer","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-05T07:39:50+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':145C '-15935':8A,11A '-2026':7A,10A '100kb':49C '2026':144C '2286dac5be0a9e8cc2e7b1ff92253d4b09beb0c43d5e795b9b9ea1391e6f8764':28C 'access':103C 'action':156C 'action-hidden-in-lib-usag':155C 'actual':68C 'amazon':26C 'amazon-inspector':25C 'android':162C 'asti':146C 'automat':93C 'base':148C 'base64':53C,74C 'base64-decodes':52C 'behavior':99C 'behind':72C 'bytecod':76C 'c7f54d8a442ae6b7c359629af5db210aafade4776e03f44895e67923bd464e29':120C 'campaign':136C,143C,151C 'categori':133C 'clear':138C 'code':2A,61C,90C,125C 'conceal':71C 'contain':101C 'credenti':102C 'decod':54C 'descript':87C 'detail':17C 'edit':20C 'empti':80C,83C 'exec':64C 'execut':109C 'exfiltr':127C,154C 'file':128C,153C 'files-exfiltr':152C 'filesystem':106C 'function':69C,123C 'hidden':157C 'hide':124C 'host':114C 'import':37C,95C 'info':86C 'infosteal':142C 'init':35C 'inspector':27C 'instal':112C 'intent':140C 'kam193':119C 'level':34C 'lib':159C 'like':141C 'line':23C,44C 'liter':51C 'loader':45C 'locat':132C 'mal':6A,9A 'malici':1A,13B,134C,139C 'marshal':75C 'marshal.loads':56C 'network':105C 'obfusc':77C,89C 'object':62C,91C 'outbound':104C 'packag':14B,30C 'per':15C 'persist':108C 'pkg':85C 'pkg-info':84C 'provid':122C 'proxyc':4A,96C 'proxycer':12A 'py':36C 'pypi':5A 'readm':81C 'reason':147C 'remot':131C 'result':58C 'revers':47C,73C 'run':92C 'singl':43C 'single-lin':42C 'sourc':16C,24C,116C,118C 'starts.py':38C 'string':50C 'target':161C 'top':33C 'top-level':32C 'usag':160C 'visibl':117C 'without':115C 'write':107C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-05T07:39:50+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-15935","url":"https://osv.dev/vulnerability/MAL-2026-15935","severity":"critical","published_at":"2026-09-05T07:39:50+00:00","modified_at":"2026-09-11T05:00:08+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"}