ზოგიერთი დეველოპერი არღვევს ღია კოდის პროგრამულ უზრუნველყოფას

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

გეტის სურათები

ღია კოდის შესახებ ერთ-ერთი ყველაზე გასაოცარი ის არ არის, რომ ის აწარმოებს დიდ პროგრამულ უზრუნველყოფას. ეს არის ის, რომ ამდენი დეველოპერები ტოვებენ თავიანთ ეგოებს, რათა შექმნან შესანიშნავი პროგრამები სხვების დახმარებით. თუმცა, ახლა რამდენიმე პროგრამისტი საკუთარ შეშფოთებას წინ აყენებს, ვიდრე ბევრი და პოტენციურად დამღუპველი ღია კოდის პროგრამული უზრუნველყოფა ყველასთვის.

მაგალითად, JavaScript-ის პაკეტების მენეჯერი RIAEvangelist, ბრენდონ ნოზაკი მილერი, დაწერა და გამოაქვეყნა ღია კოდის npm წყაროს კოდის პაკეტი სახელწოდებით peacenotwar. მან ცოტა რამ გააკეთა, მაგრამ დაბეჭდა მესიჯი მშვიდობისთვის დესკტოპებზე. ჯერჯერობით, ასე უვნებელია. 

შემდეგ მილერმა ჩადო პაკეტში მავნე კოდი, რათა გადაეწერა მომხმარებლების ფაილური სისტემები, თუ მათ კომპიუტერს ჰქონდა რუსეთის ან ბელორუსის IP მისამართი. შემდეგ მან დაამატა ეს, როგორც დამოკიდებულება მის პოპულარულში კვანძი-ipc პროგრამა და მყისიერი ქაოსი! მრავალი სერვერი და კომპიუტერი გაქრა, როდესაც ისინი განახლდნენ უახლეს კოდზე და შემდეგ მათი სისტემები წაიშალა დისკები. 

მილერის დაცვა, ”ეს ყველაფერი საჯარო, დოკუმენტირებული, ლიცენზირებული და ღია წყაროა”, არ უძლებს. 

ლირან ტალი, სნიკი მკვლევარმა, რომელმაც აღმოაჩინა პრობლემა, თქვა: „მაშინაც კი, თუ მიზანმიმართული და საშიში ქმედება ზოგიერთის მიერ აღიქმება, როგორც პროტესტის ლეგიტიმური აქტი, როგორ აისახება ეს შემნახველის მომავალ რეპუტაციაზე და წილი დეველოპერთა საზოგადოებაში? იქნება თუ არა ოდესმე ნდობა ამ დამხმარეზე, რომ არ მოჰყვეს მომავალ ქმედებებს ასეთ ან კიდევ უფრო აგრესიულ ქმედებებში ნებისმიერ პროექტში, რომელშიც ისინი მონაწილეობენ?” 

მილერი არ არის შემთხვევითი ამწე. მან შექმნა ბევრი კარგი კოდი, როგორიცაა node-ipc და კვანძის HTTP სერვერი. მაგრამ, შეგიძლიათ ენდოთ მის რომელიმე კოდს, რომ არ იყოს მავნე? მიუხედავად იმისა, რომ იგი აღწერს მას, როგორც "არა მავნე პროგრამა, [მაგრამ] პროტესტური პროგრამა, რომელიც სრულად არის დოკუმენტირებულისხვები კატეგორიულად არ ეთანხმებიან. 

როგორც GitHub-ის ერთ-ერთმა პროგრამისტმა დაწერა, „რაც მოხდება, არის ის, რომ დასავლური კორპორაციების უსაფრთხოების გუნდები, რომლებსაც აბსოლუტურად არაფერი აქვთ საერთო რუსეთთან ან პოლიტიკასთან, დაიწყებენ დანახვას. უფასო და ღია პროგრამული უზრუნველყოფა, როგორც მიწოდების ჯაჭვის შეტევების გამზირი (რაც ეს მთლიანად არის) და უბრალოდ დაიწყეთ უფასო და ღია კოდის პროგრამული უზრუნველყოფის აკრძალვა - ყველა უფასო და ღია კოდის პროგრამული უზრუნველყოფა - მათ კომპანიებში. 

