|
| 1 | +--- |
| 2 | +title: "Prohibiting inbox.ru email domain registrations" |
| 3 | +description: We have prohibited new registrations of accounts using inbox.ru email domains. |
| 4 | +authors: |
| 5 | + - miketheman |
| 6 | +date: 2025-06-15 |
| 7 | +tags: |
| 8 | + - security |
| 9 | + - transparency |
| 10 | +--- |
| 11 | + |
| 12 | +A recent spam campaign against PyPI has prompted an administrative action, |
| 13 | +preventing using the `inbox.ru` email domain. |
| 14 | +This includes new registrations as well as adding as additional addresses. |
| 15 | + |
| 16 | +The campaign created over 250 new user accounts, |
| 17 | +publishing over 1,500 new projects on PyPI, |
| 18 | +leading to end-user confusion, abuse of resources, and potential security issues. |
| 19 | + |
| 20 | +All relevant projects have been removed from PyPI, and accounts have been disabled. |
| 21 | + |
| 22 | +<!-- more --> |
| 23 | + |
| 24 | +## Background |
| 25 | + |
| 26 | +Users are welcome to use any valid email address to register a new account, |
| 27 | +however this delegates some of the responsibility of account security |
| 28 | +to the email provider. |
| 29 | + |
| 30 | +PyPI uses the [`disposable-email-domains`](https://github.com/disposable-email-domains/disposable-email-domains) |
| 31 | +list to prevent new registrations using disposable email addresses, |
| 32 | +and PyPI maintains its own internal block list, |
| 33 | +updated by PyPI Admins in response to discovering abuse. |
| 34 | + |
| 35 | +See a [previous post](./2024-06-16-prohibiting-msn-emails.md) |
| 36 | +for a previous case of prohibiting a popular email domain provider. |
| 37 | + |
| 38 | +## Timeline |
| 39 | + |
| 40 | +Here's a timeline of the events I was able to put together |
| 41 | + |
| 42 | +- 2025-06-09 first user account created, verified, 2FA set up, API Token provisioned |
| 43 | +- 2025-06-11 46 more user accounts created over the course of 3 hours |
| 44 | +- 2025-06-24 207 more user accounts created over the course of 4 hours |
| 45 | +- 2025-06-29 New projects are created a file uploads start |
| 46 | + |
| 47 | +Here's a table showing how many projects were published on each date: |
| 48 | + |
| 49 | +| Date | Number of Projects | |
| 50 | +|------------|--------------------| |
| 51 | +| 2025-06-26 | 9 | |
| 52 | +| 2025-06-27 | 295 | |
| 53 | +| 2025-06-28 | 39 | |
| 54 | +| 2025-06-29 | 119 | |
| 55 | +| 2025-06-30 | 740 | |
| 56 | +| 2025-07-01 | 249 | |
| 57 | +| 2025-07-02 | 46 | |
| 58 | +| 2025-07-10 | 16 | |
| 59 | +| 2025-07-11 | 12 | |
| 60 | + |
| 61 | +Total: 1,525 |
| 62 | + |
| 63 | +## Details |
| 64 | + |
| 65 | +The projects were created with a variety of names with no code inside, |
| 66 | +so this wasn't a case of malware, but possibly using popular projects' entrypoints |
| 67 | +(often a command line execution interface), |
| 68 | +as those are not required to be the same as the **project name** on PyPI. |
| 69 | + |
| 70 | +This pattern seems to be consistent with setting up a large number of accounts, |
| 71 | +confirming access, and then executing a large-scale "attack". |
| 72 | +This may have proven to be a "dry run" for a future attack, |
| 73 | +depending on the success of this campaign. |
| 74 | + |
| 75 | +PyPI Admins were alerted to this condition initially on 2025-07-08 |
| 76 | +from a user telling us that they were working with a Large Language Model (Sonnet 4) |
| 77 | +recommending installing a project that did not exist - aka ["slopsquatting"](https://en.wikipedia.org/wiki/Slopsquatting). |
| 78 | +This is a good reminder that users should always verify the project names they are installing, |
| 79 | +and not copy & paste the name of a project suggested by a third party, |
| 80 | +such as an AI model or random person on the internet. |
| 81 | + |
| 82 | +Thanks again to users who are vigilant and report issues to us! |
| 83 | + |
| 84 | +Hopefully we can reverse this decision at some point in the future when |
| 85 | +we have more confidence in this email provider's ability to prevent abuse. |
| 86 | +If you work at this provider, please email us at [[email protected]](mailto:[email protected]) |
| 87 | +to discuss this decision. |
0 commit comments