açıq mənbəli paketlər

Açıq Mənbəli Zərərli Paketlərdən Qorunma: Nə İşləyir (İşləmir)

Bu, serialın üçüncü epizoddur silsilə məqalələr proqram təminatı təchizatı zəncirinin ən çox yayılmış hücum növləri haqqında: ictimai reyestrdən sui-istifadə edənlər açıq mənbə proqram komponentləri. Əvvəlki bölümdə təhlil etdikdən sonra “Zərərli Paketlərin Anatomiyası: Trendlər Nələrdir?"Pis aktyorların yeni və ya mövcud dərc olunmuş komponentlərə zərərli davranışı necə yeritdiklərini nəzərə alsaq, yanğınsöndürmə gödəkçələrimizi geyinməyə və bu şəkildə təqdim edilən zərərli proqram təminatını necə uğurla bloklaya biləcəyimizi araşdırmağa və ya alternativ olaraq, səhv yanaşmamız səbəbindən potensial ciddi kiber hadisə ilə necə mübarizə apara biləcəyimizi araşdırmağa hazırıq."

Təhlükəsizlikdən xəbərdar olan mütəxəssislərin əksəriyyətinin bu təhlükə ilə necə mübarizə aparmaq barədə fikirləri var. Təhlükəsizlik menecerlərinin tərəddüd etmədən belə dediklərini eşitmişik. SCA Alətlər artıq paket versiyasının zərərli proqram olduğunu sizə bildirir. Yaxud da onlar tanınmış, yüksək səviyyədə nəzərdən keçirilmiş proqram komponentlərindən asılıdırlar ki, burada hər hansı zərərli proqram dərhal aşkarlanacaq və silinəcək. Onlar avtomatik olaraq zəiflik düzəlişlərini əldə etmək üçün açıq kiçik/yamaq versiyalarından istifadə edirlər və bu, açıq mənbə asılılıqları riskini azaltmaq üçün düzgün, tövsiyə olunan yoldur, "erkən yamaq, tez-tez yamaq”Prinsipi. 

Bu bölümdə bu fikirlərin niyə səhv olduğunu və bu cür yanlış təsəvvürlərin bu hücum mexanizminin populyarlığına və təşkilatların üzləşdiyi böyük riskə necə töhfə verdiyini nəzərdən keçirəcəyik. Nəyin işə yaradığını, hansının sərf olunan səy və resurslar olduğunu izah edəcəyik.

Ümumi səhv fikirlər

Proqram təminatı təhlükəsizliyi ilə bağlı səyahətimiz zamanı hücum texnikalarının inkişaf etdiyini və təhlükəsizlik baxımından həssas insanların geniş fikirlərini gördük. Təşkilatlar tez-tez bu təhlükəyə qarşı nəyin işlədiyini səhv başa düşürlər, buna görə də əvvəlcə nəyin işləməyəcəyini araşdıracağıq və aşağıdakı yanlış təsəvvürlərin tam olmayan siyahısını təqdim edəcəyik.

Yanlış təsəvvür #1: SCA alətlər artıq zərərli komponentlər barədə məlumat verir

Həqiqətən! Amma faktdan sonra... Element proqram təminatı istehsalında istifadə olunubsa və pis aktyorlar artıq bir geliştiricidə və ya CI/CD Sirrlər süzülmüş, əlavə zərərli proqram yüklənmiş və quraşdırılmış ola bilər və bəlkə də düşmən yan tərəfə keçərək artıq başqa yerə daxil ola bilər. 

Proqram Təminatı Tərkibi Təhlili (SCA) alətləri potensial məlum zəiflikləri müəyyən etmək üçün hazırlanmışdır. Müasir alətlər siqnal-səs-küy nisbətini artırmaqla, zəifliyin həqiqətən əlçatan və ya istismar edilə bilən olub olmadığını müəyyən etməklə əla iş görürlər. Lakin onlar yeni zərərli proqramlara qarşı yararsızdırlar. Zərərli komponenti sıfır günlük zəiflik kimi düşünün: Yalnız onun zərərli davranışı aşkar edildikdə, komponent saxlama reyestrinə bildirilir və təhlükəsizlik qrupu tərəfindən yoxlanıldıqdan sonra zərərli olduğu təsdiqlənir və reyestrdən silinir. [1]

