Three PyPI Packages Found Including Password Stealer by Mistake

You are currently viewing Three PyPI Packages Found Including Password Stealer by Mistake


Due to the inclusion of a malicious’request’ dependency in some versions, the PyPI packages ‘keep,’ ‘pyanxdns,’ and ‘api-res-py’ were revealed to include a backdoor in an unexpected turn of events.


The ‘keep’ modus operandi of the PyPI package is explained

  • It was determined that some PyPI package versions included a harmful dependency.
  • Back in May, GitHub user duxinglin1 found vulnerable versions with the misspelled’request’ dependency instead of the legitimate’requests’ library.
  • CVE-2022-30877 (‘keep’ version 1.2), CVE-2022-30882 (‘pyanxdns’ version 0.2), and CVE-2022-31313 (‘api-res-py’ version 0.1) have been issued to the vulnerable versions.

How serious is the threat?

The ‘Keep’ package poses a significant threat because it averages over 8,000 downloads per week. Because ‘pyanxdns’ and ‘api-res-py’ are small-scale projects, the situation is different.

Even if PyPI removed the request package, many mirror sites may not have done so completely, posing a risk of it being installed again.

A base64-encoded URL to the ‘’ is included in the malicious code inside the phony’request.’ Another URL (x.pyx) with the bogus’request’ requirement has been discovered by a threat intel analyst:

The file ‘’ contains a Remote Access Trojan (RAT), while ‘x.pyx’ contains data-stealing malware that steals cookies and personal data from web browsers such as Chrome, Firefox, Yandex, Brave, and others.

The spyware will try to collect usernames and passwords from online browsers. Threat actors who get access to user credentials can subsequently try to compromise the developer’s other accounts, potentially resulting in more supply-chain assaults.

Is it a hoax or a real typo?

A renowned tech website contacted the developers of each of these programmes to see if the problem was caused by a simple error, self-sabotage, or account hijacking.

This is due to a typographical error, rather than an account breach, according to sources.

Furthermore, it appears that the developers of the other two packages unintentionally used’request’ instead of the proper’requests’ owing to a simple typo.

Since then, the developer has re-uploaded a fresh version to PyPI and removed the previous version that referenced the malicious “request” dependent.


Despite the fact that the malicious’request’ dependent was long deleted from the PyPI registry in this scenario, anyone using a vulnerable version of the PyPI packages and depending on a mirror to acquire dependencies might wind up with malicious information-stealers on their machine.

Leave a Reply