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