Həmin vaxt dünya (o cümlədən SCAs) komponentin (və ya mövcud komponentin bəzi versiyalarının) quraşdırılmasının və ya istifadəsinin yaxşı bir şey olmadığını bilir. Lakin bu, komponentin reyestrdən mövcud olmadığı zaman baş verir.Üçüncü tərəf komponentlərində və ya hətta reyestr tərəfindən zərərli kimi təsnif edilən komponentlərdə zəifliklərim olduğunu bilmək yaxşıdır, amma təəssüf ki, SCA və ya ümumi audit alətləri bu kontekstdə kömək etmir. Olmasa SCA/audit aləti, bir komponentin təşkilatınızda istifadə edilməzdən əvvəl zərərli olduğunu əvvəlcədən müəyyən edə bilər.

Unutmayın ki, zərərli açıq mənbəli komponentlərə qarşı hər hansı bir həll yolu onları aşkarlamalıdır anında, komponentin reyestrdə dərc edildiyi vaxtla komponentin (versiyanın) ilk dəfə təşkilatınızda istifadə edildiyi vaxt arasında. Və bura keçid komponentləri də daxildir.  

Yanlış təsəvvür #2: Quraşdırma skriptlərini qurulma zamanı idarə etmək açıq mənbəli komponentlərdən gələn zərərli davranışın qarşısını alır

Müxtəlif paket menecerləri skriptləri (tarball komponentinə daxil olmaqla) işlətmək imkanı təklif edir [2]), qanuni səbəblərə görə, məsələn, tələb olunan elementləri müxtəlif platformalarda tərtib etmək, kod yaratmaq və ya testlər aparmaq üçün. Hamımız bilməliyik ki, tarball-a zərərli skriptlər daxil edildikdə və ya təcavüzkar yaxşı skript əvəzinə zərərli skripti işlədə bildikdə, onlar pis aktyorlar tərəfindən sui-istifadə edilə bilər.

Bunu bilərək, paket menecerini skriptləri görməzdən gəlmək üçün konfiqurasiya edə bilərik. Məsələn, NPM ilə –ignore-scripts bayraq (və ya konfiqurasiya xüsusiyyəti .npmrc fayl) quraşdırma zamanı skriptləri atlayır. Bu, bəzi problemlər yarada bilər, çünki skriptlərin işə salınması bir çox ekosistemlərdə yaygındır: Bəzi paket menecerləri skriptin icrasını deaktiv etməyə belə icazə vermir (işarə: prompt “Hansı paket menecerləri quraşdırma skriptlərinin icrasını deaktiv etməyə icazə vermir?"Sevimli süni intellektinizdə). Amma bu, ümumiyyətlə qorumur (keçid deaktiv konfiqurasiyasının hər yerdə olmasını təmin etməliyik). 

Zərərli davranış quraşdırma skriptlərində deyil, icra zamanı icra ediləcək proqram təminatında olduqda, təkcə bu seçim bizi qorumur. 

Yanlış təsəvvür #3: Versiya sancması zərərli komponentlərin quraşdırılmasının qarşısını alır

Yamanın erkən mərhələdə edilməsi ilə tez-tez edilməsi arasında güzəşt var açıq versiyalar (təhlükəsizlik düzəlişləri üçün mövcud olduqda paket menecerinə avtomatik olaraq yeni yeniləmələri quraşdırmağa icazə vermək) və versiyanın sancılması (sabit versiyada proqram təminatı üçün bütün birbaşa və keçid asılılıqlarına malikdir). Təhlükəsizlik prinsipləri inadkar və bəzən ziddiyyətlidir, məsələn, "erkən yamaq, tez-tez yamaq" və "Təkmilləşdirməyə yüngül yanaşmaq olmaz"Bəzi paket menecerləri server diapazonları ilə avtomatik yeniləmələri tövsiyə olunan şəkildə edir. Zərərli yeniləmələri də almaq istəyirsinizsə əladır! Bəli, zəiflikləri mümkün qədər tez bağlayan təhlükəsizlik düzəlişlərini almaq üçün komponentlər yenilənməlidir, amma ... paket menecerinin bunu avtomatik olaraq etməsinə heç vaxt icazə verməyin.

Yanlış təsəvvür #4: Etibarlı komponentlərdən istifadə təhlükəsizdir. İstənilən zərərli versiya dərhal tapılacaq, aşkarlanacaq və silinəcək.

Niyə bir komponentə etibar edilir? Ola bilsin ki, onun çox populyar olması, bir çox insanın zəifliklər axtarması, çox sayda texniki xidmət işçisinin olması və hamısını diqqətlə nəzərdən keçirən birdən çox əsas texniki xidmət mütəxəssisinin olması səbəbindən. pull requestsReallıq tamamilə fərqlidir. Bəzi vacib komponentlər tək, ödənişsiz bir geliştirici tərəfindən saxlanılır. Geniş istifadə olunan çərçivələr bir neçə daimi töhfəçisürətlə azalan sayı ilə commits hər texniki xidmət göstərən şəxs üçün (məşhur layihələrdə bəzi sürücülük işlərini yerinə yetirən uzun bir töhfəçi quyruğu var) commit və heç vaxt geri qayıtmır). Tək bir texniki xidmətçi ilə məşhur layihələr çoxdur.

