---
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'
---

## Overview

websetup@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.

---
_-= Per source details. Do not edit below this line.=-_

## Source: amazon-inspector (e57a4e728de92fb3c7d7693551dec707f4b4c3a92bc1c9eff30eab0f92ac2d93)
The 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.


## Affected packages

- `websetup`

## Remediation

Refer to the advisory for the patched release.
