Vulnerabilities Found in Python Packages: A Growing Threat
Discovery of Legacy Vulnerabilities
Recent investigations by cybersecurity experts at ReversingLabs have revealed significant vulnerabilities within older Python packages. These vulnerabilities could open doors for supply chain attacks on the Python Package Index (PyPI). The core of the issue lies in outdated bootstrap files that are part of a build and deployment tool known as “zc.buildout.”
Insights from Security Researchers
According to security researcher Vladimir Pezo, the bootstrap scripts are designed to automate the download, build, and installation of necessary libraries and tools. The primary concern comes from these scripts executing a fetch-and-run process for the Distribute package from an outdated domain, python-distribute.org, which has been available for purchase since 2014. This domain is being handled primarily for ad revenue generation, raising serious security questions.
Some of the prominent packages that include this problematic bootstrap script are tornado, pypiserver, slapos.core, roman, xlutils, and testfixtures.
The Role of Bootstrap Scripts
The old bootstrap script, named “bootstrap.py,” was initially created to set up the Buildout environment, allowing for easier package management. The script also enabled the installation of Distribute, a short-lived fork of the Setuptools project. Initially introduced to address shortcomings in Setuptools, the features from Distribute were incorporated back into Setuptools around 2013, rendering Distribute largely obsolete.
Despite its obsolescence, many packages still include the bootstrap script that defaults to installing Distribute or allows the option to do so via command-line arguments. The ongoing presence of these scripts poses risks, especially now that the domain is vulnerable to takeover by malicious entities.
The Risks of Domain Takeover
The potential for a domain takeover is not merely speculative; it has happened before. For instance, in 2023, the npm package fsevents fell victim to a compromised cloud resource. An attacker took control of it to distribute malicious executables to users installing certain versions, receiving a CVSS score of 9.8 for the vulnerability (CVE-2023-45311).
ReversingLabs emphasizes that the fundamental programming pattern—fetching and executing code from a hard-coded domain—is often seen in malware that operates as a downloader. The failure to correctly retire the Distribute package has allowed outdated and vulnerable scripts to linger, exposing numerous projects to potential attacks.
Current State of Affected Packages
While some of the packages have begun to remove the vulnerable bootstrap script, others remain at risk. For example, the slapos.core package continues to distribute the vulnerable code. It’s also incorporated in the developmental versions of the Tornado package, further complicating the situation.
Importantly, even though the bootstrap scripts are not automatically executed during the package installation process, they still represent an “unnecessary attack surface.” Attackers could exploit this if developers inadvertently run code that triggers the execution of these scripts.
A New Malicious Threat
Adding to the security woes in the Python ecosystem, HelixGuard recently uncovered a malicious package named “spellcheckers” on PyPI. This package falsely claimed to be a spelling correction tool involving OpenAI Vision but was riddled with malicious code. It connected to an external server to download additional payloads, enabling the execution of a remote access trojan (RAT).
Although this malicious package was uploaded on November 15, 2025, and downloaded 955 times before it was taken down, it highlights the critical need for vigilant scrutiny of packages published on PyPI.
Conclusion
As the security landscape continues to evolve, the implications of these vulnerabilities in legacy Python packages cannot be overstated. Researchers and developers alike must remain vigilant in identifying and addressing these weaknesses to safeguard their applications and users. The underlying takeaway is clear: the best defense against cybersecurity threats lies in ongoing vigilance, regular updates, and proactive security measures within the development lifecycle.