Təsəvvür edin ki, siz deyəcəksiniz “Oh, biz Spring Boot / Angular / React / PyTorch / rəsmi baza Docker şəkillərindən istifadə edirik, ona görə də danışdığınız risk olduqca aşağıdır.” Bəlkə də bu doğrudur, biz təhlükəsizlik satıcıları daim qorxutma hərəkətləri edirik və mübahisəli riski azaltmaq üçün inkişaf qruplarına müdaxilə etmək cəfəngiyatdır. Risk qəbulu abzasına (növbəti hissədə) keçmək və hər şeyin bitməsi sizi cəlb edə bilər. Təəssüf ki, ən populyar komponentlər pis aktyorların hədəfləridir və məsələn, məşhur PyTorch kitabxanasına hücum edildi keçmişdə.

"Dərhal tapıldı, aşkar edildi və silindi".  Yeni zərərli komponentin ictimai reyestrdən silinməsi günlərlə çəkir. Reyestrlər komponent versiyasını silməkdə ehtiyatlıdırlar, bu da yaxşıdır. Təcrübəmiz göstərir ki, tərəfimizdən məlumat verildikdən sonra reyestrin təsirlənmiş versiyanı silməsi üçün orta vaxt 39 saatdır, bu da bir gün yarımdan çoxdur. Elə zərərli komponentlər var ki, silinməzdən əvvəl reyestrdə ilkin məlumat verməyimizdən bir həftə sonra qalır. Bəzi hallarda, komponent yalnız zərərçəkmiş və ya hadisəyə cavab verən şirkət komponentlə bağlı hadisə barədə məlumat verdikdən sonra silinir. 

Zərərli komponentlərə qarşı nə işləmir

Hər hansı bir qeyri-müəyyən yanaşma uğursuzluğa düçar olacaq. Bu, şübhəsizdir ki, siz bu təhlükə ilə əlaqəli risk üçün effektiv əks tədbirlər görmürsünüz. 

Ənənəvi SCA Alətlər sizə məlum zərərli proqram təminatı haqqında məlumat verir, lakin geniş ifşa pəncərəsinə malikdir. Zərərli komponentlərin məcburi bloklanması ilə proaktiv şəkildə zərərli proqram aşkarlamasını həyata keçirmədikləri təqdirdə, bu təhlükəyə qarşı işləmirlər. 

Quraşdırma skriptlərini deaktiv etmək kömək edə bilər, lakin komponentin quraşdırılması lazım olan hər yerdə tətbiq olunmalıdır. Versiyaların sancılması ilə də eyni şey baş verir, çünki versiyalar təhlükəsiz ilkin vəziyyətdən əbədi olaraq sancıla bilməz.

Məşhur komponentlərin təchizat zəncirindəki hücum zamanı istənilən zərərin qarşısını almaq üçün demək olar ki, ani aşkarlama olmadan gözlənilməz davranışla vurula bilməyəcəyi qədər diqqət çəkdiyini düşünmək sadəlövhlük və risklidir. Siz təhlükənin kənarında yaşamaq istəmirsiniz, elə deyilmi?