როგორც სხვა GitHub დეველოპერმა nm17 სახელურით დაწერა, ”The ღია წყაროს ნდობის ფაქტორი, რომელიც დაფუძნებული იყო დეველოპერების კეთილ ნებაზე, ახლა პრაქტიკულად გაქრა და ახლა უფრო და უფრო მეტი ადამიანი აცნობიერებს, რომ ერთ დღეს, მათი ბიბლიოთეკა/აპლიკაცია შესაძლოა გამოიყენონ იმისთვის, რომ გააკეთონ/თქვან ის, რაც ინტერნეტის შემთხვევითმა დეველოპერმა მოიფიქრა. სწორი იყო, რაც მათ გააკეთეს'“.

ორივე მართებულ პუნქტებს აკეთებს. როდესაც თქვენ ვერ გამოიყენებთ წყაროს კოდს, თუ არ ეთანხმებით მისი შემქმნელის პოლიტიკურ პოზიციას, როგორ შეგიძლიათ გამოიყენოთ იგი თავდაჯერებულად? 

მილერის გული შეიძლება სწორ ადგილას იყოს - სლავა უკრაინა! — მაგრამ არის თუ არა მავნე დატვირთვით ინფიცირებული ღია კოდის პროგრამული უზრუნველყოფა სწორი გზა რუსეთის მიერ უკრაინაში შეჭრის დასაცავად? არა, ეს არ არის. 

ღია კოდის მეთოდი მუშაობს მხოლოდ იმიტომ, რომ ჩვენ ვენდობით ერთმანეთს. როდესაც ეს ნდობა ირღვევა, არ აქვს მნიშვნელობა რა მიზეზით, მაშინ ღია წყაროს ფუნდამენტური ჩარჩო ირღვევა. როგორც გრეგ კროჰ-ჰარტმანმა, Linux-ის ბირთვის სტაბილური ფილიალისთვის, თქვა, როდესაც მინესოტას უნივერსიტეტის სტუდენტები განზრახ ცდილობდნენ ცუდი კოდის ჩასმა Linux-ის ბირთვში ექსპერიმენტისთვის 2021 წელს, თქვა: „ის რასაც ისინი აკეთებენ არის განზრახ მავნე ქცევა და ეს არ არის მისაღები და სრულიად არაეთიკური“.

ხალხი დიდი ხანია ამტკიცებს, რომ ღია წყარო უნდა შეიცავდეს ეთიკურ დებულებებსაც. მაგალითად, 2009 წ გამონაკლისი ზოგადი საჯარო ლიცენზია (eGPL), რევიზია GPLv2, ცდილობდა აეკრძალა „გამონაკლისებს“, როგორიცაა სამხედრო მომხმარებლები და მომწოდებლები, მისი კოდის გამოყენება. ჩაიშალა. სხვა ლიცენზიები, როგორიცაა JSON ლიცენზია თავისი ტკბილად გულუბრყვილო "პროგრამული უზრუნველყოფა უნდა იყოს გამოყენებული სიკეთისთვის და არა ბოროტებისთვის" პუნქტი ჯერ კიდევ არსებობს, მაგრამ არავინ აღასრულებს მას.  

ცოტა ხნის წინ, აქტივისტმა და პროგრამული უზრუნველყოფის შემქმნელმა Coraline Ada Ehmke-მ შემოიღო ღია კოდის ლიცენზია, რომელიც მოითხოვს მის მომხმარებლებს მორალურად იმოქმედონ. კონკრეტულად მისი ჰიპოკრატეს ლიცენზია დაამატა MIT ღია კოდის ლიცენზია პუნქტი, რომელშიც ნათქვამია: 

„პროგრამული უზრუნველყოფა არ შეიძლება გამოყენებულ იქნას ინდივიდების, კორპორაციების, მთავრობების ან სხვა ჯგუფების მიერ სისტემებისთვის ან აქტივობებისთვის, რომლებიც აქტიურად და შეგნებულად საფრთხეს უქმნის, ზიანს აყენებს ან სხვაგვარად საფრთხეს უქმნის არაპრივილეგირებული პირების ან ჯგუფების ფიზიკურ, გონებრივ, ეკონომიკურ ან ზოგად კეთილდღეობას. გაეროს ადამიანის უფლებათა საყოველთაო დეკლარაციის დარღვევა“.

