инцидент с левой панелью npm
22 марта 2016 года инженер-программист Азер Кочулу снял left-pad
пакет, который он опубликовал в npm ( JavaScript менеджер пакетов ). Кочулу удалил пакет после спора с Kik Messenger , в котором компания принудительно взяла под свой контроль название пакета. kik
. В результате тысячи программных проектов, в которых использовались left-pad
в качестве зависимости , включая Babel транскомпилятор и React веб-фреймворк , не удалось собрать или установить.
Технологические корпорации, включая Meta Platforms , PayPal , Netflix и Spotify, потенциально пострадали после удаления left-pad
поскольку их программные продукты в той или иной форме использовали этот пакет. Через несколько часов после удаления пакета из npm компания, стоящая за платформой, npm, Inc , вручную восстановила пакет из-за широкомасштабного сбоя, вызванного инцидентом.
После сбоя npm отключил удаление пакета, если с даты его публикации прошло более 24 часов и от него зависит хотя бы еще один проект. Инцидент также привлек широкое внимание средств массовой информации и реакцию со стороны представителей индустрии программного обеспечения . Удаление left-pad
вызвало дискуссию о преднамеренном самовредительстве программного обеспечения в целях содействия социальной справедливости и привлекло внимание к повышенной вероятности атак на цепочку поставок при модульном программировании .
Фон
[ редактировать ]left-pad
— это с открытым исходным кодом, JavaScript бесплатный пакет опубликованный Азером Кочулу, независимым инженером-программистом из Окленда, Калифорния. [ 1 ] Пакет периодически добавляет символы в строку с помощью цикла . [ 1 ] left-pad
в окончательной версии, автором которой является Кочулу , охарактеризован как чрезвычайно простой, состоящий всего из 11 строк кода (без учета пустых строк). [ 2 ] [ 3 ]
Кочулу опубликовал left-pad
в npm , менеджере пакетов по умолчанию для Node.js JavaScript , среды выполнения . [ 4 ] [ 2 ] Несмотря на свою относительную неясность, left-pad
активно использовался; пакет использовался в качестве зависимости тысячами других программных проектов, и до его удаления его загрузили более 15 миллионов раз. [ 5 ] [ 6 ] Некоторые из проектов, которые требовали left-pad
для функционирования были критически важны для экосистемы JavaScript в то время. Сюда входили Babel , транскомпилятор , обеспечивающий обратную совместимость кода JavaScript, Webpack , система объединения модулей, а также React и React Native , которые являются платформами, широко используемыми для разработки веб-сайтов и мобильных приложений соответственно. [ 7 ] [ 8 ] [ 1 ]
В дополнение к left-pad
Кочулу также владел kik
на npm — инструменте, позволяющем разработчикам настраивать шаблоны для своих проектов. [ 1 ] 11 марта 2016 года Kik Interactive, канадская компания, владеющая обмена мгновенными сообщениями платформой Kik Messenger , связалась с Кочулу и попросила его отказаться от контроля над kik
упаковки в связи с владением компанией торговой марки «Кик» . [ 9 ] Часть переписки включала следующее сообщение от Кика:
Мы не хотим быть придурками по поводу [
kik
package], но это зарегистрированная торговая марка в большинстве стран мира, и если вы действительно выпустите проект с открытым исходным кодом под названием kik, наши юристы по товарным знакам будут стучать в вашу дверь, блокировать ваши учетные записи и тому подобное — и мы У меня не будет другого выбора, кроме как сделать все это, потому что вам придется обеспечить соблюдение прав на товарные знаки, иначе вы их потеряете. Нельзя ли прийти к какому-то компромиссу, чтобы заставить вас сменить имя без привлечения юристов? Можем ли мы что-то сделать для вас в качестве компенсации, чтобы заставить вас сменить имя? [ 3 ]
Кочулу ответил вскоре после этого, отказавшись менять название своего проекта, сказав:
хахаха, ты вообще придурок. так что иди на хуй. не отвечайте мне по электронной почте. [ 3 ]
Кочулу также запросил 30 000 долларов США в качестве компенсации «за хлопоты, связанные с отказом от моего любимого проекта ради [ sic ] кучки корпоративных придурков». [ 1 ] 18 марта 2016 г. Исаак З. Шлютер, генеральный директор npm, Inc., написал Kik Interactive и Koçulu, заявив, что право собственности на kik
пакет будет вручную перенесен в Kik Interactive. [ 1 ]
Удаление
[ редактировать ]Выразив разочарование решением npm, Inc. и заявив, что он больше не желает быть частью платформы, Шлютер предоставил Кочулу команду удалить все 273 модуля, которые он зарегистрировал. [ 9 ] Кочулу выполнил команду 22 марта 2016 года, удалив все выпущенные им ранее пакеты. [ 1 ] left-pad
был одним из пакетов, которые были «неопубликованы», что сделало его недоступным для публичного доступа на npm. [ 5 ] left-pad
Программный проект и его содержимое остались доступными на GitHub . [ 9 ]
Пользователи, пытающиеся создать или установить любой проект JavaScript, в котором использовался left-pad
поскольку зависимость (включая такие зависимости, как Babel или Webpack) получила ошибку 404 , которая привела к сбою процесса. [ 1 ] несколько известных корпораций, занимающихся разработкой программного обеспечения, включая Meta Platforms , PayPal , Netflix и Spotify , поскольку их продукты зависели от этого пакета. Инцидент потенциально затронул [ 8 ] По иронии судьбы, удаление пакета также затронуло разработчиков Kik Interactive и они столкнулись с проблемами сборки. [ 1 ]
Последствия
[ редактировать ]Немедленные эффекты
[ редактировать ]проекта был немедленно опубликован поток жалоб, реакций и обходных решений от других разработчиков программного обеспечения . Git в систему отслеживания проблем В ответ на удаление пакета из npm [ 7 ] [ 1 ] Сопровождающие проекты с открытым исходным кодом, включая Babel, также выпустили исправления для удаления зависимостей, которые Кочулу не опубликовал. [ 7 ] Некоторые другие названия пакетов Кочулу были быстро заменены недавно опубликованными пакетами. [ 3 ] Через час после удаления пакетов Кочулу опубликовал на Medium пост под названием «Я только что освободил свои модули», в котором объяснил, что отменил публикацию всех своих программных проектов из npm в качестве формы протеста против корпоративных интересов в свободном и открытом доступе. -исходное программное обеспечение. [ 1 ]
Чтобы решить проблемы с программным обеспечением, другой разработчик воссоздал left-pad
упаковка. Однако, поскольку разработчик выпустил свой пакет с версией 1.0.0, а Кочулу опубликовал свою версию 0.0.3, пользователи продолжали сталкиваться с проблемами. [ 3 ] Примерно через два часа после оригинала left-pad
пакет был удален, npm вручную «отменил публикацию» исходной версии 0.0.3, восстановив резервную копию, что эффективно устранило сбой. [ 1 ] Что касается восстановления left-pad
В пакете Лори Восс, технический директор npm, написала, что компания «выбрала потребности многих», несмотря на внутренние разногласия по поводу того, было ли это действие «правильным решением». [ 10 ]
Реакции
[ редактировать ]Чтобы еще больше предотвратить возникновение подобной проблемы, npm также опубликовал новую политику удаления опубликованных пакетов, чтобы предотвратить удаление, если с даты выпуска прошло более 24 часов и по крайней мере еще один проект требует его в качестве зависимости. [ 11 ] От имени npm менеджер сообщества Эшли Уильямс извинилась за сбои, вызванные инцидентом, заявив, что платформа «[не смогла] защитить сообщество». [ 11 ] Kik Interactive также извинилась за инцидент: руководитель службы обмена сообщениями компании Майк Робертс опубликовал цепочку электронных писем с Кочулу на Medium и охарактеризовал свое общение как «вежливую просьбу». [ 8 ] Робертс написал, что изначально они обратились к Кочулу, потому что хотели опубликовать на npm пакет с открытым исходным кодом под именем, которое использовал Кочулу. [ 5 ] Кочулу заявил, что ему жаль, что он помешал работе других, но он считает, что сделал это «на благо общества в [ sic ] долгосрочной перспективе». [ 2 ]
Инцидент вызвал разную реакцию со стороны пользователей Twitter , GitHub , Reddit и Hacker News , причем многие утверждали, что он ненадолго «сломал Интернет». [ 2 ] [ 8 ] [ 9 ] [ 1 ] Многие отмечали культуру разработки JavaScript « двигайся быстро и ломай вещи », непредсказуемую природу программного обеспечения с открытым исходным кодом и чрезмерную зависимость от модульного программирования . [ 2 ] [ 8 ] [ 3 ] Пользователи также выразили разочарование по поводу решения npm принудительно передать пакет Кочулу Kik Interactive из-за юридической угрозы. [ 1 ]
Влияние
[ редактировать ] что нарушение работы пакета npm может привести к атаке на цепочку поставок Этот инцидент также подчеркнул, . Помимо широко разрекламированного left-pad
В результате инцидента несколько человек сразу же похитили другие пакеты Кочулу с неизвестным кодом после того, как они были удалены. [ 7 ] npm опубликовал новую политику по предотвращению злонамеренных поглощений в подобных спорах. [ 3 ] но left-pad
Этот инцидент до сих пор приводится в качестве примера чрезмерной зависимости от внешних участников, что приводит к увеличению поверхности атаки на программные продукты. [ 12 ] Умышленный самосаботаж Кочулу left-pad
Чтобы привлечь внимание к социальной проблеме, это также считается предвестником случаев протестного ПО на таких платформах, как npm. публикации [ 6 ]
Кик-пакет
[ редактировать ]Несмотря на попытки сохранить имя kik
, этот пакет вскоре был заброшен и теперь пустует. Организация kik на NPM также опубликовала пакет с пространством имен. @kikinteractive/kik
; однако с 2017 года он не получал никаких обновлений, а по состоянию на 2024 год загрузок очень мало. [ 13 ] [ 14 ]
Дополнение к стандартной библиотеке
[ редактировать ]Во время заседания TC39 25 мая 2016 г. все присутствующие члены проголосовали «за» за предложение навсегда добавить функцию, предоставляемую пакетом, в спецификацию JavaScript как String.prototype.padStart()
. [ 15 ] Первым браузером, поддерживающим эту функцию, стал Firefox 48, выпущенный 2 августа того же года. [ 16 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и ж г час я дж к л м н Коллинз, Кейт (27 марта 2016 г.). «Как один программист сломал Интернет, удалив крошечный фрагмент кода» . Кварц . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с д и Вайнбергер, Мэтт (23 марта 2016 г.). «Один программист чуть не сломал Интернет, удалив 11 строк кода » Бизнес-инсайдер . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с д и ж г Фельдман, Брайан (24 марта 2016 г.). «Один человек удалил 11 строк кода из Интернета и сломал сотни приложений» . Интеллигент . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Клэберн, Томас (22 апреля 2019 г.). «НПМ не отличается особым великодушием? Сотрудники уволены после попытки объединиться в профсоюз – жалобы» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с Уильямс, Крис (23 марта 2016 г.). «Как один разработчик только что сломал Node, Babel и тысячи проектов в 11 строках JavaScript» . Регистр . Архивировано из оригинала 16 октября 2023 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б Шарма, Акс (27 июля 2022 г.). «Протестное ПО набирает обороты: почему разработчики саботируют собственный код» . ТехКранч . Архивировано из оригинала 29 февраля 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с д Мазаика, Кен (24 марта 2016 г.). «Как 17 строк кода уничтожили самые горячие стартапы Кремниевой долины» . ХаффПост . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с д и Миллер, Пол (24 марта 2016 г.). «Как разгневанный разработчик ненадолго сломал JavaScript» . Грань . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б с д Галлахер, Шон (25 марта 2016 г.). «Rage-quit: Coder не опубликовал 17 строк JavaScript и «сломал Интернет» » . Арс Техника . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Тунг, Лиам (23 марта 2016 г.). «Недовольный разработчик ломает тысячи приложений JavaScript и Node.js» . ЗДНЕТ . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Перейти обратно: а б Уильямс, Крис (29 марта 2016 г.). « Никаких сожалений» говорит парень, который свалил башню JavaScript Jenga, а разработчики спрашивают: мы разучились программировать?» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ Клэберн, Томас (3 февраля 2022 г.). «Зараженные вредоносным ПО пакеты npm встречаются чаще, чем вы думаете» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
- ^ "кик на НПМ" . 7 июля 2024 г.
- ^ "@kikinteractive/kik на NPM " 7 июля,
- ^ "String.prototype.pad{Начало,Конец} (JHD)" . Гитхаб . 25 мая 2016 года . Проверено 10 июля 2024 г.
- ^ «String.prototype.padStart()» . Веб-документы MDN . 9 августа 2023 г. . Проверено 10 июля 2024 г.