Skip to content
Heist/ feed
Unrated

Malicious code in darkglitch (PyPI)

Type: advisorySource: OSV1 source record

--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (b8e3bc2b0ee4fc1f401e9d810e9ae30ee45ae822962099291c502e355f4bdcc7) darkglitch ships a remote-access agent that connects to the hardcoded signaling host wss://malware-signal.vercel.app on room D4RKGLI7CH and executes `remote-command` messages via subprocess.run(command, shell=True), returning stdout/stderr to the remote peer. Authentication on the channel is limited to knowledge of the hardcoded room id, so any party who reaches the signaling server can run arbitrary shell commands on the host. transfer.py extends this channel with `file-transfer` frames that base64-encode arbitrary files for download and write attacker-supplied bytes to arbitrary paths for upload, using a python3 heredoc executed through the same shell path. setup_windows.py (exposed as the `darkglitch-setup` script and the `install_windows` distutils command) writes a batch file into %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup that runs `python -m darkglitch -l -b` at every user login, making the remote-command listener boot-persistent. The internal module tree is named `app/malware_signal/`, the connection banner prints 'CONNECTING TO MALWARE SIGNAL BASH', and the control host is registered under `malware-signal.vercel.app` — an explicit malware framing rather than a covert one.

Announced Source revision 1
Original source ↗

MAL-2026-10756

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:MAL-2026-10756

darkglitch

Source reference: /affected/0/package/name

Affected versions
1.2.0

Source reference: /affected/0/versions

1.2.9

Source reference: /affected/0/versions

1.4.5

Source reference: /affected/0/versions

1.4.4

Source reference: /affected/0/versions

Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "package": {
      "name": "darkglitch",
      "purl": "pkg:pypi/darkglitch",
      "ecosystem": "PyPI"
    },
    "versions": [
      "1.2.0",
      "1.2.9",
      "1.4.5",
      "1.4.4"
    ],
    "database_specific": {
      "cwes": [
        {
          "name": "Embedded Malicious Code",
          "cweId": "CWE-506",
          "description": "The product contains code that appears to be malicious in nature."
        },
        {
          "name": "Embedded Malicious Code",
          "cweId": "CWE-506",
          "description": "The product contains code that appears to be malicious in nature."
        },
        {
          "name": "Embedded Malicious Code",
          "cweId": "CWE-506",
          "description": "The product contains code that appears to be malicious in nature."
        },
        {
          "name": "Embedded Malicious Code",
          "cweId": "CWE-506",
          "description": "The product contains code that appears to be malicious in nature."
        }
      ],
      "source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/darkglitch/MAL-2026-10756.json",
      "indicators": {
        "evidence_files": [
          {
            "path": "command_injection/injector.py",
            "tlsh": "3af115d589be5c15c2875099a8a6b3521101bb032f08357a7dec76a81f4c32ad5b4fde",
            "sha256": "6ab028325a6c5f179e95351eb30fcf0e53c09bbde826bac31cc0a50435a8f472"
          },
          {
            "path": "core/config.py",
            "tlsh": "25a012632325407501498c44c007f80c730573686481025064011c49d9105d00392101",
            "sha256": "0f7e2a4880c8807b0ad1212de92751b2f6c031cd6cc4bea80a07ec2e9a27ea8d"
          },
          {
            "path": "command/run/build_exe.py",
            "tlsh": "9a41512aca356e7106c3ca5e68b303d3c556d01709d0312534dec7982f9ba8e4276bed",
            "sha256": "5768ef6be70ecad0c0babae00a11c850915399f0c1895b6982d87a122311f1e1"
          }
        ],
        "package_integrity": [
          {
            "hashes": {
              "md5": "c1c4ae29bbf2b29c0939b20b4e4ead4c",
              "sha256": "c216762c6f26c96dca1abddc755209faa25333b94f90e0299065a63013fe181f",
              "blake2b_256": "c879c44ed1ab8914613126df674f751601713f1774dc647643c42bacc0967b64"
            },
            "filename": "darkglitch-1.2.0-py3-none-any.whl"
          },
          {
            "hashes": {
              "md5": "fa94b3faf1d48c41e07aada064153bc7",
              "sha256": "28e7cadb2ede0b6852027769fb6072e8af2634175304ea22adc08de08e684ed9",
              "blake2b_256": "9b8a7b6f1367bf24684cc67880b11b17bb702134f9de31d757b9910cac058c22"
            },
            "filename": "darkglitch-1.2.0.tar.gz"
          }
        ]
      }
    }
  }
]

Publisher severity

No explicit severity was provided.

Event
#36969 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement