{"id":"MAL-2026-15926","kind":"package","aliases":["MAL-2026-15926"],"related":[],"title":"Malicious code in astlsi (PyPI)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (222a62d677f99497f67476b9cc87886c05fb2a08827430934fb518798abb8339)\nThe package presents itself as a proxy health-check utility, but its exported starts() function walks /storage/emulated/0/ (Android user-storage), collects files with source/document extensions (.py,.json,.txt,.html,.php), packs them into a zip archive, and POSTs the archive to https://tapi.bale.ai/<bot-token>/sendDocument with chat_id 5263487757. The Bale bot token and chat id are hardcoded in the module. The proxy-latency scaffolding around this call performs no real proxy check and serves as a cover story for the single exfiltration request.\n\n## Source: kam193 (902508cd9285413782c405b438e21f1f29787d38aba7badf71aeb4e0b632b9b6)\nThe provided functionality hides code that exfiltrates files to a remote location.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-asti\n\n\nReasons (based on the campaign):\n\n\n - files-exfiltration\n\n\n - action-hidden-in-lib-usage\n\n\n - target:android","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"astlsi","fixed":[],"affected":"= 0.1.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-04T10:24:22+00:00","first_seen_at":"2026-10-26T20:51:56+00:00","triaged_at":"2026-10-26T21:12:36+00:00","updated_at":"2026-10-26T21:12:36+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-09':141C '-15926':8A,11A '-2026':7A,10A '/senddocument':73C '/storage/emulated/0':46C '2026':140C '222a62d677f99497f67476b9cc87886c05fb2a08827430934fb518798abb8339':28C '5263487757':77C '902508cd9285413782c405b438e21f1f29787d38aba7badf71aeb4e0b632b9b6':116C 'action':152C 'action-hidden-in-lib-usag':151C 'amazon':26C 'amazon-inspector':25C 'android':47C,158C 'archiv':66C,70C 'around':95C 'asti':142C 'astlsi':4A,12A 'bale':79C 'base':144C 'bot':80C 'call':97C 'campaign':132C,139C,147C 'categori':129C 'chat':75C,83C 'check':38C,102C 'clear':134C 'code':2A,121C 'collect':51C 'cover':107C 'detail':17C 'edit':20C 'exfiltr':112C,123C,150C 'export':42C 'extens':55C 'file':52C,124C,149C 'files-exfiltr':148C 'function':44C,119C 'hardcod':86C 'health':37C 'health-check':36C 'hidden':153C 'hide':120C 'html':59C 'id':76C,84C 'infosteal':138C 'inspector':27C 'intent':136C 'json':57C 'kam193':115C 'latenc':93C 'lib':155C 'like':137C 'line':23C 'locat':128C 'mal':6A,9A 'malici':1A,13B,130C,135C 'modul':89C 'pack':61C 'packag':14B,30C 'per':15C 'perform':98C 'php':60C 'post':68C 'present':31C 'provid':118C 'proxi':35C,92C,101C 'proxy-lat':91C 'py':56C 'pypi':5A 'real':100C 'reason':143C 'remot':127C 'request':113C 'scaffold':94C 'serv':104C 'singl':111C 'sourc':16C,24C,114C 'source/document':54C 'start':43C 'storag':50C 'stori':108C 'tapi.bale.ai':72C 'target':157C 'token':81C 'txt':58C 'usag':156C 'user':49C 'user-storag':48C 'util':39C 'walk':45C 'zip':65C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-04T10:24:22+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-15926","url":"https://osv.dev/vulnerability/MAL-2026-15926","severity":"critical","published_at":"2026-09-04T10:24:22+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"}