კარგად ჟღერს, მაგრამ ეს არ არის ღია წყარო. ხედავთ, ღია წყარო თავისთავად ეთიკური პოზიციაა. მისი ეთიკა შეიცავს თავისუფალი პროგრამული უზრუნველყოფის ფონდი (FSF)'s ოთხი ძირითადი თავისუფლება. ეს არის ყველა ღია კოდის ლიცენზიისა და მათი ძირითადი ფილოსოფიის საფუძველი. როგორც ღია კოდის იურიდიულმა ექსპერტმა და კოლუმბიის სამართლის პროფესორმა ბენ მოგლენმა თქვა იმ დროს, რომ ეთიკური ლიცენზიები არ შეიძლება იყოს თავისუფალი პროგრამული უზრუნველყოფა ან ღია კოდის ლიცენზიები: 

"თავისუფლება ნული, პროგრამის გაშვების უფლება ნებისმიერი მიზნით, პირველ ადგილზეა ოთხ თავისუფლებაში, რადგან თუ მომხმარებლებს არ აქვთ ეს უფლება მათ მიერ გაშვებულ კომპიუტერულ პროგრამებთან მიმართებაში, მათ საბოლოოდ არ აქვთ არანაირი უფლება ამ პროგრამებზე. ნებართვის მიცემის მცდელობა მხოლოდ კარგი გამოყენებისთვის, ან ცუდის აკრძალვის ლიცენზირების თვალში, არღვევს თავისუფლების ნულის დაცვის მოთხოვნას“. 

სხვა სიტყვებით რომ ვთქვათ, თუ რაიმე მიზეზით არ შეგიძლიათ თქვენი კოდის გაზიარება, თქვენი კოდი ნამდვილად არ არის ღია წყარო. 

კიდევ ერთი უფრო პრაგმატული არგუმენტი ერთ ჯგუფს ღია კოდის პროგრამული უზრუნველყოფის გამოყენების აკრძალვის შესახებ არის ის, რომ ისეთი რაღაცის დაბლოკვა, როგორიცაა IP მისამართი, არის ძალიან ფართო ფუნჯი. როგორც ფლორიან როტი, უსაფრთხოების კომპანია Nextron Systemsკვლევის ხელმძღვანელი, რომელიც განიხილავსსისტემებზე ჩემი უფასო ხელსაწყოების გამორთვა გარკვეული ენისა და დროის ზონის პარამეტრებით“, საბოლოოდ გადაწყვიტა ეს არ გაეკეთებინა. რატომ? რადგან ამით "ჩვენ ასევე გავაუქმებთ ხელსაწყოებს კრიტიკოსებისა და თავისუფალი მოაზროვნეების სისტემებზე რომლებიც გმობენ მათი მთავრობების ქმედებებს“. 

სამწუხაროდ, არ არის მხოლოდ ადამიანები, რომლებიც ცდილობენ გამოიყენონ ღია წყარო იმისთვის, რასაც ისინი ხედავენ, როგორც უმაღლესი ეთიკური მიზნისთვის, რაც იწვევს პრობლემებს ღია კოდის პროგრამული უზრუნველყოფისთვის. 

ამ წლის დასაწყისში, JavaScript-ის დეველოპერმა Marak Squires-მა განზრახ საბოტაჟი გაუკეთა მის ბუნდოვან, მაგრამ სასიცოცხლოდ მნიშვნელოვან ღია წყაროს Javascript ბიბლიოთეკებს „colors.js“ და „faker.js“. Შედეგი? ათიათასობით JavaScript პროგრამა აფეთქდა.

