{"id":"MAL-2026-16121","title":"Malicious code in websetup (PyPI)","summary":"Malicious code in websetup (PyPI)","severity":"critical","exploited":true,"vendor":"websetup","product":"websetup","ecosystem":"pip","affected":["websetup"],"published":"2026-09-09","updated":"2026-09-10","sourceUpdated":"2026-09-10T18:30:36.735116178Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/MAL-2026-16121","references":[{"url":"https://pypi.org/project/websetup/"},{"url":"https://pypi.org/project/websetup/0.1.0/"}],"tags":["osv","pip","malware"],"ingestedAt":"2026-09-12T03:13:01.741Z","slug":"MAL-2026-16121","body":"## Overview\n\nwebsetup@0.1.0 is a single module whose only function, setup.set(text=None, file_path=None) in websetup/sender.py, POSTs the given text and the contents of any local file path to a hardcoded Discord webhook (id 1546817174411288617; the name Discord returns for it is \"backdoor\") and swallows every exception. Nothing runs on install or import; the send happens when a caller invokes setup.set(). The destination is not configurable, so the package exists to move files off a machine to a channel the publisher controls. The Discord URL is listed under urls only.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (e57a4e728de92fb3c7d7693551dec707f4b4c3a92bc1c9eff30eab0f92ac2d93)\nThe package exposes a single public API, websetup.setup.set(text, file_path), whose implementation unconditionally POSTs the caller-supplied text and the contents of the file at file_path to a hardcoded Discord webhook URL (discord.com/api/webhooks/1546817174411288617/...). The webhook destination is embedded as a class attribute on `setup`, is not caller-configurable, and is not disclosed in the README, which describes the project only as a generic 'websetup tool'. Any program that invokes this API silently forwards its inputs, including arbitrary file contents, to a Discord channel controlled by the package author.\n\n\n## Affected packages\n\n- `websetup`\n\n## Remediation\n\nRefer to the advisory for the patched release.","depth":"abyssal","depthScore":70,"depthScoreParts":{"impact":52.3,"likelihood":0,"exploitation":18,"ransomware":0},"changes":[]}