{"id":"MAL-2026-18749","kind":"package","aliases":["MAL-2026-18749"],"related":[],"title":"Malicious code in qzc690382 (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (b34d702840be6773d3d41444f836f45dab6a8e3524fcc8e4cd6d224ac3a77f1e)\nThe package body is inert (`__init__.py` contains only `#c\\n`); the entire functionality lives in setup.py, which runs on `pip install`. During install, setup.py writes a Python HTTP server script to `/tmp/.kxs` and launches it detached via `subprocess.Popen([sys.executable, '/tmp/.kxs'], start_new_session=True)`. The server binds `0.0.0.0` on ports 9998, 9999, 8089, 8099, and 8899 and executes any shell command passed in a GET `c=` query parameter via `subprocess.run(c, shell=True,...)`, gated only by a token stored at `/tmp/.kxq`. The result is a persistent, network-exposed shell on all interfaces of the installing machine, running as the installing user, with no relationship to building or using any advertised functionality.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"qzc690382","fixed":[],"affected":"= 1.0.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-11-07T10:21:14+00:00","first_seen_at":"2026-11-07T11:17:32+00:00","triaged_at":"2026-11-07T11:19:20+00:00","updated_at":"2026-11-07T11:27:57+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-18749':8A,11A '-2026':7A,10A '/tmp/.kxq':110C '/tmp/.kxs':61C,69C '0.0.0.0':77C '8089':82C '8099':83C '8899':85C '9998':80C '9999':81C 'advertis':140C 'amazon':26C 'amazon-inspector':25C 'b34d702840be6773d3d41444f836f45dab6a8e3524fcc8e4cd6d224ac3a77f1e':28C 'bind':76C 'bodi':31C 'build':136C 'c':38C,95C,100C 'code':2A 'command':90C 'contain':36C 'detach':65C 'detail':17C 'edit':20C 'entir':41C 'execut':87C 'expos':118C 'function':42C,141C 'gate':103C 'get':94C 'http':57C 'inert':33C 'init':34C 'inspector':27C 'instal':50C,52C,125C,130C 'interfac':122C 'launch':63C 'line':23C 'live':43C 'machin':126C 'mal':6A,9A 'malici':1A,13B 'n':39C 'network':117C 'network-expos':116C 'new':71C 'packag':14B,30C 'paramet':97C 'pass':91C 'per':15C 'persist':115C 'pip':49C 'port':79C 'py':35C 'pypi':5A 'python':56C 'queri':96C 'qzc690382':4A,12A 'relationship':134C 'result':112C 'run':47C,127C 'script':59C 'server':58C,75C 'session':72C 'setup.py':45C,53C 'shell':89C,101C,119C 'sourc':16C,24C 'start':70C 'store':108C 'subprocess.popen':67C 'subprocess.run':99C 'sys.executable':68C 'token':107C 'true':73C,102C 'use':138C 'user':131C 'via':66C,98C 'write':54C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":null,"audience":null,"plain_action":null,"pkeys":["qzc690382"],"ptokens":["qzc690382"],"labels":["critical","malicious","package","pypi"],"campaign_type":null,"search_a":"'-18749':8A,11A '-2026':7A,10A 'code':2A 'mal':6A,9A 'malici':1A 'pypi':5A 'qzc690382':4A,12A","search_b":"'malici':13B 'packag':14B","search_c":"'/tmp/.kxq':110C '/tmp/.kxs':61C,69C '0.0.0.0':77C '8089':82C '8099':83C '8899':85C '9998':80C '9999':81C 'advertis':140C 'amazon':26C 'amazon-inspector':25C 'b34d702840be6773d3d41444f836f45dab6a8e3524fcc8e4cd6d224ac3a77f1e':28C 'bind':76C 'bodi':31C 'build':136C 'c':38C,95C,100C 'command':90C 'contain':36C 'detach':65C 'detail':17C 'edit':20C 'entir':41C 'execut':87C 'expos':118C 'function':42C,141C 'gate':103C 'get':94C 'http':57C 'inert':33C 'init':34C 'inspector':27C 'instal':50C,52C,125C,130C 'interfac':122C 'launch':63C 'line':23C 'live':43C 'machin':126C 'n':39C 'network':117C 'network-expos':116C 'new':71C 'packag':30C 'paramet':97C 'pass':91C 'per':15C 'persist':115C 'pip':49C 'port':79C 'py':35C 'python':56C 'queri':96C 'relationship':134C 'result':112C 'run':47C,127C 'script':59C 'server':58C,75C 'session':72C 'setup.py':45C,53C 'shell':89C,101C,119C 'sourc':16C,24C 'start':70C 'store':108C 'subprocess.popen':67C 'subprocess.run':99C 'sys.executable':68C 'token':107C 'true':73C,102C 'use':138C 'user':131C 'via':66C,98C 'write':54C","first_public_at":"2026-11-07T10:21:14+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-18749","url":"https://osv.dev/vulnerability/MAL-2026-18749","severity":"critical","published_at":"2026-11-07T10:21:14+00:00","modified_at":"2026-11-07T10:45:03+00:00","first_seen_at":"2026-11-07T11:17:32+00:00","fetched_at":"2026-11-07T11:17:32+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}