Администраторы репозитория Python-пакетов PyPI (Python Package Index) сообщили об инциденте, в результате которого злоумышленник смог захватить контроль над проектами arrapi, tmdbapis, nagerapi и pmmutils, насчитывающими около 4.5 тысяч загрузок в месяц. Все проекты сопровождались одним автором (meisnate12, Nathan Taggart) и были захвачены в результате компрометации его учётной записи. Злоумышленник, получивший контроль над проектами, был оперативно заблокирован и не успел внести изменения и выпустить модифицированные выпуски.
Захват произведён через замену владельца проектов. Атакующий создал учётную запись “dvolk”, затем от имени основного сопровождающего “meisnate12” сформировано приглашение для включения пользователя “dvolk” в число сопровождающих, после принятия которого и получения управляющего доступа к проекту злоумышленник удалил из проекта изначального автора и остался одним сопровождающим. После завершения подобных манипуляций для всех проектов был инициирован процесс удаления учётной записи “meisnate12”.
Спустя 5 часов после захвата проектов администраторы PyPI получили сообщение от изначального автора проектов о случившимся, заблокировали учётную запись злоумышленника и восстановили права на владение проектами. В качестве причины инцидента названа ненадлежащая защита учётной записи и отсутствие применения двухфакторной аутентификации, что позволило атакующему определить параметры входа под пользователем “meisnate12” и выполнить действия от его имени.
До конца этого года репозиторий PyPI намерен перевести все учётные записи пользователей, сопровождающих хотя бы один проект или входящих в курирующие пакеты организации, на обязательное применение двухфакторной аутентификации. Применение двухфакторной аутентификации позволит усилить защиту процесса разработки и обезопасить проекты от внесения вредоносных изменений в результате утечки учётных данных, использования того же пароля на скомпрометированных сайтах, взломов локальной системы разработчика или применения методов социального инжиниринга.
В качестве предпочтительных методов двухфакторной аутентификации рекомендуется использовать протокол WebAuthn с FIDO U2F токенами или приложения для аутентификации на базе одноразовых паролей, поддерживающих протокол TOTP, например, Authy, Google Authenticator и FreeOTP. При загрузке пакетов разработчикам дополнительно рекомендовано перейти на использование метода аутентификации ‘Trusted Publishers’ на базе стандарта OpenID Connect (OIDC) или применять API-токены.