Некоторые разработчики портят программное обеспечение с открытым исходным кодом

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

Getty Images

Одна из самых удивительных вещей в открытом исходном коде заключается не в том, что он производит отличное программное обеспечение. Дело в том, что многие разработчики отбрасывают свое эго, чтобы создавать отличные программы с помощью других. Однако теперь горстка программистов ставит свои собственные интересы выше блага многих и потенциально разрушает программное обеспечение с открытым исходным кодом для всех.

Например, Брэндон Нодзаки Миллер, сопровождающий менеджер пакетов JavaScript, RIAEvangelist, написал и опубликовал пакет исходного кода npm с открытым кодом под названием Peacenotwar. Он мало что делал, кроме как печатал послание о мире на настольные компьютеры. Пока так безобидно. 

Затем Миллер вставил в пакет вредоносный код для перезаписи файловых систем пользователей, если их компьютер имел российский или белорусский IP-адрес. Затем он добавил его в качестве зависимости к своему популярному узел-IPC программа и мгновенный хаос! Многочисленные серверы и ПК вышли из строя, когда они обновились до новейшего кода, а затем в их системах были стерты их диски. 

защита Миллера, «Все это общедоступно, задокументировано, лицензировано и имеет открытый исходный код.», не выдерживает. 

Лиран Тал, Снык Исследователь, раскрывший проблему, сказал: «Даже если преднамеренное и опасное действие [воспринимается] некоторыми как законный акт протеста, как это отражается на будущей репутации сопровождающего и делать ставку на сообщество разработчиков? Будет ли когда-нибудь этому мейнтейнеру снова доверять, чтобы он не предпринимал таких или даже более агрессивных действий в будущем для любых проектов, в которых он участвует?» 

Миллер не случайный чудак. Он написал много хорошего кода, такого как node-ipc и Узел HTTP-сервер. Но можете ли вы доверять его коду, чтобы он не был вредоносным? Хотя он описывает это как «не вредоносное ПО, [а] протестное ПО, которое полностью задокументировано», – ядовито возражают другие. 

Как написал один программист GitHub: «В связи с этим произойдет то, что группы безопасности в западных корпорациях, которые не имеют абсолютно никакого отношения к России или политике, начнут видеть бесплатное программное обеспечение с открытым исходным кодом как средство для атак на цепочку поставок (что в действительности так и есть) и просто начинают запрещать бесплатное программное обеспечение с открытым исходным кодом — все бесплатное программное обеспечение с открытым исходным кодом — в своих компаниях». 

Как написал другой разработчик GitHub с ником nm17: «The фактор доверия к открытому исходному коду, которая была основана на доброй воле разработчиков, теперь практически исчезла, и теперь все больше и больше людей осознают, что однажды их библиотека/приложение могут быть использованы для того, чтобы делать/говорить все, что думает какой-то случайный разработчик в Интернете. было правильно, что они сделали ».

Оба делают правильные выводы. Если вы не можете использовать исходный код, если не согласны с политической позицией его создателя, как вы можете использовать его с уверенностью? 

Сердце Миллера может быть в нужном месте — Слава Украины! — но является ли программное обеспечение с открытым исходным кодом, зараженное вредоносной нагрузкой, правильным способом защитить вторжение России в Украину? Нет, это не так. 

Метод с открытым исходным кодом работает только потому, что мы доверяем друг другу. Когда это доверие подрывается, неважно по какой причине, нарушается фундаментальная структура открытого исходного кода. Как сказал Грег Кроа-Хартман, специалист по сопровождению ядра Linux в стабильной ветке, когда студенты из Миннесотского университета преднамеренно пытались вставить плохой код в ядро ​​Linux для эксперимента в 2021 году, они сказали: «То, что они делают, — это преднамеренное злонамеренное поведение и неприемлемо и совершенно неэтично».

Люди давно утверждают, что открытый исходный код также должен включать этические положения. Например, 2009 г. Исключение из Стандартной общественной лицензии (eGPL)Пересмотр GPLv2, пытался запретить «исключениям», таким как военные пользователи и поставщики, использовать его код. Это не удалось. Другие лицензии, такие как Лицензия JSON с его мило-наивным пунктом «программное обеспечение должно использоваться во благо, а не во зло» все еще существует, но никто не соблюдает его.  

Совсем недавно активистка и разработчик программного обеспечения Коралин Ада Эмке представила лицензию с открытым исходным кодом, которая требует от пользователей нравственных поступков. В частности, ее Гиппократова лицензия добавлен в MIT лицензия с открытым исходным кодом пункт о том, что: 

«Программное обеспечение не может использоваться отдельными лицами, корпорациями, правительствами или другими группами для систем или действий, которые активно и сознательно подвергают опасности, вредят или иным образом угрожают физическому, умственному, экономическому или общему благополучию обездоленных лиц или групп в нарушение Всеобщей декларации прав человека Организации Объединенных Наций».

