stringtranslate.com

инцидент с левой панелью npm

22 марта 2016 года инженер-программист Азер Кочулу удалил left-padпакет, который он опубликовал в npm ( менеджер пакетов JavaScript ). Кочулу удалил пакет после спора с Kik Messenger , в котором компания принудительно взяла под контроль имя пакета . В результате тысячи программных проектов, которые использовались в качестве зависимости , включая транскомпилятор Babel и веб-фреймворк React , не могли быть собраны или установлены. Это вызвало широкомасштабные сбои, поскольку технологические корпорации малого и большого размера, включая Meta Platforms , PayPal , Netflix и Spotify , использовали в своих программных продуктах. kikleft-pad left-pad

Через несколько часов после удаления пакета из npm компания, стоящая за платформой, npm, Inc , вручную восстановила пакет. Позже npm отключил возможность удаления пакета, если с даты его публикации прошло более 24 часов и от него зависит по крайней мере один другой проект. Инцидент привлек широкое внимание СМИ и вызвал реакцию людей в индустрии программного обеспечения . Удаление left-padвызвало дискуссию о преднамеренном самосаботаже программного обеспечения для содействия социальной справедливости и привлекло внимание к повышенной вероятности атак на цепочку поставок в модульном программировании .

Фон

Содержимое left-padна момент его удаления npm

left-padбыл бесплатным и открытым исходным кодом JavaScript- пакета, опубликованного Азером Кочулу, независимым инженером-программистом из Окленда, Калифорния. [1] Пакет многократно добавляет символы в начало строки с помощью цикла . [1] left-pad был охарактеризован как чрезвычайно простой, состоящий всего из 11 строк кода (без учета пустых строк) в окончательной версии, созданной Кочулу. [2] [3]

Koçulu опубликовал 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, Кочулу также владел kiknpm, инструментом, который позволял разработчикам настраивать шаблоны для своих проектов. [1] 11 марта 2016 года Kik Interactive, канадская компания, владеющая платформой обмена мгновенными сообщениями Kik Messenger , связалась с Кочулу, попросив его отказаться от контроля над kikпакетом из-за права собственности компании на торговую марку «Kik» . [9] Часть переписки включала следующее сообщение от Kik:

Мы не хотим быть придурками по поводу [ kikпакета], но это зарегистрированная торговая марка в большинстве стран мира, и если вы действительно выпустите проект с открытым исходным кодом под названием kik, наши юристы по товарным знакам будут ломиться в вашу дверь и закрывать ваши аккаунты и тому подобное — и у нас не будет выбора, кроме как сделать все это, потому что вам нужно защищать товарные знаки, иначе вы их потеряете. Разве мы не можем прийти к какому-то компромиссу, чтобы заставить вас изменить название, не привлекая юристов? Есть ли что-то, что мы могли бы сделать для вас в качестве компенсации, чтобы заставить вас изменить название? [3]

Вскоре после этого Кочулу ответил, отказавшись менять название своего проекта, заявив:

Ха-ха, ты на самом деле ведешь себя как придурок. Так что иди на хуй. Не пиши мне в ответ. [3]

Кочулу также запросил 30 000 долларов США в качестве компенсации «за хлопоты, связанные с отказом от моего любимого проекта ради [ sic ] кучки корпоративных придурков». [1] 18 марта 2016 года Айзек З. Шлютер, генеральный директор npm, Inc., написал Kik Interactive и Кочулу, заявив, что право собственности на 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]

Последствия

Немедленный эффект

Через час после удаления пакетов Кочулу опубликовал пост на Medium («Я только что освободил свои модули»), объяснив, что он отменил публикацию своих программных проектов из npm в знак протеста против корпоративных интересов в отношении свободного и открытого программного обеспечения. [1]

Вскоре после удаления другие разработчики программного обеспечения начали публиковать поток жалоб, реакций и обходных путей в системе отслеживания проблем Git проекта . [7] [1]

Поддерживающие проекты с открытым исходным кодом, включая Babel, выпустили исправления для удаления зависимостей, которые Кочулу не опубликовал. [7] Несколько других названий пакетов Кочулу были быстро заняты вновь опубликованными пакетами. [3] Например, другой разработчик воссоздал left-padпакет, но выпустил его как версию 1.0.0. С тех пор как Кочулу опубликовал свой как версию 0.0.3, пользователи продолжали сталкиваться с проблемами. [3]

