В связи с участившимися случаями захвата репозиториев крупных проектов и продвижения вредоносного кода через компрометацию учётных записей разработчиков, компания GitHub вводит повсеместную расширенную верификацию учётных записей. Отдельно для сопровождающих и администраторов 500 самых популярных NPM-пакетов в начале следующего года будет внедрена обязательная двухфакторная аутентификация.
С 7 декабря 2021 года по 4 января 2022 года будет произведён перевод всех мэйнтейнеров, имеющих право публикации NPM-пакетов, но не использующих двухфакторную аутентификацию, на использование расширенной верификации учётных записей. Расширенная верификация подразумевает необходимость ввода одноразового кода, отправляемого на email при попытке входа на сайт npmjs.com или выполнения аутентифицируемой операции в утилите npm.
Расширенная верификация не заменяет, а лишь дополняет ранее доступную опциональную двухфакторную аутентификацию, при которой требуется подтверждение при помощи одноразовых паролей (TOTP). При включении двухфакторной аутентификации расширенная верификация по email не применяется. Начиная с 1 февраля 2022 года начнётся процесс перевода на обязательную двухфакторную аутентификацию сопровождающих 100 самых популярных NPM-пакетов, имеющих наибольшее число зависимостей. После завершения миграции первой сотни, изменение будет распространено на 500 самых популярных по числу зависимостей NPM-пакетов.
Помимо доступной в настоящее время схемы двухфакторной аутентификации на основе приложений для генерации одноразовых паролей (Authy, Google Authenticator, FreeOTP, Authy, Google Authenticator и т.п.) в апреле 2022 года планируют добавить возможность использования аппаратных ключей и биометрических сканеров, для которых имеется поддержка протокола WebAuthn, а также возможность регистрации и управления различными дополнительными факторами аутентификации.
Напомним, что в соответствии с проведённым в 2020 году исследованием, лишь 9.27% мэйнтенеров пакетов используют для защиты доступа двухфакторную аутентификацию, а в 13.37% случаев при регистрации новых учётных записей разработчики пытались повторно использовать скомпрометированные пароли, фигурирующие в известных утечках паролей. В ходе проверки надёжности используемых паролей удалось получить доступ к 12% аккаунтов в NPM (13% пакетов) из-за использования предсказуемых и тривиальных паролей, таких как “123456”. В числе проблемных оказались 4 учётные записи пользователей из Top20 самых популярных пакетов, 13 учётных записей, пакеты которых загружали более 50 млн раз в месяц, 40 – более 10 млн загрузок в месяц и 282 с более 1 млн загрузок в месяц. С учётом загрузки модулей по цепочке зависимостей, компрометация ненадёжных учётных записей могла поразить в сумме до 52% от всех модулей в NPM.