Некоторые разработчики портят программное обеспечение с открытым исходным кодом
Из этических соображений, желания получить больше денег и простого неприятия горстка разработчиков губит открытый исходный код для всех.
Одна из самых удивительных особенностей открытого исходного кода не в том, что он производит великолепное программное обеспечение. Дело в том, что многие разработчики отбрасывают свое эго, чтобы создавать отличные программы с помощью других. Однако теперь горстка программистов ставит свои собственные интересы выше блага многих и потенциально вредит программному обеспечению с открытым исходным кодом для всех.
Например, специалист по сопровождению менеджера пакетов JavaScript RIAEvangelist Брэндон Нозаки Миллер написал и опубликовал пакет исходного кода npm с открытым кодом под названием Peacenotwar. Это мало что сделало, кроме как напечатать послание к миру на настольных компьютерах. Пока что так безобидно.
Затем Миллер вставил в пакет вредоносный код, который перезаписывал файловые системы пользователей, если их компьютер имел IP-адрес в России или Беларуси. Затем он добавил его в качестве зависимости к своей популярной программе node-ipc и мгновенный хаос! Многочисленные серверы и компьютеры вышли из строя при обновлении кода до новейшей версии, а затем в их системах были стерты диски.
Защита Миллера: «Это все общедоступно, задокументировано, лицензировано и имеет открытый исходный код» не выдерживает критики.
Лиран Тал, исследователь Snyk, который обнаружил проблему, сказал: «Даже если преднамеренное и опасное действие [будет] воспринято некоторыми как законный акт протеста, как это отразится на будущей репутации сопровождающего и его заинтересованности в сообществе разработчиков? этому мейнтейнеру когда-нибудь снова можно будет доверять, чтобы он не стал предпринимать в будущем такие или даже более агрессивные действия для любых проектов, в которых они участвуют?»
Миллер не случайный чудак. Он написал много хорошего кода, такого как node-ipc и Node HTTP Server. Но можете ли вы быть уверены, что какой-либо из его кодов не является вредоносным? Хотя он описывает это как «не вредоносное ПО, а полностью документированное протестное ПО», другие с этим категорически не согласны.
Как написал один программист GitHub: «Что произойдет с этим, так это то, что команды безопасности в западных корпорациях, которые не имеют абсолютно никакого отношения к России или политике, начнут рассматривать бесплатное программное обеспечение с открытым исходным кодом как средство для атак на цепочку поставок (которые это действительно так) и просто начать запрещать бесплатное программное обеспечение с открытым исходным кодом — все бесплатное программное обеспечение с открытым исходным кодом — в своих компаниях».
Как написал другой разработчик GitHub под ником nm17: «Фактор доверия к открытому исходному коду, который основывался на доброй воле разработчиков, сейчас практически исчез, и теперь все больше и больше людей понимают, что однажды их библиотека/приложение может быть использован, чтобы сделать/сказать то, что какой-то случайный разработчик в Интернете счел «правильным поступком».
Оба приводят веские аргументы. Если вы не можете использовать исходный код, если не согласны с политической позицией его создателя, как вы можете использовать его с уверенностью?
Возможно, сердце Миллера на правильном месте – Слава Украина! -- Но является ли программное обеспечение с открытым исходным кодом, зараженное вредоносной нагрузкой, правильным способом защиты от вторжения России в Украину? Нет, это не так.
Метод открытого исходного кода работает только потому, что мы доверяем друг другу. Когда это доверие нарушено, неважно по какой причине, нарушается фундаментальная основа открытого исходного кода. Как сказал Грег Кроа-Хартман, специалист по сопровождению стабильной ветки ядра Linux, когда студенты из Университета Миннесоты намеренно попытались вставить плохой код в ядро Linux для эксперимента в 2021 году, сказали: «То, что они делают, — это преднамеренное злонамеренное поведение и неприемлемо и совершенно неэтично».
Люди уже давно утверждают, что открытый исходный код должен также включать в себя этические положения. Например, Генеральная общественная лицензия на исключения (eGPL) 2009 года, пересмотренная версия GPLv2, пыталась запретить «исключениям», таким как военные пользователи и поставщики, использовать ее код. Это не удалось. Другие лицензии, такие как лицензия JSON с ее мило наивным пунктом «программное обеспечение должно использоваться во благо, а не во зло», все еще существуют, но никто не обеспечивает его соблюдение.
Совсем недавно активистка и разработчик программного обеспечения Коралин Ада Эмке представила лицензию с открытым исходным кодом, которая требует от пользователей действовать морально. В частности, ее лицензия Гиппократа добавила к лицензии открытого исходного кода MIT пункт, гласящий:
«Программное обеспечение не может использоваться отдельными лицами, корпорациями, правительствами или другими группами для систем или деятельности, которые активно и сознательно ставят под угрозу, причиняют вред или иным образом угрожают физическому, психическому, экономическому или общему благополучию обездоленных людей или групп в нарушение Всеобщей декларации прав человека ООН».
Звучит хорошо, но это не открытый исходный код. Видите ли, открытый исходный код сам по себе является этической позицией. Его этика содержится в «Четырех основных свободах» Фонда свободного программного обеспечения (FSF). Это основа всех лицензий с открытым исходным кодом и их основная философия. Как сказал тогда эксперт по правовым вопросам открытого исходного кода и профессор права Колумбийского университета Эбен Моглен, этические лицензии не могут быть лицензиями на свободное программное обеспечение или лицензии с открытым исходным кодом:
«Нулевая свобода, право запускать программу для любых целей, стоит на первом месте среди четырех свобод, потому что, если пользователи не имеют этого права в отношении компьютерных программ, которые они запускают, они в конечном итоге вообще не имеют никаких прав на эти программы. давать разрешение только на хорошие виды использования или запрещать плохие в глазах лицензиара, нарушают требование защиты нулевой свободы».
Другими словами, если вы по какой-либо причине не можете поделиться своим кодом, ваш код не является действительно открытым исходным кодом.
Еще один, более прагматичный аргумент в пользу запрета одной группе использовать программное обеспечение с открытым исходным кодом заключается в том, что блокировка чего-либо, например IP-адреса, является очень широким кругом действий. Флориан Рот, руководитель отдела исследований охранной компании Nextron Systems, который рассматривал возможность «отключить мои бесплатные инструменты в системах с определенными настройками языка и часового пояса», в конце концов решил не делать этого. Почему? Потому что, поступая так, «мы также отключим инструменты систем критиков и вольнодумцев, осуждающих действия своих правительств».
К сожалению, не только люди, пытающиеся использовать открытый исходный код для достижения более высоких этических целей, создают проблемы для программного обеспечения с открытым исходным кодом.
Ранее в этом году разработчик JavaScript Марак Сквайрс намеренно саботировал свои малоизвестные, но жизненно важные библиотеки Javascript с открытым исходным кодом «colors.js» и «faker.js». Результат: десятки тысяч программ JavaScript взорвались.
Почему? Это до сих пор не совсем ясно, но в недавно удаленном посте на GitHub Сквайрс написал: «Со всем уважением, я больше не собираюсь поддерживать Fortune 500 (и другие компании меньшего размера) своей бесплатной работой. Воспринимайте это как возможность прислать мне шестизначный годовой контракт или разделить проект и поручить над ним работу кому-то другому». Как вы можете себе представить, эта попытка шантажом добиться зарплаты у него закончилась не очень хорошо.
А есть люди, которые намеренно помещают вредоносное ПО в свой открытый исходный код ради развлечения и выгоды. Например, компания JFrog, занимающаяся безопасностью DevOps, обнаружила в репозитории NPM 17 новых вредоносных пакетов JavaScript, которые намеренно атакуют и крадут токены Discord пользователя. Затем их можно будет использовать на платформе коммуникации и цифрового распространения Discord.
Помимо создания новых вредоносных программ с открытым исходным кодом, которые выглядят невинными и полезными, другие злоумышленники берут старое, заброшенное программное обеспечение и переписывают его, включив в него бэкдоры для кражи криптовалют. Одной из таких программ была event-stream. В него был вставлен вредоносный код для кражи биткойн-кошельков и перевода их балансов на сервер в Куала-Лумпуре. За прошедшие годы было несколько подобных эпизодов.
С каждым таким шагом вера в программное обеспечение с открытым исходным кодом ослабевает. Поскольку открытый исходный код абсолютно необходим для современного мира, это паршивая тенденция.
Что мы можем с этим поделать? Ну, во-первых, нам следует очень тщательно подумать, когда нам следует блокировать использование открытого исходного кода, если вообще когда-либо.
С практической точки зрения мы должны начать использовать систему обмена данными программных пакетов Linux Foundation (SPDX) и спецификацию программного обеспечения (SBOM). Вместе они расскажут нам, какой именно код мы используем в наших программах и откуда он берется. Тогда у нас будет гораздо больше возможностей принимать обоснованные решения.
Сегодня люди часто используют открытый исходный код, не зная точно, что они используют, и не проверяя его на наличие проблем. Они полагают, что с этим все в порядке. Это никогда не было разумным предположением. Сегодня это просто глупо.
Даже несмотря на все эти недавние изменения, открытый исходный код по-прежнему лучше и безопаснее, чем альтернативы проприетарному программному обеспечению «черного ящика». Но мы должны проверять и проверять код, а не слепо доверять ему. Это единственный разумный поступок, который можно сделать в будущем.