Əgər bu nöqtədə dayansanız, onda risk qəbulu edə biləcəyiniz tək şey budur: Bu, bir decisriskin qəbul edilməsinin əsaslandırılması və onun potensial nəticələri daxil olmaqla, təhdid modelinizdə/risk qiymətləndirmənizdə sənədləşdirilməli olan ion. Rəhbərliyə və digər müvafiq tərəflərə məlumat verməklə məlumatlılığı artırın. Bəziləri şərti zərərli komponent proqram təminatınıza quraşdırıldıqda və ya daxil edildikdə planlaşdırıla bilər, lakin bu çətindir, çünki hücum edənlərin izləməli olduqları bir çox yol var. Zərərli komponentin istifadəsinə əsaslanan təchizat zəncirinin hücumunun təfərrüatları, təşkilatınızın tənzimləyici çərçivəsi çərçivəsində məcburi olan hadisənin ictimaiyyətə açıqlanmasını kəskin şəkildə dəyişdirəcək. Siz həmçinin müraciət edə bilərsiniz kompensasiya nəzarətləri or köçürmə riski məsələn, sığorta ilə.

Bununla belə, təhlükəni aradan qaldıran nəzarət tədbirləri mövcuddur və riskin qəbul edilməsindən məmnun deyilsinizsə, nəzərə alınmalıdır. Zəhmət olmasa, oxumağa davam edin.

Zərərli Komponentlərdən İstifadə Edilən Hücumlara Qarşı Nə İşləyir

Bərk Versiyaların İdarə Edilməsi

Zərərli proqram təminatı almadan zəifliklərin aradan qaldırılması ehtiyacını tarazlaşdırmaq üçün nəzarətli və məlumatlı versiya bumps ilə versiya sancmaları ən yaxşı yoldur. Lakin 3 nömrəli yanlış təsəvvürü unutmayın: Versiya sancmaları təkcə yeni versiyalardan gələn zərərli kodu bloklamaq üçün kifayət deyil, çünki gələcəkdə versiyaları birbaşa və ya dolayı asılılıqda yeniləməlisiniz. Bu anda bütün dəyişdirilmiş versiyalarda zərərli proqramların olmadığına dair kifayət qədər güclü dəlillərə ehtiyacınız var.

Erkən Xəbərdarlıq

Zərərli komponentlər probleminə yanaşmalardan biri erkən xəbərdarlıq sistemidir (burada belə adlandırılır) Zərərli proqram təminatı üzrə erkən xəbərdarlıq və ya MEW), burada dərc olunmuş yeni versiyalar (yeni və ya mövcud komponentlər üçün) aşkarlama mühərriki tərəfindən təhlil edilir və kifayət qədər dəlil tapıldıqda yeni versiyanı potensial zərərli kimi təsnif edə bilər. 

Avtomatlaşdırma burada vacibdir, çünki mövcud nəşr sürətində bütün yeni komponentləri əl ilə nəzərdən keçirmək mümkün deyil. Beləliklə, aşkarlama mühərriki, bəlkə də statik, dinamik və qabiliyyət təhlili, istifadəçi nüfuzu və komponent metaməlumatları ilə tarball məzmunu arasındakı uyğunsuzluqlardan və ya tarball ilə komponentin guya gəldiyi mənbə deposu arasındakı dəlillər daxil olmaqla müxtəlif üsulları birləşdirməlidir.

Bir var qaranlıq zona dərc müddəti ilə mühərrikin komponent məzmununu təhlil etdiyi vaxt arasındakı müddət, lakin bir neçə dəqiqədən çox olmamalıdır. Sxem dəyişdirilə bilər, məsələn, yeni komponentlərin quraşdırılmasına və proqram təminatında istifadəsinə icazə verməzdən əvvəl təhlil edilməsini gözləməklə. pipelines, və ya lazım olduqda onları tələb üzrə təhlil edin. Verilmiş versiyadakı komponent dəyişməzdir [3], buna görə də onu yalnız bir dəfə təhlil etmək lazımdır.

Tam avtomatlaşdırma mümkün deyil və potensial zərərli komponentlər üçün təhlükəsizlik araşdırması tələb olunur. Rəqəmsal dərmanların tərəfdarlarından ehtiyatlı olunSüni intellekt və Maşın Öyrənməsi şübhəli komponentdə zərərli proqram təminatının olub-olmadığını təsdiqləmək üçün son sözü demək üçün kifayət qədər inkişaf etdirilməyib. Əlbəttə ki, maşın öyrənməsi aşkarlama sistemində giriş komponentinin əldə edilmiş xam dəlillərdən təsnif edilməsində əsas rol oynayır, lakin komponent "karantinə alındıqdan" sonra son söz zərərli komponentlərdə təcrübəsi olan təhlükəsizlik qrupu tərəfindən əl ilə yoxlanılmasıdır. Bu, hər hansı potensial zərərli proqramı təsdiqləyir və ya onu təhlükəsiz kimi yenidən təsnif edir. Və vaxt müddəti saatlar aralığındadır. 