Примерно через два часа после удаления исходного left-padпакета npm вручную «отменил публикацию» исходной версии 0.0.3, восстановив резервную копию. [1] Лори Восс, главный технический директор 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 принудительно передать пакет Koçulu компании Kik Interactive из-за юридической угрозы. [1]

Влияние

Инцидент показал, как нарушение пакета npm может привести к атаке на цепочку поставок . В дополнение к широко разрекламированному left-padинциденту, несколько лиц немедленно похитили другие пакеты Koçulu с неизвестным кодом после их удаления. [7] npm выпустил новую политику для предотвращения злонамеренных поглощений в подобных спорах, [3] но left-padинцидент по-прежнему приводится в качестве примера чрезмерной зависимости от внешних участников, что приводит к увеличению поверхности атаки на программные продукты. [12] Намеренный самосаботаж Koçulu с целью left-padпривлечения внимания к социальной проблеме также был описан как предшественник случаев публикации протестного ПО на таких платформах, как npm. [6]

Смотрите также

Ссылки

  1. ^ abcdefghijklmn Коллинз, Кит (27 марта 2016 г.). «Как один программист сломал интернет, удалив крошечный фрагмент кода». Quartz . Архивировано из оригинала 11 мая 2024 г. . Получено 11 мая 2024 г. .
  2. ^ abcde Weinberger, Matt (23 марта 2016 г.). «Один программист почти сломал интернет, удалив 11 строк кода». Business Insider . Архивировано из оригинала 11 мая 2024 г. . Получено 11 мая 2024 г. .
  3. ^ abcdefg Фельдман, Брайан (24 марта 2016 г.). «Один человек удалил 11 строк кода из Интернета и сломал сотни приложений». Intelligencer . Архивировано из оригинала 11 мая 2024 г. Получено 11 мая 2024 г.
  4. ^ Claburn, Thomas (22 апреля 2019 г.). «NPM не особенно великодушен? Сотрудники уволены после попытки объединиться в профсоюз – жалобы». The Register . Архивировано из оригинала 11 мая 2024 г. Получено 11 мая 2024 г.
  5. ^ abc Williams, Chris (23 марта 2016 г.). «Как один разработчик просто сломал Node, Babel и тысячи проектов в 11 строках JavaScript». The Register . Архивировано из оригинала 16 октября 2023 г. . Получено 11 мая 2024 г. .
  6. ^ ab Sharma, Ax (27 июля 2022 г.). «Протестное ПО на подъеме: почему разработчики саботируют свой собственный код». TechCrunch . Архивировано из оригинала 29 февраля 2024 г. Получено 11 мая 2024 г.
  7. ^ abcd Mazaika, Ken (24 марта 2016 г.). «Как 17 строк кода уничтожили самые горячие стартапы Кремниевой долины». HuffPost . Архивировано из оригинала 11 мая 2024 г. Получено 11 мая 2024 г.
  8. ^ abcde Миллер, Пол (24 марта 2016 г.). «Как разгневанный разработчик на короткое время сломал JavaScript». The Verge . Архивировано из оригинала 11 мая 2024 г. Получено 11 мая 2024 г.
  9. ^ abcd Галлахер, Шон (25 марта 2016 г.). «Rage-quit: Coder unpublished 17 lines of JavaScript and „broke the Internet“». Ars Technica . Архивировано из оригинала 11 мая 2024 г. . Получено 11 мая 2024 г. .
  10. ^ Tung, Liam (23 марта 2016 г.). «Недовольный разработчик ломает тысячи приложений JavaScript и Node.js». ZDNET . Архивировано из оригинала 11 мая 2024 г. Получено 11 мая 2024 г.
  11. ^ ab Williams, Chris (29 марта 2016 г.). «„Никаких сожалений“, — говорит парень, который срубил башню Jenga JavaScript, — поскольку разработчики спрашивают: мы забыли, как кодировать?». The Register . Архивировано из оригинала 11 мая 2024 г. . Получено 11 мая 2024 г. .
  12. ^ Claburn, Thomas (3 февраля 2022 г.). «Пакеты npm, зараженные вредоносным ПО, встречаются чаще, чем вы можете опасаться». The Register . Архивировано из оригинала 11 мая 2024 г. . Получено 11 мая 2024 г. .