Деякі розробники порушують програмне забезпечення з відкритим кодом

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 р Виняток General Public License (eGPL), перегляд GPLv2, намагався заборонити «виняткам», таким як військові користувачі та постачальники, використовувати його код. Це не вдалося. Інші ліцензії, такі як Ліцензія JSON з його мило наївним положенням «програмне забезпечення повинно використовуватися для добра, а не для зла» все ще існує, але його ніхто не забезпечує.  

Зовсім недавно активістка та розробник програмного забезпечення Коралайн Ада Емке представила ліцензію з відкритим кодом, яка вимагає від користувачів діяти морально. Точніше її Ліцензія Гіппократа додано до Ліцензія з відкритим кодом MIT пункт, в якому зазначено: 

«Програмне забезпечення не може використовуватися окремими особами, корпораціями, урядами чи іншими групами для систем або діяльності, які активно та свідомо загрожують, завдають шкоди чи іншим чином загрожують фізичному, психічному, економічному чи загальному добробуту незаможних осіб або груп у порушення Загальної декларації прав людини ООН».

Звучить добре, але це не відкритий код. Розумієте, відкритий код сам по собі є етичною позицією. Його етика міститься в Фонд вільного програмного забезпечення (FSF)с Чотири основні свободи. Це основа всіх ліцензій з відкритим кодом та їх головної філософії. Як сказав тоді експерт з права з відкритим кодом і професор права Колумбії Ебен Моглен, що етичні ліцензії не можуть бути вільним програмним забезпеченням або ліцензіями з відкритим кодом: 

"Свобода нуль, право запускати програму для будь-якої мети, стоїть на першому місці в чотирьох свободах, тому що якщо користувачі не мають цього права щодо комп’ютерних програм, які вони запускають, вони, зрештою, не мають жодних прав на ці програми взагалі. Зусилля дати дозвіл лише для хороших цілей або заборонити погане в очах ліцензіара порушують вимогу захисту нульової свободи». 

Іншими словами, якщо ви не можете поділитися своїм кодом з будь-якої причини, ваш код насправді не є відкритим кодом. 

Інший більш прагматичний аргумент щодо заборони одній групі використовувати програмне забезпечення з відкритим вихідним кодом полягає в тому, що блокування чогось, наприклад, IP-адреси, є дуже широким пензлем. Як Флоріан Рот, охоронна компанія Системи Nextron« Керівник наукового відділу, який вважав «відключення моїх безкоштовних інструментів у системах з певними налаштуваннями мови та часового поясу», нарешті вирішив цього не робити. Чому? Тому що, роблячи це, «ми б також відключили інструменти на системах критиків і вільнодумців які засуджують дії своїх урядів». 

На жаль, проблеми з програмним забезпеченням з відкритим кодом викликають не тільки люди, які намагаються використовувати відкритий вихідний код для того, що вони бачать як вищої етичної мети. 

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

Чому? Це все ще не зовсім зрозуміло, але в видаленому дописі на GitHub Сквайрс написав: «З повагою, Я більше не збираюся підтримувати Fortune 500s (та інші компанії меншого розміру) з моєю безкоштовною роботою. Більше нема чого сказати. Скористайтеся цим як можливістю надіслати мені шестизначний річний контракт або розвинути проект і попросити когось іншого працювати над ним». Як ви могли собі уявити, ця спроба шантажувати його шлях до зарплати не вдалася йому так добре. 

Крім того, є люди, які свідомо розміщують шкідливе програмне забезпечення у свій відкритий код для розваги та отримання прибутку. Наприклад, охоронна фірма DevOps JFrog виявив 17 нових шкідливих пакетів JavaScript у сховищі NPM, які навмисно атакують і крадуть токени Discord користувача. Потім їх можна використовувати на Платформа для комунікацій та цифрового розповсюдження Discord.

Окрім створення нових шкідливих програм з відкритим вихідним кодом, які виглядають невинними та корисними, інші зловмисники беруть старе, занедбане програмне забезпечення та переписують його, щоб включити бекдори для крадіжки криптовалют. Однією з таких програм був event-stream. У нього був вставлений шкідливий код для крадіжки біткойн-гаманців і передачі їх балансу на сервер у Куала-Лумпурі. За ці роки було кілька подібних епізодів.

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

Що ми можемо з цим зробити? Ну, по-перше, ми повинні дуже уважно подумати, коли, якщо взагалі, ми повинні заблокувати використання відкритого коду. 

Більш практично, ми повинні почати використовувати Linux Foundation Обмін даними пакетів програм (SPDX) та Специфікація програмного забезпечення (SBOM). Разом вони розкажуть нам, який саме код ми використовуємо в наших програмах і звідки він походить. Тоді ми зможемо приймати зважені рішення.

Сьогодні люди дуже часто використовують відкритий вихідний код, не знаючи точно, що вони використовують, і не перевіряючи його на наявність проблем. Вони вважають, що з цим все добре. Це ніколи не було розумним припущенням. Сьогодні це зовсім нерозумно. 

Навіть з усіма цими останніми змінами, відкритий код все ще є кращим і безпечнішим, ніж альтернативи проприетарного програмного забезпечення чорного ящика. Але ми повинні перевіряти код, а не сліпо довіряти йому. Це єдина розумна річ, яку можна зробити наперед.

Пов'язані історії:



Source