Reyestr zərərli versiya/komponent barədə məlumat verir; daha sonra reyestr təsdiqləmək üçün araşdırma aparır və ictimaiyyətə açıqlamağa və reyestrdən çıxarmağa davam edir. Bəzi reyestrlər təhlükəsizlik paketini saxlayır. Buradakı vaxt diapazonu dərc olunduğu gündən bəri olan günlər və ya həftələrdir, yəni 'oturmaq vaxtı'ya da'ekspozisiya pəncərəsi'əksər zərərli komponentlər üçün.

Komponent versiyasının zərərli olub olmadığını bilmək mümkündürmü?

Beləliklə, erkən xəbərdarlıq üçün bu suala qənaətbəxş cavab verməliyik: Kitabxananın və ya paketin zərərli (olmadığını) necə bilə bilərəm? Zərərli davranışa dair kifayət qədər dəlil necə toplamaq olar? Mümkündür, lakin çətindir, çünki düşmənlər aşkarlanmamaq üçün çoxlu ixtiraçılıqdan istifadə edirlər. Hər birinin müsbət və mənfi cəhətləri olan fərqli yanaşmalar mövcuddur.

Statik analiz Komponenti işə salmadan hücumçular tərəfindən istifadə edilən bütün icra yollarını yoxlaya və qarışıqlığı aradan qaldırmaq və ya deşifrə etmək kimi əvvəlcədən emal tapşırıqlarını yerinə yetirə bilər. Hücumçular öz zərərlərini gizlətməyə çalışarkən, qarışıqlığı aradan qaldırmaq cəhdləri həqiqətən zərərli proqram təminatının sübutudur (lakin unutmayın ki, qanuni komponentlər intellektual mülkiyyəti qorumaq üçün kodu qarışıqlaşdırır və "açıq mənbə"). Güclü qarışıqlığa malik yüksək dərəcədə inkişaf etmiş hücumların yalnız az bir hissəsi qum qutusuna ehtiyac duyur, lakin bu cür güclü qarışıqlıq pis niyyətin əlamətidir. Xahiş edirik unutmayın ki, ənənəvi SAST Alətlər arxa qapılar kimi zərərli niyyətlər üçün deyil, təsadüfi zəifliklər üçün hazırlanmışdır.

Dinamik analiz Komponenti işə salır və adətən sandbox mühiti təmin etməklə, icra müddətini ölçərək cavabı araşdırır. Müəyyən şərtlər altında tetiklenen zərərli davranış aşkarlanmamış qala bilər: nəzərə alın ki, zərərli proqram təminatı bu kimi yayınma üsullarından istifadə edə bilər. Virtuallaşdırma/Sandboxdan Yayınma yalnız yoxlama altında olmadıqda aktivləşdirmək və həmçinin hər hansı statik analiz mühərriki üçün zərərli fəaliyyətin əlaməti.

Qabiliyyətlərin təhlili komponentin nə etdiyini nəzərə alır: hara qoşulduğunu, hansı fayllara daxil olduğunu, hansı əmrlərin və ya proqramların işlədiyini, terminalın və ya cihazın giriş/çıxışının yerinə yetirildiyini və ya hansı sistem çağırışlarının çağırıldığını. Davranışın bu barmaq izi (mövcud komponent üçün) versiyalar arasında müqayisə edilə bilər, buna görə də gözlənilməz davranış aşkar edildikdə, bu dəlillər yeni versiyaya daxil edilmiş potensial zərərli fəaliyyətə şübhə yarada bilər. Bu yanaşma təhlükəsizlik analitiklərinin potensial zərərli proqram təminatı ilə qarşılaşdıqda izlədikləri çeşidləmə addımlarını izləyir: istifadə edərək yoxlama strings və ya oxşar alətlər. Bu yanaşma, tetikleyici şərtlərdən asılı olmayaraq zərərli davranışı aşkarlayır və mənbə kodu mövcud olmadıqda işləyir.

