Сбой антиспам-системы привёл к коллапсу в репозитории NPM
12 января 2018 года
В репозитории 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-часовая задержка републикации удалённых пакетов (для защиты от незаметного размещения вредоносных пакетов вместо удалённых), выработаны новые рекомендации и правила по реагированию на проблемы, улучшен инструментарий для борьбы со спамом и добавлены средства для оперативного восстановления ошибочно удалённых пакетов.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.