{"id":"MAL-2026-15929","kind":"package","aliases":["MAL-2026-15929"],"related":[],"title":"Malicious code in pymaas (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (3d07b21485fb1007b5cca6c07b48620d235200b19dd62e8d6018d019ec5557dc)\nOn `import pymaas`, top-level code in the package invokes a `_canary()` function that collects the entire `os.environ` dictionary and `socket.gethostname()`, serializes them as JSON, and POSTs the payload via `urllib.request.urlopen` to the hardcoded host `https://vuorblucjega.dssldrf.net/python-install-log/pymaas`. The behavior runs unconditionally on import with no consent, no gating, and no relationship to the destination domain. Combined with the implausibly high version `99.99.0` and the package's own `dependency confusion test` description, the shipped code is a dependency-confusion beacon that harvests any credentials present in the process environment (CI tokens, cloud provider keys, registry auth tokens, database passwords) and delivers them to an external non-publisher host.\n\n## Source: kam193 (81e7303aa1cc62cb0fd1e4e6bc28ce118568e8eb5fb56d2a44818bacedf5ebdb)\nDuring import, the package exfiltrates environment variables.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-amirgo4496\n\n\nReasons (based on the campaign):\n\n\n - exfiltration-env-variables\n\n\n - dependency-confusion\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"pymaas","fixed":[],"affected":"= 99.99.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-04T15:01:36+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':163C '-15929':8A,11A '-2026':7A,10A '/python-install-log/pymaas':67C '2026':162C '3d07b21485fb1007b5cca6c07b48620d235200b19dd62e8d6018d019ec5557dc':28C '81e7303':142C '99.99.0':92C 'aa1cc62cb0fd1e4e6bc28ce118568e8eb5fb56d2a44818bacedf5ebdb':143C 'amazon':26C 'amazon-inspector':25C 'amirgo4496':164C 'auth':126C 'base':166C 'basic':183C 'beacon':110C 'behavior':69C 'campaign':154C,161C,169C 'canari':41C 'categori':151C 'ci':120C 'clear':156C 'cloud':122C 'code':2A,35C,104C,180C 'collect':44C 'combin':86C 'confus':99C,109C,176C 'consent':76C 'contain':179C 'credenti':114C 'data':184C 'databas':128C 'deliv':131C 'depend':98C,108C,175C 'dependency-confus':107C,174C 'descript':101C 'destin':84C 'detail':17C 'dictionari':48C 'domain':85C 'edit':20C 'entir':46C 'env':172C 'environ':119C,149C 'exfiltr':148C,171C,182C 'exfiltration-env-vari':170C 'extern':135C 'function':42C 'gate':78C 'hardcod':63C 'harvest':112C 'high':90C 'host':64C,139C 'implaus':89C 'import':30C,73C,145C 'infosteal':160C 'inspector':27C 'intent':158C 'invok':39C 'ip':189C 'json':54C 'kam193':141C 'key':124C 'level':34C 'like':159C,188C 'limit':195C 'line':23C 'mal':6A,9A 'malici':1A,13B,152C,157C 'non':137C 'non-publish':136C 'os.environ':47C 'packag':14B,38C,95C,147C,178C 'password':129C 'payload':58C 'per':15C 'post':56C 'present':115C 'process':118C 'provid':123C 'publish':138C 'pymaa':4A,31C 'pymaas':12A 'pypi':5A 'reason':165C 'registri':125C 'relationship':81C 'risk':196C 'run':70C 'serial':51C 'ship':103C 'socket.gethostname':50C 'sourc':16C,24C,140C 'system':187C 'test':100C 'token':121C,127C 'top':33C 'top-level':32C 'uncondit':71C 'urllib.request.urlopen':60C 'usernam':191C 'variabl':150C,173C 'version':91C 'via':59C 'vuorblucjega.dssldrf.net':66C 'vuorblucjega.dssldrf.net/python-install-log/pymaas':65C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-04T15:01:36+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-15929","url":"https://osv.dev/vulnerability/MAL-2026-15929","severity":"critical","published_at":"2026-09-04T15:01:36+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"}