{"id":"MAL-2026-15931","kind":"package","aliases":["MAL-2026-15931"],"related":[],"title":"Malicious code in metricboxlite (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d5a511a75c8c42dcd677dd3814265d3befefa7f339bdc6b0336788635813e837)\nMetricBoxLite 1.0 collects the installer's username (getpass.getuser) and hostname (socket.gethostname), JSON-encodes them, and POSTs the payload to a hardcoded remote endpoint at https://kznkrxfzy4xgib6ejfh8etegndp3kwguf.oast.invalid/collect. The beacon fires from two independent paths: setup.py calls the reporter at module top level, so it runs during `pip install` of the sdist, and metricboxlite/__init__.py performs the same collect-and-POST at top level, so any `import metricboxlite` also phones home. Network errors are silently swallowed. The destination is an OAST/out-of-band-callback host that is not first-party to the package or its ecosystem, and the collected fields are installer identity rather than package operational data.\n\n## Source: kam193 (83407b9909ebc137e4d47fbb7fe2672a5920dd22bfd7d86ce8edb536bdd5fcab)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"metricboxlite","fixed":[],"affected":"= 1.0; = 2.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-04T18:22:18+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":"'-15931':8A,11A '-2026':7A,10A '/collect.':56C '1.0':30C '83407b9909ebc137e4d47fbb7fe2672a5920dd22bfd7d86ce8edb536bdd5fcab':137C 'also':97C,168C 'amazon':26C 'amazon-inspector':25C 'anyth':169C 'base':195C 'basic':146C,205C 'beacon':58C 'call':65C 'campaign':187C,198C 'categori':158C 'clear':182C 'co':180C 'code':2A,202C,230C 'collect':31C,87C,125C 'collect-and-post':86C 'command':224C 'contain':201C 'd5a511a75c8c42dcd677dd3814265d3befefa7f339bdc6b0336788635813e837':28C 'data':134C,206C 'destin':106C 'detail':17C 'ecosystem':122C 'edit':20C 'encod':42C 'endpoint':52C 'error':101C 'execut':228C 'exfiltr':145C,204C 'explor':174C 'field':126C 'fire':59C 'first':115C 'first-parti':114C 'generic':189C 'generic-standard-pypi-install-pentest':188C 'getpass.getuser':36C 'hardcod':50C 'harm':185C 'home':99C 'host':110C,150C 'hostnam':38C 'ident':129C 'import':95C,142C 'independ':62C 'inform':147C 'inspector':27C 'instal':33C,77C,128C,138C,192C,223C,232C 'ip':211C 'json':41C 'json-encod':40C 'kam193':136C 'kit':178C 'kznkrxfzy4xgib6ejfh8etegndp3kwguf.oast.invalid':55C 'kznkrxfzy4xgib6ejfh8etegndp3kwguf.oast.invalid/collect.':54C 'level':71C,92C 'like':163C,172C,210C 'limit':217C 'line':23C 'look':162C,171C 'low':184C 'low-harm':183C 'mal':6A,9A 'malici':1A,13B,229C 'metricboxlit':4A,29C,96C 'metricboxlite':12A 'metricboxlite/__init__.py':82C 'modul':69C,144C 'network':100C 'oast/out-of-band-callback':109C 'oper':133C 'overrid':221C 'packag':14B,119C,132C,140C,153C,161C,166C,200C,220C 'parti':116C 'path':63C 'payload':47C 'pentest':160C,165C,193C 'per':15C 'perform':83C 'phone':98C 'pip':76C 'possibl':186C 'post':45C,89C 'pre':176C 'pre-prepar':175C 'prepar':177C 'probabl':159C 'purpos':157C 'pypi':5A,191C 'rather':130C 'reason':194C 'remot':51C 'report':67C 'research':179C 'risk':218C 'run':74C 'sdist':80C 'setup.py':64C,226C 'silent':103C 'socket.gethostname':39C 'sourc':16C,24C,135C 'standard':190C 'swallow':104C 'system':209C 'test':173C 'top':70C,91C 'two':61C 'typic':164C 'usernam':35C,213C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-04T18:22:18+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-15931","url":"https://osv.dev/vulnerability/MAL-2026-15931","severity":"critical","published_at":"2026-09-04T18:22:18+00:00","modified_at":"2026-09-09T05:30:05+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"}