Kontekst təhlili Komponentin necə və kim tərəfindən dərc edildiyi barədə məlumat toplayır. Pis aktyorların kampaniyaları tez-tez heç bir ciddi yoxlama prosesinə tabe olmayan yeni istifadəçi hesabından (hesablarından) istifadə edir. Keçmiş fəaliyyəti izləmək, əsasən potensial güzəştə işarə edə biləcək anomaliyalar üçün əsas istifadəçi haqqında məlumat verə bilər. Reputasiya qazanmaq çox çətindir və itirmək çox asandır! Keçmiş fəaliyyəti olmayan istifadəçi neytraldır, lakin karma pis niyyətliləri təqib edir. Hacktivistlər və ya nəşriyyat məlumatları oğurlanan normal istifadəçilər diqqətlə izlənilməlidir.

Digər kontekstual məlumat, guya komponent tarballını yaratmaq üçün istifadə edilən mənbə deposu ilə tarballın özünün məzmunu arasındakı hər hansı bir uyğunsuzluqdur. Həmçinin, mənbə deposunda komponentin ictimai reyestrdə dərc olunmuş versiyalarına uyğun etiketlər və ya buraxılışlar yaratmaq kimi yaxşı təcrübələrə riayət etməkdir. Mənbə deposu müəyyən bir yerdə olduqda commit buraxılış etiketlənir və sonra birdən bir versiya onu izləmir, təkcə bu, komponentin ləkələnə biləcəyinə dair güclü dəlildir: pis aktyor komponenti dərc etmək üçün istifadə edilən hesabı ələ keçirmiş ola bilər, lakin mənbə kodu deposunda yazma icazəsi yoxdur). Bir çox hücumlar bu qaydalardan istifadə etməklə müntəzəm olaraq aşkar edilir: məsələn, Ledger hücumu bu istiqamətdə asanlıqla aşkar edilə bilər. Buna görə də, kontekst təhlili nəşr prosesindəki bu cür anomaliyaları müəyyən edir.

Asılılıq Firewall

Başqa bir yanaşma, proqram təminatınızda istifadə olunan bütün asılılıq qrafikləri üçün komponentlərin hərtərəfli ağ siyahısına sahib olmaqdır, buna görə də istənilən quruluşda pipeline Təşkilatınızda yalnız təsdiq edilmiş komponent versiyaları quraşdırıla və istifadə edilə bilər.firewall"icazə verilən komponent versiyaları üçün tarballs-ın təqdim edildiyi (keşlənmiş və ya proksi edilmiş) daxili reyestrdən istifadə etməklə tətbiq olunur. Xahiş edirik unutmayın ki, ağ siyahıya əlavə edilə bilməsi üçün hər hansı yeni versiyanı kifayət qədər təhlükəsiz kimi təsnif etmək texnologiyanız yoxdursa, heç bir ağ siyahı işləməyəcək. 

Nəzərə alın ki, erkən xəbərdarlıq (yeni versiya dərc edildikdən sonra mümkün qədər tez aşkarlama), quruluşa təsir edən komponenti bloklamaq üçün həmin məlumatdan proaktiv şəkildə istifadə etməyin bir yolu ilə birləşdirilməlidir. pipelines və ya geliştirici maşınları [4]Biz buna “asılılıq firewall": avtomatlaşdırılmış qurğuları zərərli paketlərdən qorumaq üçün karantin mexanizmi. Daxili paketlər və görüntü reyestrləri təşkilatları xarici şərdən təcrid etmək üçün yaxşıdır, lakin karantinin effektiv olması üçün kifayət qədər güclü dəlillər lazımdır. 

İşləmə Müddəti Sandbox

Nəşr zamanı aşkarlama üçün alternativ bir yanaşma, icra zamanı davranışı təhlil etməkdir. Məqsəd, proqram təminatından gözlənilən davranışı əldə etmək və aşkar edilən hər hansı bir anomaliyanı aşkar etmək (və ya bloklamaq)dır. Bu fəaliyyət xətti, monitorinq və ya bloklama üçün icra müddətini ölçmək problemi ilə üzləşir və zərərli komponent zərərvericisinə qarşı qorunma mexanizmlərinin arsenalına əlavə ediləcək ümidverici bir fikirdir.

Hərtərəfli Strategiya Qurulması

