{"id":"MAL-2026-17807","kind":"package","aliases":["MAL-2026-17807"],"related":[],"title":"Malicious code in py2ops (PyPI)","description":"The package installs a console command named python2 (pyops.cli:main), so it runs when someone types python2. On first run _register() in cli.py POSTs the hostname and OS to a space-z.ai server and keeps the returned apiKey in ~/.python2/config.json. Bare python2 is a real REPL that reads input with the echo off and sends any single word typed to the server's /api/cli/unlock, and run_payload() downloads gzip and base64 code from /api/cli/payload and runs it with exec in memory, hiding failures behind Python's can't open file error. Comments in the file call this the cover. I did not see what the served code does. I read 2.2 and did not run it.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"py2ops","fixed":[],"affected":"= 2.2","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-09T16:02:15+00:00","first_seen_at":"2026-10-26T20:51:59+00:00","triaged_at":"2026-10-26T21:08:21+00:00","updated_at":"2026-10-26T21:08:21+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-17807':8A,11A '-2026':7A,10A '/.python2/config.json':53C '/api/cli/payload':87C '/api/cli/unlock':77C '2.2':124C 'apikey':51C 'bare':54C 'base64':84C 'behind':97C 'call':109C 'cli.py':37C 'code':2A,85C,120C 'command':20C 'comment':105C 'consol':19C 'cover':112C 'download':81C 'echo':65C 'error':104C 'exec':92C 'failur':96C 'file':103C,108C 'first':33C 'gzip':82C 'hide':95C 'hostnam':40C 'input':62C 'instal':17C 'keep':48C 'main':24C 'mal':6A,9A 'malici':1A,13B 'memori':94C 'name':21C 'open':102C 'os':42C 'packag':14B,16C 'payload':80C 'post':38C 'py2ops':4A,12A 'pyops.cli':23C 'pypi':5A 'python':98C 'python2':22C,31C,55C 'read':61C,123C 'real':58C 'regist':35C 'repl':59C 'return':50C 'run':27C,34C,79C,89C,128C 'see':116C 'send':68C 'serv':119C 'server':46C,75C 'singl':70C 'someon':29C 'space-z.ai':45C 'type':30C,72C 'word':71C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-09T16:02:15+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-17807","url":"https://osv.dev/vulnerability/MAL-2026-17807","severity":"critical","published_at":"2026-10-09T16:02:15+00:00","modified_at":"2026-10-12T05:30:05+00:00","first_seen_at":"2026-10-26T20:51:59+00:00","fetched_at":"2026-10-26T20:51:59+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"}