Перехвачены 4 учётные записи в PyPI и выпущены вредоносные релизы Num2words

Раскрыта информация о жертвах фишинга, о котором на днях предупреждали администраторы репозитория Python-пакетов PyPI (Python Package Index). В результате рассылки сообщений с уведомлением о необходимости подтвердить свой email, которые ссылались на поддельный сайт pypj.org (буква “j” вместо “i”), удалось захватить учётные записи 4 сопровождающих.

В итоге злоумышленниками были сгенерированы два токена для доступа к API и опубликовано два релиза проекта num2words (0.5.15 и 0.5.16), содержащих вредоносный код. Модуль num2words, который имеет более 3 млн загрузок в месяц, предоставляет функции для преобразования чисел в текстовое представление. Вредоносные релизы num2words были удалены администраторами PyPI через час после публикации.

Для обхода защиты учётной записи при помощи двухфакторной аутентификации атакующие использовали прозрачное проксирование трафика с фишингового сайта pypj.org на реальный сайт pypi.org, из-за которого у пользователя создавалось ощущение работы с реальным каталогом PyPI. Страница входа также проксировалась и атакующие контролировали не только изначально введённый пароль входа, но и ответ на проверочный запрос второго фактора аутентификации.

Для противостояния будущим атакам через проксирование доступа администраторами PyPI реализована защита, проверяющая домен через JavaScript на стороне клиента и в случае несоответствия хэшей доменов выдающая предупреждение (атакующему ничего не мешает на уровне прокси отфильтровать подобный скрипт или заменить проверочный хэш).

Release. Ссылка here.