Сбой антиспам-системы привёл к коллапсу в репозитории NPM

В репозитории NPM произошёл инцидент, напоминающий произошедшую в 2016 году историю с модулем left-pad, удаление которого привело к неработоспособности многих проектов из-за потери зависимости. На этот раз причиной проблем стала система автоматизированной борьбы со спамом, из-за которой по ошибке были удалены пользователь floatdrop и 102 разработанных им модуля.

Многие из заблокированных модулей пользовались популярностью и использовались в качестве зависимостей в других модулях и приложениях. Недоступность данных модулей привела к каскадному обрушению зависимостей и невозможности установить или обновить тысячи пакетов в NPM. Например, модуль require-from-string, содержащий всего 25 строк кода, насчитывает более 4.5 млн загрузок в месяц, а модуль timed-out (46 строк кода) более 7 млн загрузок в месяц.

Разбор причин ложного срабатывания антиспам-системы показал, что незадолго до инцидента один из спамеров разместил вредоносный модуль, в который для прикрытия скопировал файл README из легитимного пакета timed-out, принадлежащего пользователю floatdrop. Система распознала вредоносный модуль, но из-за совпадения файлов README посчитала пользователя floatdrop причастным к спаму. Отвечающий за разбор спама персонал халатно отнёсся к своим обязанностям и не разобравшись в сути предупреждения от антиспам-системы подтвердил блокировку учётной записи floatdrop и удалил все его модули из репозитория.

Проблема сразу дала о себе знать и персонал оперативно приступил к устранению неполадок. В течение трёх часов удалось полностью восстановить состояние репозитория. Примечательно, что быстрому восстановлению помешало то, что некоторые предприимчивые пользователи сразу зарегистрировали новые модули с теми же именами, что и удалённые (всего было размещено 11 дубликатов). Появление данных модулей потребовало дополнительного разбора и создало предпосылки для подозрений в попытках распространения вредоносного кода.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.