რატომ? ჯერ კიდევ არ არის ბოლომდე გასაგები, მაგრამ მას შემდეგ, რაც წაშლილია GitHub პოსტში, Squires დაწერა: ”პატივისცემით, მე აღარ ვაპირებ Fortune 500-ების მხარდაჭერას (და სხვა მცირე ზომის კომპანიები) ჩემი უფასო მუშაობით. სხვა ბევრი არაფერია სათქმელი. გამოიყენეთ ეს, როგორც შესაძლებლობა, გამომიგზავნოთ ყოველწლიური ექვსნიშნა კონტრაქტი ან გავაფორმო პროექტი და სხვამ ვიმუშაო მასზე.” როგორც თქვენ წარმოიდგინეთ, ეს მცდელობა, დაშანტაჟებინა ანაზღაურებამდე, არც ისე კარგად გამოუვიდა მას. 

შემდეგ კი არიან ადამიანები, რომლებიც განზრახ აყენებენ მავნე პროგრამას თავიანთ ღია კოდის კოდში გართობისა და მოგების მიზნით. მაგალითად, DevOps უსაფრთხოების ფირმა ჯფროგი აღმოაჩინა 17 ახალი JavaScript მავნე პაკეტი NPM საცავში, რომლებიც მიზანმიმართულად უტევს და იპარავს მომხმარებლის Discord ტოკენებს. შემდეგ ისინი შეიძლება გამოყენებულ იქნას Discord საკომუნიკაციო და ციფრული განაწილების პლატფორმა.

გარდა ახალი მავნე ღია კოდის პროგრამების შექმნისა, რომლებიც გამოიყურება უდანაშაულო და გამოსადეგი, სხვა თავდამსხმელები იღებენ ძველ, მიტოვებულ პროგრამულ უზრუნველყოფას და ხელახლა წერენ მათ, რომ შეიცავდეს კრიპტო მონეტების მოპარვის უკანა კარებს. ერთ-ერთი ასეთი პროგრამა იყო ივენთ-სტრიმი. მასში ჩასმული იყო მავნე კოდი ბიტკოინის საფულეების მოსაპარად და მათი ნაშთების კუალა ლუმპურის სერვერზე გადასატანად. წლების განმავლობაში რამდენიმე მსგავსი ეპიზოდი იყო.

ყოველი ასეთი ნაბიჯით, ღია კოდის პროგრამული უზრუნველყოფისადმი რწმენა იწურება. ვინაიდან ღია წყარო აბსოლუტურად სასიცოცხლო მნიშვნელობისაა თანამედროვე სამყაროსთვის, ეს ცუდი ტენდენციაა. 

რა შეგვიძლია ამის გაკეთება? კარგი, ერთი რამ, ჩვენ ძალიან ფრთხილად უნდა განვიხილოთ, თუ როდის უნდა დავბლოკოთ ღია კოდის გამოყენება. 

უფრო პრაქტიკულად, ჩვენ უნდა დავიწყოთ გამოყენება Linux Foundation-ის პროგრამული პაკეტის მონაცემთა გაცვლა (SPDX) მდე პროგრამული უზრუნველყოფის მასალების ანგარიში (SBOM). ეს ერთად გეტყვით ზუსტად რა კოდს ვიყენებთ ჩვენს პროგრამებში და საიდან მოდის ის. ამის შემდეგ, ჩვენ ბევრად უფრო შევძლებთ ინფორმირებული გადაწყვეტილებების მიღებას.

დღეს, ხშირად ადამიანები იყენებენ ღია კოდის კოდს ისე, რომ არ იცოდნენ ზუსტად რას მუშაობენ ან ამოწმებენ მას პრობლემებისთვის. ისინი თვლიან, რომ ყველაფერი კარგადაა. ეს არასოდეს ყოფილა ჭკვიანი ვარაუდი. დღეს ეს სრულიად სისულელეა. 

ყველა ამ ბოლო ცვლილებების მიუხედავად, ღია წყარო მაინც უკეთესი და უსაფრთხოა, ვიდრე შავი ყუთის საკუთრების პროგრამული ალტერნატივები. მაგრამ, ჩვენ უნდა შევამოწმოთ და გადავამოწმოთ კოდი იმის ნაცვლად, რომ ბრმად ვენდოთ მას. ეს არის ერთადერთი ჭკვიანური რამ, რაც უნდა გააკეთოთ მომავალში.

დაკავშირებული ისტორიები:



წყარო