{"id":"MAL-2026-17167","kind":"package","aliases":["MAL-2026-17167"],"related":[],"title":"Malicious code in prosocks (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (cb2bf0fd5f445eed9825601f2b4497502054176d106d4fecb9eabf38312dd582)\nprosocks 1.0.25 enrolls the installer's host as a remote-controlled SOCKS5 exit node under a hardcoded control plane at https://kalnetz.store. setup.py's custom install command writes prosocks.bat into the Windows Startup folder (establishing boot persistence) with the command '\"{python_exe}\" -m prosocks https://kalnetz.store' and immediately spawns that process during `pip install`. The top-level module additionally calls _auto_launch() so that any `import prosocks` spawns a detached subprocess running the same agent. Once running, ProSocksAgent.register() queries ip-api.com and api.ipify.org for the host's public IP, generates an agent_id and proxy password, and POSTs agent_id, hostname, public IP, proxy port, and password to https://kalnetz.store/api/register, then binds a SOCKS5 server on 0.0.0.0:9050 accessible from any network the host can reach. Heartbeat and bandwidth telemetry are POSTed to /api/heartbeat and /api/bandwidth, and IP changes trigger re-registration. All requests to the panel and IP-lookup services are made with TLS verification disabled (verify=False). The combination of install-time execution, import-time execution, Windows Startup persistence, hardcoded non-first-party control plane, and an unauthenticated SOCKS5 listener on all interfaces whose credentials are handed to that control plane matches a proxyware/botnet backdoor.\n\n## Source: kam193 (a1ca37b881f19975a8ab8b23bd5e69b51355333374385aabfc5784b69bf95545)\nThe package automatically joins the machine to a proxy network. Depending on the version, it can happen during the package installation or when importing the module.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-prosocks\n\n\nReasons (based on the campaign):\n\n\n - other\n\n\n - peristence-autorun\n\n\n - persistence","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"prosocks","fixed":[],"affected":"= 1.0.0; = 1.0.1; = 1.0.2; = 1.0.3; = 1.0.4; = 1.0.5; = 1.0.6; = 1.0.7; = 1.0.8; = 1.0.9; = 1.0.13; = 1.0.14; = 1.0.15; = 1.0.16; = 1.0.17; = 1.0.18; = 1.0.19; = 1.0.20; = 1.0.21; = 1.0.22; = 1.0.23; = 1.0.25; = 1.0.26; = 1.0.27; = 1.0.32; = 1.0.28; = 1.0.29; = 1.0.30","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-24T20:27:37+00:00","first_seen_at":"2026-10-26T20:51:58+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':272C '-17167':8A,11A '-2026':7A,10A '/api/bandwidth':164C '/api/heartbeat':162C '/api/register,':138C '0.0.0.0':145C '1.0.25':30C '2026':271C '9050':146C 'a1ca37b881f19975a8ab8b23bd5e69b51355333374385aabfc5784b69bf95545':233C 'access':147C 'addit':87C 'agent':103C,119C,126C 'amazon':26C 'amazon-inspector':25C 'api.ipify.org':110C 'auto':89C 'automat':236C 'autorun':282C 'backdoor':230C 'bandwidth':157C 'base':275C 'bind':140C 'boot':64C 'call':88C 'campaign':263C,270C,278C 'categori':260C 'cb2bf0fd5f445eed9825601f2b4497502054176d106d4fecb9eabf38312dd582':28C 'chang':167C 'clear':265C 'code':2A 'combin':191C 'command':55C,68C 'control':40C,47C,209C,225C 'credenti':220C 'custom':53C 'depend':244C 'detach':98C 'detail':17C 'disabl':187C 'edit':20C 'enrol':31C 'establish':63C 'exe':70C 'execut':196C,200C 'exit':42C 'fals':189C 'first':207C 'folder':62C 'generat':117C 'hand':222C 'happen':250C 'hardcod':46C,204C 'heartbeat':155C 'host':35C,113C,152C 'hostnam':128C 'id':120C,127C 'immedi':75C 'import':94C,198C,257C 'import-tim':197C 'infosteal':269C 'inspector':27C 'instal':33C,54C,81C,194C,254C 'install-tim':193C 'intent':267C 'interfac':218C 'ip':116C,130C,166C,179C 'ip-api.com':108C 'ip-lookup':178C 'join':237C 'kalnetz.store':50C,73C,137C 'kalnetz.store/api/register,':136C 'kam193':232C 'launch':90C 'level':85C 'like':268C 'line':23C 'listen':215C 'lookup':180C 'm':71C 'machin':239C 'made':183C 'mal':6A,9A 'malici':1A,13B,261C,266C 'match':227C 'modul':86C,259C 'network':150C,243C 'node':43C 'non':206C 'non-first-parti':205C 'packag':14B,235C,253C 'panel':176C 'parti':208C 'password':123C,134C 'per':15C 'perist':281C 'peristence-autorun':280C 'persist':65C,203C,283C 'pip':80C 'plane':48C,210C,226C 'port':132C 'post':125C,160C 'process':78C 'prosock':4A,29C,72C,95C,273C 'prosocks':12A 'prosocks.bat':57C 'prosocksagent.register':106C 'proxi':122C,131C,242C 'proxyware/botnet':229C 'public':115C,129C 'pypi':5A 'python':69C 'queri':107C 're':170C 're-registr':169C 'reach':154C 'reason':274C 'registr':171C 'remot':39C 'remote-control':38C 'request':173C 'run':100C,105C 'server':143C 'servic':181C 'setup.py':51C 'socks5':41C,142C,214C 'sourc':16C,24C,231C 'spawn':76C,96C 'startup':61C,202C 'subprocess':99C 'telemetri':158C 'time':195C,199C 'tls':185C 'top':84C 'top-level':83C 'trigger':168C 'unauthent':213C 'verif':186C 'verifi':188C 'version':247C 'whose':219C 'window':60C,201C 'write':56C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-24T20:27:37+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-17167","url":"https://osv.dev/vulnerability/MAL-2026-17167","severity":"critical","published_at":"2026-09-24T20:27:37+00:00","modified_at":"2026-09-30T01:45:10+00:00","first_seen_at":"2026-10-26T20:51:58+00:00","fetched_at":"2026-10-26T20:51:58+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"}