Tövsiyə olunan strategiya, proqram təminatının hazırlanması prosesində müxtəlif üsulları birləşdirməli, daxil olan zərərli komponentləri bloklamaq üçün versiya yeniləmələrinə nəzarəti ələ almalıdır. Əhəmiyyətli olan zəifliklərin düzəldilməsi üçün yeniləmə versiyaları ilə avtomatik yoluxmanın qarşısını almaq üçün versiyaların pinlənməsini təmin etməliyik; versiya yeniləmələri zamanı birbaşa və dolayı asılılıqların sürətli və səmərəli qiymətləndirilməsi, onların zərərli proqram təminatına məruz qalmadığına dair kifayət qədər dəlil əldə etmək üçün. Məlum zərərli komponentlərdən asılı olan proqram təminatının qurulması bloklanmalıdır. Və hamısı tətbiq olunmalıdır.

Mümkün olduqda, versiya sancmasından istifadə edin, çünki bu, quruluşları daha çox təkrarlana bilən edir. Nəzarət olunan, əl ilə təsdiqlənmiş versiya qabarıqlıqları ilə versiya sancılmasıköməkçi texnologiya ilə dəstəklənir, yeniləmənin zərərli proqram təminatını gətirib-gətirmədiyini və ya proqram təminatını sıradan çıxarıb-çıxarmadığını qiymətləndirməli və zəifliklərin düzəldilməsi üçün yeniləməni zərərli proqram təminatının yoluxmasının qarşısını almaqla uzlaşdırmalıdır. Alətlər burada kömək edə bilər: (1) hansı zəifliklərin həqiqətən vacib olduğunu (əlçatan və istismar edilə bilən, hücum edənlər tərəfindən hədəf alınma riski yüksəkdir) prioritetləşdirməklə, (2) mövcud komponent istifadəsinə uyğun olan və proqram təminatını sıradan çıxarmayan hədəf versiyalarını seçməklə, (3) zərərli davranış ehtiva etməyən hədəf versiyalarını seçməklə və (4) birbaşa və dolayı asılılıqlar üçün versiya yeniləməsini tez bir zamanda təsdiqlənə bilən manifest fayllarında dəyişikliklər təklif etməklə. (3) addım zərərli komponentlər haqqında mümkün qədər dərc vaxtına yaxın xüsusi məlumatlara ehtiyac duyur.

Asılılıqların yenilənməsi prosesi olmalıdır zorlatəsdiqləndi bütün yerlərdə. Proses sənədləşdirilməli və bütün cəlb olunmuş tərəflər təlim keçməlidir, çünki proqram təminatının hazırlanması və qurulması/yerləşdirilməsi çox vaxt kənara çıxarılır. CI/CD pipelines müvafiq olaraq dəyişdirilməlidir ki, avtomatlaşdırma zərərli dolayı asılılığın quruluşa daxil olmasına imkan verməsin: guardrails Asılılıqda potensial zərərli proqram təminatına dair kifayət qədər dəlil varsa, quruluşu bloklamaq tövsiyə olunan yoldur. 

Əgər təşkilatınızın icazə verilən komponent versiyalarını saxlamaq üçün təhlükəsizlik proksi kimi fəaliyyət göstərən daxili reyestri varsa, tələb olunan komponenti icazə siyahısına əlavə etməzdən əvvəl yoxlamaq üçün (digər meyarlara əlavə olaraq) zərərli komponentlər haqqında məlumat əldə etməlisiniz. 

Açıq mənbəli proqram təminatından təhlükəsiz şəkildə istifadə etmək asan deyil və zərərli proqram faktoru tam nəzərə alınmalı, zəifliklərin idarə olunmasına da oxşar səy göstərilməlidir.

Bir son qeyd: Mənbə mənşəyiKomponentin qurulma zamanı yaradılan proqram təminatı təsdiqləmələri şəklində, artefaktı (komponent tarballı) onu yaradan mənbələr və qurulma prosesi ilə izləmək səylərində başqa bir əsas hissədir. Qeyd edək ki, mənbə anlıq görüntüsü + qurulma mühiti ilə əlaqəli proqram təminatı artefaktı (etibarlı qurulma sistemi tərəfindən imzalanmışdır) arasındakı bu əlaqə, komponentin zərərli davranış ehtiva etməməsinin qarşısını almır, əksinə zərərli proqram təminatı yerləşdirməsini çətinləşdirir. Açıq mənbəli komponentləri istehlak etmək üçün mənbə təsdiqləməsini ümumi tələb etmək uzun müddət çəkəcək və yalnız bu yaxınlarda NPM-ə əlavə edildiEtibarlı quraşdırma və yerləşdirmə sistemlərini müdaxiləyə davamlı etmək və ya quruluşda hər hansı bir müdaxilənin aşkarlanmasını təmin etmək bu yazının əhatə dairəsindən kənarda olan başqa bir mövzudur. 