Звучит хорошо, но это не с открытым исходным кодом. Видите ли, открытый исходный код сам по себе является этической позицией. Его этика содержится в Фонд свободного программного обеспечения (FSF)«s Четыре основные свободы. Это основа всех лицензий с открытым исходным кодом и их основная философия. Как сказал в то время эксперт по правовым вопросам с открытым исходным кодом и профессор права Колумбийского университета Эбен Моглен, этические лицензии не могут быть бесплатными программами или лицензиями с открытым исходным кодом: 

Нулевая свобода, право запускать программу для любых целей стоит на первом месте среди четырех свобод, потому что, если пользователи не имеют этого права в отношении запускаемых ими компьютерных программ, они в конечном итоге вообще не имеют никаких прав на эти программы. Попытки дать разрешение только на хорошее использование или запретить плохое в глазах лицензиара нарушают требование защиты нулевой свободы». 

Другими словами, если вы не можете поделиться своим кодом по какой-либо причине, ваш код не является действительно открытым исходным кодом. 

Еще один более прагматичный аргумент в пользу запрета одной группе использовать программное обеспечение с открытым исходным кодом заключается в том, что блокировка чего-либо, например IP-адреса, — это очень широкое понятие. Как Флориан Рот, охранная компания Некстрон Системы«Начальник исследования, считавший «отключение моих бесплатных инструментов в системах с определенными настройками языка и часового пояса», в конце концов решил не делать этого. Почему? Потому что, делая это, «мы бы тоже отключили инструменты на системах критиков и вольнодумцев которые осуждают действия своих правительств». 

К сожалению, не только люди, пытающиеся использовать открытый исходный код для того, что они считают более высокой этической целью, создают проблемы для программного обеспечения с открытым исходным кодом. 

Ранее в этом году разработчик JavaScript Марак Сквайрс намеренно саботировал малоизвестные, но жизненно важные библиотеки Javascript с открытым исходным кодом «colors.js» и «faker.js». Результат? Взорвались десятки тысяч программ на JavaScript.

Почему? Это все еще не совсем ясно, но в уже удаленном сообщении GitHub Сквайрс написал: «С уважением, Я больше не собираюсь поддерживать Fortune 500s (и другие небольшие компании) с моей бесплатной работой. Больше нечего сказать. Воспользуйтесь этой возможностью, чтобы прислать мне шестизначный годовой контракт или разветвить проект, чтобы кто-то другой работал над ним». Как вы можете себе представить, эта попытка шантажировать его путь к зарплате не сработала для него так хорошо. 

Кроме того, есть люди, которые намеренно помещают вредоносное ПО в свой открытый исходный код для развлечения и получения прибыли. Например, компания по обеспечению безопасности DevOps ДжФрог обнаружил 17 новых вредоносных пакетов JavaScript в репозитории NPM, которые преднамеренно атакуют и воруют токены Discord пользователя. Затем их можно использовать на Платформа для общения и цифровой дистрибуции Discord.

Помимо создания новых вредоносных программ с открытым исходным кодом, которые выглядят невинными и полезными, другие злоумышленники берут старое, заброшенное программное обеспечение и переписывают его, чтобы включить бэкдоры для кражи криптовалюты. Одной из таких программ был event-stream. В него был вставлен вредоносный код для кражи биткойн-кошельков и перевода их баланса на сервер в Куала-Лумпуре. За эти годы было несколько подобных эпизодов.

С каждым таким шагом вера в программное обеспечение с открытым исходным кодом истощается. Поскольку открытый исходный код абсолютно необходим для современного мира, это паршивая тенденция. 

Что мы можем сделать по этому поводу? Ну, во-первых, мы должны очень тщательно обдумать, когда, если вообще когда-либо, мы должны блокировать использование открытого исходного кода. 

С практической точки зрения, мы должны начать использовать Фонд Linux Программный пакет обмена данными (SPDX) и Спецификация программного обеспечения (SBOM). Вместе они точно скажут нам, какой код мы используем в наших программах и откуда он берется. Тогда у нас будет гораздо больше возможностей для принятия обоснованных решений.

Сегодня очень часто люди используют открытый исходный код, не зная точно, что они запускают, и не проверяя его на наличие проблем. Они предполагают, что с ним все в порядке. Это никогда не было умным предположением. Сегодня это совершенно глупо. 

Даже со всеми этими недавними изменениями открытый исходный код по-прежнему лучше и безопаснее, чем проприетарные альтернативы «черного ящика». Но мы должны проверять и проверять код, а не слепо доверять ему. Это единственная разумная вещь, которую можно сделать в будущем.

Связанные истории:



Источник