Two malicious PyPI spellchecker packages delivered Python RAT and were downloaded over 1,000 times

by

Cybersecurity researchers found two malicious packages on the Python Package Index that posed as spellcheckers but contained a downloader for a Python remote access trojan, and were downloaded just over 1,000 times, reported in a technical analysis by Aikido.

KEY FACTS

  • Incident Two PyPI packages delivered a downloader for a Python RAT
  • Packages spellcheckerpy and spellcheckpy
  • Trigger Payload executed after spellcheckpy v1.2.0 on January 21, 2026
  • Downloads A little over 1,000 collective installs before removal

The malicious payload was hidden inside a compressed Basque dictionary file named resources/eu.json.gz rather than in an __init__.py file. Extraction via test_file(“eu”, “utf-8”, “spellchecker”) retrieves a Base64 downloader stored under the key “spellchecker”.

The first three published versions fetched and decoded the payload but did not run it. An update published on January 21, 2026 added an obfuscated execution trigger that runs when the SpellChecker module is imported.

The downloader is designed to retrieve a Python RAT from an external domain updatenet[.]work. The RAT can fingerprint the host, parse incoming commands, and execute them. The domain was registered in late October 2025 and resolves to 172.86.73.139, an IP managed by RouterHosting LLC, also known as Cloudzy.

The two packages were removed from PyPI after discovery. A previously reported malicious package named “spellcheckers” was found in November 2025 with similar behavior, and investigators consider the incidents possibly linked. It is not known which downstream projects, if any, installed the malicious releases.

WHY IT MATTERS

Malicious code hidden in openly published packages can execute automatically on import and create persistent remote access to compromised hosts. Organizations and developers should verify package provenance and audit dependencies to reduce supply chain risk.