Əlavə oxu

Növbəti epizod Açıq Mənbə Zərərli Paketlər: Xygeni Yanaşması Xygeni-də izlədiyimiz strategiyanı bizim üçün təqdim edəcək Zərərli proqram təminatı üzrə erkən xəbərdarlıq (MEW) sistemi. İctimai paket və şəkil reyestrlərindəki yeni paket versiyaları skan edilir və statik, dinamik, imkanlar və kontekstual təhlilin kombinasiyasından istifadə etməklə sübutlar əldə edilir. İstifadəçi nüfuzu və mənbə kodu depolarındakı dəyişikliklərin tarixi ilə birləşdirilmiş sübutlar, komponentin yüksək riskli və ehtimal ki, zərərli kateqoriyalara tamamilə avtomatlaşdırılmış şəkildə təsnif edilməsinə imkan verir. Sistem, yalançı müsbət nəticələri minimuma endirmək üçün paketlərdən toplanan keçmiş sübutlardan öyrənir. 

Abunə olunmuş təşkilatlar zərərli versiya təsnif edildikdə birbaşa və ya dolayı yolla istifadə etdikləri komponentlər üçün xəbərdarlıq bildirişi alırlar. Daha sonra analitiklərimiz tərəfindən təsnifatı təsdiqləyən və ya rədd edən əl ilə təhlil aparılır. Təsdiqlənmiş zərərli proqram üçün ictimai reyestr bildiriş alır ki, öz təhlilini apara bilsin və adətən zərərli versiyanı silsin və ya sözügedən istifadəçi hesabını bloklamaq və ya silmək kimi əlavə tədbirlər görsün.

NPM, PyPI, GitHub və açıq mənbəli ekosistemdəki digər əsas infrastrukturlara yeni zərərli komponentin zərərli proqram təsdiqlənənə və reyestrdən çıxarılana qədər aktiv qalma müddətini azaltmaqda necə kömək etdiyimizi izah edəcəyik. Həmçinin təşkilatların açıq mənbəli komponentləri əhatə edən proqram təminatı təchizatı zənciri hücumlarına qarşı daha yaxşı qorunma əldə etmək üçün MEW sistemindən necə faydalana biləcəklərini izah edəcəyik.

  • [1] Hər halda, komponent istifadəçiləri xəstəlik aradan qaldırılması üçün komponent tarballının keşlənib-kəşf edilmədiyini və ya bir yerdə, məsələn, daxili reyestrdə qeydiyyatdan keçib-keçmədiyini yoxlamalıdırlar.
  • [2] Paketlənmiş komponent, məzmununu və metaməlumatlarını, mənbə və ya kompilyasiya edilmiş kodunu, quraşdırma skriptlərini və test dəstləri kimi əlavə elementləri qablaşdırma formatına uyğun olaraq və adətən sıxılmış formada elan edən bir manifestdən ibarətdir. Buna "komponent tartopu" deyilir.
  • [3] Zərərli şəxs reyestrdəki pozuntu səbəbindən dərc olunmuş komponenti dəyişdirə bilsə belə, sadə kriptoqrafik daycest təhlil aparıldıqdan sonra tartopdakı hər hansı bir dəyişikliyi aşkar edə bilər.
  • [4] Unutmayın ki, bəzi zərərli komponentlər quraşdırma zamanı işləyir, buna görə də bu, zərərli komponent olan X ilə bilmədən "npm install X" əmrini işlədən geliştirici qovşaqlarına təsir göstərə bilər.  

Açıq Mənbə Zərərli Paketlər: Problem

Zərərli Paketlərin Anatomiyası: Trendlər Nələrdir?

sca-tools-proqram-kompozisiya-analiz-alətləri
Proqram təminatı risklərinizi prioritetləşdirin, aradan qaldırın və təhlükəsizləşdirin
Pulsuz Hesabınızı əldə edin.
Kredit kartı tələb olunmur.

Proqram təminatınızın hazırlanması və çatdırılmasını təmin edin

Xygeni Məhsul Dəsti ilə