Атака на
axios сработала потому, что злоумышленник получил долгоживущий классический токен npm от аккаунта мейнтейнера. Если бы была включена 2FA, одного токена не хватило бы для публикации новой версии пакета.Как включить 2FA
Для личного аккаунта:
npm profile enable-2fa auth-and-writes
Режим
auth-and-writes требует второй фактор и при входе, и при публикации. Это сильнее, чем auth-only, который защищает только вход, но не публикацию.Для организации нужны права администратора:
npm access 2fa-required --otp=ВАШ_КОД your-org
Либо через интерфейс: Organisation Settings > Security > Require two-factor authentication.
Что ещё стоит сделать
Классические токены npm живут вечно и дают широкий доступ. В 2022 году появились гранулярные токены. Они ограничены конкретными пакетами и позволяют задать режим
read-only или publish-only. Переходите на них.Классические токены, которые существуют больше 90 дней, стоит проверить и пересоздать. Найти их можно в Account Settings > Access Tokens.
Если разработчик ушёл из команды, то сразу отзывайте его доступ к публикации. npm не делает это автоматически, права сохраняются бессрочно.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt