Jump to content

инцидент с левой панелью 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 во время его удаления npm

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 ]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с д и ж г час я дж к л м н Коллинз, Кейт (27 марта 2016 г.). «Как один программист сломал Интернет, удалив крошечный фрагмент кода» . Кварц . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  2. ^ Перейти обратно: а б с д и Вайнбергер, Мэтт (23 марта 2016 г.). «Один программист чуть не сломал Интернет, удалив 11 строк кода » Бизнес-инсайдер . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  3. ^ Перейти обратно: а б с д и ж г Фельдман, Брайан (24 марта 2016 г.). «Один человек удалил 11 строк кода из Интернета и сломал сотни приложений» . Интеллигент . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  4. ^ Клэберн, Томас (22 апреля 2019 г.). «НПМ не отличается особым великодушием? Сотрудники уволены после попытки объединиться в профсоюз – жалобы» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  5. ^ Перейти обратно: а б с Уильямс, Крис (23 марта 2016 г.). «Как один разработчик только что сломал Node, Babel и тысячи проектов в 11 строках JavaScript» . Регистр . Архивировано из оригинала 16 октября 2023 года . Проверено 11 мая 2024 г.
  6. ^ Перейти обратно: а б Шарма, Акс (27 июля 2022 г.). «Протестное ПО набирает обороты: почему разработчики саботируют собственный код» . ТехКранч . Архивировано из оригинала 29 февраля 2024 года . Проверено 11 мая 2024 г.
  7. ^ Перейти обратно: а б с д Мазаика, Кен (24 марта 2016 г.). «Как 17 строк кода уничтожили самые горячие стартапы Кремниевой долины» . ХаффПост . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  8. ^ Перейти обратно: а б с д и Миллер, Пол (24 марта 2016 г.). «Как разгневанный разработчик ненадолго сломал JavaScript» . Грань . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  9. ^ Перейти обратно: а б с д Галлахер, Шон (25 марта 2016 г.). «Rage-quit: Coder не опубликовал 17 строк JavaScript и «сломал Интернет» » . Арс Техника . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  10. ^ Тунг, Лиам (23 марта 2016 г.). «Недовольный разработчик ломает тысячи приложений JavaScript и Node.js» . ЗДНЕТ . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  11. ^ Перейти обратно: а б Уильямс, Крис (29 марта 2016 г.). « Никаких сожалений» говорит парень, который свалил башню JavaScript Jenga, а разработчики спрашивают: мы разучились программировать?» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  12. ^ Клэберн, Томас (3 февраля 2022 г.). «Зараженные вредоносным ПО пакеты npm встречаются чаще, чем вы думаете» . Регистр . Архивировано из оригинала 11 мая 2024 года . Проверено 11 мая 2024 г.
  13. ^ "кик на НПМ" . 7 июля 2024 г.
  14. ^ "@kikinteractive/kik на NPM " 7 июля,
  15. ^ "String.prototype.pad{Начало,Конец} (JHD)" . Гитхаб . 25 мая 2016 года . Проверено 10 июля 2024 г.
  16. ^ «String.prototype.padStart()» . Веб-документы MDN . 9 августа 2023 г. . Проверено 10 июля 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 458ccb7e2769f0bf8a943f4c3712fe31__1723121940
URL1:https://arc.ask3.ru/arc/aa/45/31/458ccb7e2769f0bf8a943f4c3712fe31.html
Заголовок, (Title) документа по адресу, URL1:
npm left-pad incident - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)