ачык булактуу пакеттер

Ачык булактуу зыяндуу пакеттерден коргоо: эмне иштебейт (иштебейт)

Бул үчүнчү эпизод катар макалалар программалык камсыздоо чынжырына жасалган эң кеңири таралган чабуулдардын түрлөрү жөнүндө: коомдук реестрди кыянаттык менен колдонгондор ачык булак программалык камсыздоонун компоненттери. Мурунку эпизоддо талдоо жүргүзгөндөн кийин “Зыяндуу пакеттердин анатомиясы: тренддер кандай?"Жаман иш-аракеттер жаңы же мурда жарыяланган компоненттерге зыяндуу жүрүм-турумду кантип киргизгенине карабастан, биз өрт өчүрүү курткаларыбызды кийип, ушул жол менен жеткирилген зыяндуу программалык камсыздоону кантип ийгиликтүү бөгөттөй аларыбызды же болбосо, туура эмес мамиле кылгандыктан, потенциалдуу олуттуу киберкокусту кантип чечүү керектигин карап көрүүгө даярбыз."

Коопсуздукка кызыккан адистердин көпчүлүгү бул коркунучту кантип чечүү керектиги жөнүндө ойлору бар. Коопсуздук менеджерлеринин тартынбай мындай деп айтканын уктук SCA куралдар пакеттин версиясы зыяндуу программа экенин сизге мурунтан эле айтып беришет. Же болбосо, алар белгилүү, жогорку деңгээлде каралып чыккан программалык камсыздоо компоненттерине көз каранды, мында ар кандай зыяндуу программа тез арада аныкталып, алынып салынат. Алар автоматтык түрдө алсыздыкты оңдоо үчүн ачык кичинекей/жамалуу версияларды колдонушат жана бул ачык булактан көз карандылыктын тобокелдигин азайтуунун туура, сунушталган жолу, ""эрте жамалоо, тез-тез жамалоо”Принциби. 

Бул эпизоддо биз бул идеялардын эмне үчүн туура эмес экенин жана мындай туура эмес түшүнүктөр бул чабуул механизминин популярдуулугуна жана уюмдар башынан өткөрүп жаткан чоң тобокелчиликке кандайча салым кошуп жатканын карап чыгабыз. Биз эмне иштейт, кайсы күч-аракет жана ресурстар жумшалат деген суроо менен аяктайбыз.

Жалпы Түшүнбөстүктөр

Программалык камсыздоонун коопсуздугу боюнча саякатыбыз учурунда биз чабуул ыкмаларынын өнүгүп жатканын жана коопсуздукка маани берген адамдардын ар кандай идеяларын көрдүк. Уюмдар көп учурда бул коркунучка каршы эмне иштээрин туура эмес түшүнүшөт, андыктан алгач эмне иштебей турганын карап чыгабыз, төмөндөгү туура эмес түшүнүктөрдүн толук эмес тизмеси келтирилген.

Жаңылыш түшүнүк №1: SCA куралдар зыяндуу компоненттер жөнүндө мурунтан эле кабарлап жатышат

Чындыгында! Бирок фактыдан кийин... Эгерде элемент программалык камсыздоону түзүүдө колдонулган болсо жана жаман актерлор иштеп чыгуучуда же CI/CD хост. Жашыруун маалыматтар чыпкаланып, кошумча зыяндуу программалар жүктөлүп алынып, орнотулган болушу мүмкүн, жана, балким, душман капталга жылып, башка жерден кирүү мүмкүнчүлүгүн алгандыр. 

Программалык камсыздоонун курамын талдоо (SCA) куралдары потенциалдуу белгилүү аялуу жактарын аныктоо үчүн иштелип чыккан. Заманбап куралдар сигнал-ызы-чуу катышын жогорулатуу менен эң сонун иш аткарышат, ал аялуу жакка чындыгында жетүүгө болобу же пайдаланууга болобу, аныкташат. Бирок алар жаңы зыяндуу программаларга каршы пайдасыз. Зыяндуу компонентти нөлдүк күндүк аялуу катары элестетиңиз: анын зыяндуу жүрүм-туруму аныкталганда гана, компонент холдингдик реестрге кабарланат, ал коопсуздук тобу тарабынан каралып чыккандан кийин зыяндуу деп тастыкталып, реестрден алынып салынат. [1]

Ошол учурда дүйнө (анын ичинде SCAс) компонентти (же бар компоненттин айрым версияларын) орнотуу же колдонуу жакшы эмес экенин билет. Бирок бул компонент реестрден жеткиликтүү болбогон учурда болот.Үчүнчү тараптын компоненттеринде, же ал тургай реестр тарабынан зыяндуу деп классификацияланган компоненттерде менин алсыздыктарым бар экенин билүү жакшы, бирок тилекке каршы SCA же жалпы аудит куралдары бул контекстте жардам бербейт. Келбесе SCA/audit куралы сиздин уюмуңузда колдонулаардан мурун компоненттин зыяндуу экенин алдын ала биле алат.

Эсиңизде болсун, зыяндуу ачык булактуу компоненттерге каршы ар кандай чечим аларды аныкташы керек учуп баратканда, компонент реестрде жарыяланган учурдан тартып, компонент (версия) сиздин уюмуңузда биринчи жолу колдонулган учурга чейин. Буга транзитивдик компоненттер да кирет.  

Туура эмес түшүнүк №2: Орнотуу скрипттерин куруу учурунда башкаруу ачык булактуу компоненттерден зыяндуу жүрүм-турумдун алдын алат

Ар кандай пакет менеджерлери скрипттерди иштетүү мүмкүнчүлүгүн сунушташат (tarball компонентине киргизилген [2]), ар кандай платформаларда талап кылынган элементтерди компиляциялоо, кодду түзүү же тесттерди жүргүзүү сыяктуу мыйзамдуу себептерден улам, жана эгерде tarball файлына зыяндуу скрипттер кошулса же чабуулчу жакшы скрипттин ордуна зыяндуу скриптти иштете алса, аларды жаман адамдар кыянаттык менен колдонушу мүмкүн экенин баарыбыз билишибиз керек.

Муну билип туруп, биз пакет менеджерин скрипттерди этибарга албай коюуга конфигурациялай алабыз. Мисалы, NPM менен –Скрипттерге көңүл бурбаңыз желек (же конфигурация касиети .npmrc file) орнотуу учурунда скрипттерди өткөрүп жиберет. Бул кээ бир көйгөйлөрдү жаратышы мүмкүн, анткени скрипттерди иштетүү көптөгөн экосистемаларда кеңири таралган: Айрым пакет менеджерлери скрипттин аткарылышын өчүрүүгө да уруксат беришпейт (ишара: "Кайсы пакет менеджерлери орнотуу скрипттеринин аткарылышын өчүрүүгө уруксат бербейт?"Сиздин сүйүктүү жасалма интеллектиңизде). Бирок бул жалпысынан коргобойт (биз өткөрүп жиберүүнү өчүрүү конфигурациясынын бардык жерде болушун камсыз кылышыбыз керек). 

Зыяндуу жүрүм-турум орнотуу скрипттеринде эмес, аткаруу учурунда аткарылуучу программалык камсыздоодо жайгашканда, бул параметрдин өзү бизди коргобойт. 

Жаңылыш түшүнүк #3: Версияны кадоо зыяндуу компоненттердин орнотулушуна жол бербейт

Жамап салууну эрте баштоо менен көп учурда жасоонун ортосунда айырма бар ачык версиялары (коопсуздук оңдоолору үчүн жеткиликтүү болгондо, пакет менеджерине жаңы жаңыртууларды автоматтык түрдө орнотууга уруксат берүү) жана версияны кадоо (программалык камсыздоонун белгиленген версиясындагы бардык түз жана транзитивдик көз карандылыктарга ээ). Коопсуздук принциптери өжөр жана кээде карама-каршы келет, мисалы, "оңдоону эрте, оптомдорду тез-тез жаңыртуу" жана "Жаңыртууга жеңил мамиле кылууга болбойт"Айрым пакет менеджерлери сервер диапазондору менен сунушталган ыкма менен автоматтык түрдө жаңыртууларды жасашат. Эгер сиз зыяндуу жаңыртууларды да алгыңыз келсе, эң сонун! Ооба, мүмкүн болушунча тезирээк алсыздыктарды жапкан коопсуздук оңдоолорун алуу үчүн компоненттерди жаңыртуу керек, бирок ... пакет менеджерине муну автоматтык түрдө жасоого эч качан жол бербеңиз.

Жаңылыш түшүнүк №4: Ишенимдүү компоненттерди колдонуу коопсуз. Ар кандай зыяндуу версия тез табылып, ачыкка чыгарылып, жок кылынат.

Эмне үчүн компонентке ишенүүгө болот? Балким, ал абдан популярдуу болгондуктан, көптөгөн көз айнектер алсыздыктарды издейт, тейлөөгө көптөгөн салым кошуучулар бар, жана баарын кылдаттык менен карап чыккан бир нече негизги тейлөөчүлөр бар. pull requestsЧындыгында таптакыр башкача. Айрым маанилүү компоненттерди бир гана, акы төлөнбөгөн иштеп чыгуучу тейлейт. Кеңири колдонулган фреймворктор... бир нече туруктуу катышуучулар, саны тездик менен азайып баратат commits ар бир тейлөөчүгө (популярдуу долбоорлордо бир нече драйвер аркылуу аткарылган салым кошуучулардын узун тобу бар) commit жана эч качан кайтып келбейт). Жана бир гана тейлөөчүсү бар популярдуу долбоорлор көп.

Өзүңүздүн мындай деп жатканыңызды элестетиңиз "Оо, биз Spring Boot / Angular / React / PyTorch / расмий базалык Docker сүрөттөрүн колдонуп жатабыз, андыктан сиз айтып жаткан тобокелдик өтө төмөн." Балким, бул чындыктыр, биз, коопсуздук камсыздоочулары, дайыма коркутуп-үркүтүп жатабыз жана талаш-тартыштуу тобокелдикти азайтуу үчүн иштеп чыгуучу топторго кийлигишүү - бул маанисиздик. Сиз тобокелдикти кабыл алуу абзацына (кийинки бөлүмдө) секирип, баары бүттү деп азгырылышыңыз мүмкүн. Тилекке каршы, эң популярдуу компоненттер - бул жаман иш-аракеттердин буталары, мисалы, популярдуу... PyTorch китепканасына кол салуу болду Мурда.

«Дароо табылды, ачыкка чыгарылды жана алынып салынды».  Жаңы зыяндуу компоненттин коомдук реестрден алынып салынышы үчүн бир нече күн талап кылынат. Реестрлер компоненттин версиясын алып салууда этият болушат, бул жакшы. Биздин тажрыйбабыз көрсөткөндөй, биз тараптан кабарлангандан кийин, реестрдин жабыркаган версияны алып салууга кеткен орточо убакыт 39 саатты түзөт, бул бир жарым күндөн ашык убакытты түзөт. Зыяндуу компоненттер бар, алар реестрде алынып салынганга чейин биз алгачкы билдирүү жасагандан бир жума өткөндөн кийин болот. Ал эми кээ бир учурларда, компонент жабырлануучу же окуяларга жооп кайтаруу компаниясы компонентке байланыштуу окуя жөнүндө билдиргенден кийин гана алынып салынат. 

Зыяндуу компоненттерге каршы эмне иштебейт

Кандай гана болбосун конкреттүү эмес ыкма ийгиликсиздикке учурайт. Бул сөзсүз түрдө, сиз бул коркунучка байланыштуу тобокелдикке каршы натыйжалуу чараларды көрбөй жатасыз. 

салттуу SCA куралдар сизге белгилүү зыяндуу программалар жөнүндө айтып берет, бирок чоң таасир терезесине ээ. Эгерде алар зыяндуу компоненттерди мажбурлап бөгөттөө менен зыяндуу программаларды алдын ала аныктабаса, алар бул коркунучка каршы иштебейт. 

Орнотуу скрипттерин өчүрүү жардам бериши мүмкүн, бирок компонент орнотулушу керек болгон бардык жерде аткарылышы керек. Версияларды кадоо да ушундай, анткени версияларды коопсуз баштапкы абалдан түбөлүккө кадоо мүмкүн эмес.

Популярдуу компоненттерге жетиштүү көңүл бурулуп, аларды жеткирүү чынжырындагы чабуул учурунда кандайдыр бир зыяндын алдын алуу үчүн дээрлик заматта аныктоосуз күтүлбөгөн жүрүм-турум менен сайып салууга болбойт деп ойлоо - бул наивдүү жана тобокелдүү. Сиз четте жашагыңыз келбейт, туурабы?

Эгер ушул жерден токтоп калсаңыз, анда тобокелдикти кабыл алуу сиз кыла турган жалгыз нерсе: бул деcisкоркунуч моделиңизде/тобокелдикти баалоодо документтештирилиши керек болгон нерсе, анын ичинде тобокелдикти кабыл алуунун негиздемеси жана анын мүмкүн болгон кесепеттери. Бул тууралуу жетекчиликке жана башка тиешелүү тараптарга жеткирүү менен маалымдуулукту жогорулатуу. Айрымдары күтүлбөгөн жагдай зыяндуу компонент программалык камсыздооңузга орнотулганда же кошулганда пландаштырылышы мүмкүн, бирок бул кыйын, анткени чабуулчулар көптөгөн жолдорду басып өтүшү керек. Зыяндуу компонентти колдонууга негизделген жеткирүү чынжырынын чабуулунун чоо-жайы окуянын коомчулукка ачыкка чыгарылышын кескин өзгөртөт, бул, балким, сиздин уюмуңуздун жөнгө салуу базасында милдеттүү. Сиз ошондой эле кайрыла аласыз компенсациялык башкаруу элементтери or өткөрүп берүү тобокелдиги мисалы, камсыздандыруу менен.

Бирок, коркунучту жоюучу көзөмөл чаралары бар жана эгер сиз тобокелдикти кабыл алууга канааттанбасаңыз, аларды карап чыгуу керек. Сураныч, андан ары окуңуз.

Зыяндуу компоненттерди колдонуу менен жасалган чабуулдарга каршы эмне иштейт

Катуу версияны иштетүү

Зыяндуу программаны албастан, алсыздыктарды жок кылуу зарылдыгын тең салмактоо үчүн, көзөмөлдөнгөн жана маалыматтуу версияларды көбөйтүү менен версияларды кадоо - бул эң туура жол. Бирок №3 туура эмес түшүнүктү унутпаңыз: Версияны кадоо гана жаңы версиялардан келген зыяндуу кодду бөгөттөө үчүн жетишсиз, анткени келечекте сиз версияларды түз же кыйыр түрдө жаңыртышыңыз керек болот. Ошол учурда сизге бардык өзгөртүлгөн версияларда зыяндуу программа жок экенине жетиштүү күчтүү далилдер керек.

Эрте эскертүү

Зыяндуу компоненттердин көйгөйүнө бир мамиле - бул эрте эскертүү системасы (бул жерде ... деп аталат) Зыяндуу программалык камсыздоо боюнча эрте эскертүү же MEW), мында жарыяланган жаңы версиялар (жаңы же бар компоненттер үчүн) аныктоо системасы тарабынан талданат, ал жетиштүү далилдер табылганда жаңы версияны потенциалдуу зыяндуу деп классификациялашы мүмкүн. 

Автоматташтыруу бул жерде абдан маанилүү, анткени учурдагы жарыялоо ылдамдыгында бардык жаңы компоненттерди кол менен карап чыгуу мүмкүн эмес. Ошондуктан, аныктоо кыймылдаткычы ар кандай ыкмаларды, анын ичинде статикалык, динамикалык жана мүмкүнчүлүктөрдү талдоону, колдонуучунун кадыр-баркын жана компоненттин метадайындары менен tarball мазмунунун ортосундагы же tarball менен компонент келип чыккан деп болжолдонгон булак репозиторийинин ортосундагы айырмачылыктардан келип чыккан далилдерди айкалыштырышы керек.

бар бир караңгы зона жарыялоо убактысы менен кыймылдаткыч компоненттин мазмунун талдаган убакыттын ортосундагы убакыт, бирок ал бир нече мүнөттөн ашпашы керек. Схеманы өзгөртүүгө болот, мисалы, жаңы компоненттерди орнотууга жана программалык камсыздоону түзүүдө колдонууга уруксат берүүдөн мурун алардын талданышын күтүү менен. pipelines, же зарылчылыкка жараша аларды талдоо. Берилген версиядагы компонент өзгөрүлбөйт [3], ошондуктан аны бир гана жолу талдоо керек.

Толук автоматташтыруу мүмкүн эмес, ошондуктан зыяндуу компоненттер үчүн коопсуздукту карап чыгуу зарыл. Санариптик панацеяны жактагандардан сак болуңузШектүү компонентте зыяндуу программа бар же жок экенин ырастоодо акыркы сөздү айтуу үчүн жасалма интеллект жана машиналык окутуу жетиштүү деңгээлде өнүккөн эмес. Албетте, машиналык окутуу аныктоо системасында алынган чийки далилдердин негизинде кириш компонентин классификациялоодо негизги ролду ойнойт, бирок компонент "карантинге" коюлгандан кийин, акыркы сөз зыяндуу компоненттер боюнча тажрыйбасы бар коопсуздук тобу тарабынан кол менен карап чыгууда калат. Бул ар кандай потенциалдуу зыяндуу программаны тастыктайт же аны коопсуз деп кайра классификациялайт. Ал эми убакыт аралыгы сааттардын диапазонунда. 

Реестр зыяндуу версия/компонент жөнүндө отчет берет; андан кийин реестр ырастоо үчүн карап чыгат жана коомчулукка ачыктоого жана реестрден алып салууга өтөт. Айрым реестрлер коопсуздукту сактоо пакетин сактайт. Бул жердеги убакыт аралыгы жарыяланган күндөн берки күндөр же жумалар, башкача айтканда, "убакыт жаша"Же"экспозиция терезесикөпчүлүк зыяндуу компоненттер үчүн.

Компоненттин версиясы зыяндуу экенин билүүгө болобу?

Андыктан, эрте эскертүү үчүн, биз бул суроого канааттандырарлык жооп беришибиз керек: Китепкананын же пакеттин зыяндуу (эмес) экенин кантип билсем болот? Зыяндуу жүрүм-турумдун жетиштүү далилдерин кантип чогултса болот? Мүмкүн, бирок кыйын, анткени душмандар аныктоодон качуу үчүн көп тапкычтыкты колдонушат. Ар кандай ыкмалар бар, алардын ар биринин артыкчылыктары жана кемчиликтери бар.

Статикалык анализ компонентти иштетпестен чабуулчулар колдонгон ыкмалардын бардыгын текшерип, деобфускациялоо же чечмелөө сыяктуу алдын ала иштетүү тапшырмаларын аткара алат. Чабуулчулар өздөрүнүн жаман иштерин жашырууга аракет кылып жатканда, бурмалоо аракеттери чындыгында зыяндуу программанын далили болуп саналат (бирок мыйзамдуу компоненттер интеллектуалдык менчикти сактоо үчүн кодду бурмалап, "каршы келерин" эске алыңыз.ачык булак"). Күчтүү обфускациясы бар өтө татаал чабуулдардын аз гана бөлүгү кумкоргонго муктаж, бирок мындай күчтүү обфускация кара ниеттиктин ачык белгиси болуп саналат. Сураныч, кадимки экенин эске алыңыз. SAST куралдар арткы эшиктер сыяктуу зыяндуу ниеттер үчүн эмес, кокустан болгон алсыздыктар үчүн иштелип чыккан.

Динамикалык анализ компонентти иштетип, аткаруу убактысын инструменттештирүү менен жоопту текшерет, адатта, кумкоргон чөйрөсүн камсыз кылуу менен. Белгилүү бир шарттарда ишке ашырылган зыяндуу жүрүм-турум байкалбай калышы мүмкүн: зыяндуу программалык камсыздоо сыяктуу качуу ыкмаларын колдонушу мүмкүн экенин эске алыңыз. Виртуалдаштыруу/Кумкоргондон качуу текшерүүдөн өтпөгөн учурда гана иштетүү, ошондой эле кандайдыр бир статикалык анализ кыймылдаткычы үчүн зыяндуу аракеттердин белгиси.

Мүмкүнчүлүктөрдү талдоо компонент эмне кылаарын эске алат: ал кайда туташат, кайсы файлдарга кирет, кайсы буйруктар же программалар иштетилет, терминал же түзмөктүн киргизүү/чыгаруу иштери аткарылат же кайсы системалык чакыруулар чакырылат. Жүрүм-турумдун бул манжа изин (бар болгон компонент үчүн) ар кандай версияларда салыштырууга болот, андыктан күтүлбөгөн жүрүм-турум аныкталганда, бул далилдер жаңы версияга киргизилген потенциалдуу зыяндуу аракеттерге шектенүүнү жаратышы мүмкүн. Бул ыкма коопсуздук аналитиктери потенциалдуу зыяндуу программалык камсыздоого туш болгондо аткарган триаж кадамдарын аткарат: текшерүүнү колдонуу менен саптар же ушул сыяктуу куралдар. Бул ыкма зыяндуу жүрүм-турумду триггер шарттарына карабастан аныктайт жана булак коду жок болгондо иштейт.

Контексттик анализ компонент кантип жана ким тарабынан жарыяланганы тууралуу маалымат чогултат. Жаман иш-аракеттердин өнөктүктөрү көбүнчө эч кандай катуу текшерүү процессинен өтпөгөн жаңы колдонуучу аккаунтун (аккаунттарын) колдонушат. Мурунку аракеттерди көзөмөлдөө, негизинен, потенциалдуу компромисске алып келиши мүмкүн болгон аномалиялар үчүн негизги колдонуучу жөнүндө түшүнүк берет. Кадыр-баркка ээ болуу абдан кыйын, ал эми жоготуу абдан оңой! Мурунку аракети жок колдонуучу нейтралдуу, бирок карма кара ниеттикти куугунтуктайт. Хакерлик кылгандарды же жарыялоо маалыматтары уурдалган кадимки колдонуучуларды кылдаттык менен көзөмөлдөө керек.

Дагы бир контексттик маалымат - бул компонент tarball түзүү үчүн колдонулган деп болжолдонгон булак репозиторийи менен tarballдын мазмунунун ортосундагы ар кандай айырмачылыктар. Ошондой эле, коомдук реестрде жарыяланган компоненттин версияларына дал келген булак репозиторийинде тегдерди же релиздерди түзүү сыяктуу жакшы тажрыйбаларды сактоо. Булак репозиторийи белгилүү бир жерде болгондо commit релиз деген тег менен белгиленет, анан күтүлбөгөн жерден бир версиясы аны аткарбай калат, бул компоненттин бузулган болушу мүмкүн экендигинин күчтүү далили: жаман колдонуучу компонентти жарыялоо үчүн колдонулган аккаунтту бузуп алган болушу мүмкүн, бирок баштапкы код репозиторийинде жазууга уруксаты жок). Көптөгөн чабуулдар ушул эрежелерди колдонуу менен үзгүлтүксүз аныкталат: мисалы, Леджердин чабуулу ушул сыяктуу жолдор менен оңой эле аныктоого болот. Ошондуктан, контексттик талдоо жарыялоо процессиндеги мындай аномалияларды аныктайт.

Көз карандылыкты коргоочу брандмауэр

Башка ыкма - программалык камсыздооңузда колдонулган бардык көз карандылык графиктери үчүн компоненттердин толук ак тизмесине ээ болуу, ошондуктан каалаган түзүлүштө pipeline уюмуңузда иштетилген компоненттердин бекитилген версиялары гана орнотулуп жана колдонулушу мүмкүн.тармактык"уруксат берилген компонент версиялары үчүн тар шарлары берилген (кэштелген же проксиленген) ички реестрди колдонуу менен ишке ашырылат. Сураныч, кандайдыр бир ак тизме иштебей турганын эске алыңыз, эгерде сизде кандайдыр бир жаңы версияны ак тизмеге кошууга боло тургандай коопсуз деп классификациялоо технологиясы болбосо. 

Эске алыңыз, эрте эскертүү (жаңы версия жарыялангандан кийин мүмкүн болушунча тезирээк тез аныктоо) курулмага таасир этүүчү компонентти бөгөттөө үчүн ал маалыматты алдын ала колдонуунун кандайдыр бир жолу менен айкалыштырылышы керек. pipelineже иштеп чыгуучулардын машиналары [4]Биз муну "көз карандылык брандмауэри": автоматташтырылган түзүлүштөрдү зыяндуу пакеттерден коргоо үчүн карантиндик механизм. Ички пакеттер жана сүрөт реестрлери уюмдарды тышкы жамандыктан коргоо үчүн жакшы, бирок карантинди натыйжалуу кылуу үчүн жетиштүү күчтүү далилдер зарыл. 

Иштөө убактысын кумдук менен башкаруу

Жарыялоо учурунда аныктоонун альтернативдүү ыкмасы - иштөө учурундагы жүрүм-турумду талдоо. Идея - программалык камсыздоодон күтүлгөн жүрүм-турумду кармап туруу жана табылган ар кандай аномалияларды аныктоо (же бөгөттөө). Бул аракеттин багыты мониторинг жүргүзүү же бөгөттөө үчүн иштөө убактысын инструменттештирүү көйгөйүн жаратат жана бул зыяндуу компоненттин зыянкечтеринен коргоо механизмдеринин арсеналына кошула турган келечектүү идея.

Комплекстүү стратегияны түзүү

Сунушталган стратегия программалык камсыздоону иштеп чыгуу процессинде ар кандай ыкмаларды айкалыштырып, кирүүчү зыяндуу компоненттерди бөгөттөө үчүн версия жаңыртууларын көзөмөлдөөнү талап кылат. Маанилүү болгон алсыздыктарды оңдоо үчүн жаңыртуу версиялары менен автоматтык түрдө инфекцияланбоо үчүн версияларды бекитүүнү камсыз кылышыбыз керек; версияларды жаңыртуу учурунда түз жана кыйыр көз карандылыктарды тез жана натыйжалуу баалоо, алардын зыяндуу программалар менен жабыркабагандыгынын жетиштүү далили болушу керек. Белгилүү зыяндуу компоненттерге көз каранды программалык камсыздоонун курулмалары бөгөттөлүшү керек. Жана баары аткарылышы керек.

Мүмкүн болсо, версияны кадап коюңуз, анткени ал курулмаларды кайталоону жеңилдетет. Башкарылуучу, кол менен бекитилген версиянын бүктөмдөрү менен версияны кадоо, жана жардамчы технологиянын жардамы менен, жаңыртуу зыяндуу программалык камсыздоону алып келеби же программалык камсыздоону бузабы же жокпу, баалап, алсыздыктарды оңдоо үчүн жаңыртууну зыяндуу программалык камсыздоонун жугушун болтурбоо менен шайкеш келтириши керек. Куралдар бул жерде жардам бере алат, (1) кайсы алсыздыктар чындап маанилүү экенине артыкчылык берүү (кол салуучулардын бутасына алынуу коркунучу жогору болгон, жетүүгө мүмкүн жана эксплуатациялануучу), (2) учурдагы компоненттик колдонууларга шайкеш келген жана программалык камсыздоону бузбаган максаттуу версияларды тандоо, (3) зыяндуу жүрүм-турумду камтыбаган максаттуу версияларды тандоо жана (4) тез бекитилиши мүмкүн болгон манифест файлдарындагы өзгөртүүлөрдү сунуштоо менен түз жана кыйыр көз карандылыктар үчүн версияны жаңыртууну тездетүү. (3) кадам зыяндуу компоненттер жөнүндө жарыяланган убактысына мүмкүн болушунча жакын маалымат талап кылат.

Көз карандылыктарды жаңыртуу процесси болушу керек ишке жана текшерилди бардык жерлерде. Процесс документтештирилиши керек жана катышкан бардык тараптар окутулушу керек, анткени көп учурда программалык камсыздоону иштеп чыгуу жана түзүү/жайгаштыруу тышкы булактарга өткөрүлөт. CI/CD pipelines тиешелүү түрдө өзгөртүлүшү керек, ошондо автоматташтыруу зыяндуу кыйыр көз карандылыктын түзүлүшкө кирип кетишине жол бербейт: guardrails Эгерде көз карандылыкта зыяндуу программанын болушу мүмкүн экендиги жөнүндө жетиштүү далилдер болсо, курууну бөгөттөө сунушталат. 

Эгерде сиздин уюмуңузда уруксат берилген компоненттин версияларын сактоо үчүн коопсуздук проксиси катары иштеген ички реестр болсо, суралган компонентти уруксат берилген тизмеге кошуудан мурун текшерүү үчүн зыяндуу компоненттер жөнүндө маалымат алышыңыз керек (башка критерийлерден тышкары). 

Ачык булактуу программалык камсыздоону коопсуздук менен колдонуу оңой эмес, жана зыяндуу программалык камсыздоонун факторун толугу менен эске алуу керек, ошондой эле алсыздыкты башкарууга да ушундай эле күч-аракет жумшоо керек.

Бир акыркы эскертүү: Булактын келип чыгышы, компонентти түзүү учурунда түзүлгөн программалык камсыздоону аттестациялоо түрүндө, артефактты (компоненттин тарболун) аны чыгарган булактар ​​жана түзүү процесси менен байланыштыруу аракетиндеги дагы бир маанилүү бөлүк болуп саналат. Белгилей кетчү нерсе, булактын сүрөтү + түзүү чөйрөсү менен байланышкан программалык камсыздоо артефактынын (ишенимдүү түзүү системасы тарабынан кол коюлган) ортосундагы бул байланыш компонентте зыяндуу жүрүм-турум жок экенине тоскоол болбойт, бирок зыяндуу адамдардын зыяндуу программаны киргизүүсүн кыйындатат. Ал эми ачык булактуу компоненттерди керектөө үчүн келип чыгышын текшерүүнү жалпы талап кылуу көп убакытты талап кылат жана бир гана жакында NPMге кошулдуИшенимдүү куруу жана жайгаштыруу системаларын өзгөртүүгө каршы коргоону камсыз кылуу же куруудагы кандайдыр бир өзгөртүүлөрдү аныктоого мүмкүндүк берүү - бул башка окуя, ал бул посттун алкагына кирбейт. 

Андан ары окуу

Кийинки эпизод Ачык булактуу зыяндуу пакеттер: Xygeni ыкмасы биз үчүн Xygeni компаниясында колдонгон стратегияны сунуштайт Зыяндуу программалык камсыздоо боюнча эрте эскертүү (MEW) системасы. Коомдук пакеттердеги жана сүрөт реестрлериндеги жаңы пакет версиялары сканерленет жана далилдер статикалык, динамикалык, мүмкүнчүлүктөр жана контексттик анализдин айкалышын колдонуу менен алынат. Далилдер колдонуучунун кадыр-баркы жана баштапкы код репозиторийлериндеги өзгөрүүлөрдүн тарыхы менен айкалышып, компонентти жогорку тобокелдиктеги жана, кыязы, зыяндуу категорияларга толугу менен автоматташтырылган классификациялоого мүмкүндүк берет. Система жалган позитивдерди минималдуу деңгээлге чейин азайтуу үчүн пакеттерден чогултулган мурунку далилдерди үйрөнөт. 

Жазылган уюмдар зыяндуу версия категорияланганда, түздөн-түз же кыйыр түрдө колдонуп жаткан компоненттери үчүн эскертүү алышат. Андан кийин биздин аналитиктер тарабынан кол менен талдоо жүргүзүлөт, ал классификацияны тастыктайт же четке кагат. Тастыкталган зыяндуу программа үчүн, коомдук реестрге кабар берилет, ошондо ал өзүнүн талдоосун жүргүзүп, адатта зыяндуу версияны алып салат же кошумча аракеттерди жасай алат, мисалы, тиешелүү колдонуучунун аккаунтун бөгөттөө же алып салуу.

Биз NPM, PyPI, GitHub жана ачык булактуу экосистемадагы башка негизги инфраструктураларга жаңы жарыяланган зыяндуу компоненттин зыяндуу программа экени тастыкталып, реестрден алынып салынганга чейин активдүү бойдон калуу убактысын кыскартууга кантип жардам берип жатканыбызды түшүндүрөбүз. Ошондой эле уюмдар MEW системасынан ачык булактуу компоненттерди камтыган программалык камсыздоо чынжырынын чабуулдарынан алда канча жакшы коргоого ээ болуу үчүн кандайча пайда ала алышат.

  • [1] Кандай болгон күндө да, компоненттин колдонуучулары компоненттин тарболу кэштелгенин же кайсы бир жерде, мисалы, ички реестрде катталганын текшериши керек, ошондо оору жок кылынат.
  • [2] Пакеттелген компонентке анын мазмунун жана метадайындарын, баштапкы же компиляцияланган кодун, орнотуу скрипттерин жана тесттик топтомдор сыяктуу кошумча элементтерди пакеттөө форматына ылайык жана адатта кысылган түрдө жарыялаган манифест кирет. Бул "компоненттин тарболу" деп аталат.
  • [3] Эгерде зыянкеч реестрдеги бузулуудан улам жарыяланган компонентти өзгөртө алса дагы, жөнөкөй криптографиялык дайджест талдоо жүргүзүлгөндөн кийин тарболдогу кандайдыр бир өзгөрүүнү аныктай алат.
  • [4] Эсиңизде болсун, кээ бир зыяндуу компоненттер орнотуу учурунда иштейт, андыктан ал X зыяндуу компоненти менен "npm install X" функциясын билбей иштетип жаткан иштеп чыгуучу түйүндөрүнө таасир этиши мүмкүн.  

Ачык булактуу зыяндуу пакеттер: көйгөй

Зыяндуу пакеттердин анатомиясы: тренддер кандай?

sca-tools-программалык-композициялык-талдоо-куралдары
Программалык камсыздооңуздун тобокелдиктерин артыкчылыктуу деп эсептеңиз, оңдоңуз жана коопсуздугун камсыз кылыңыз
Акысыз аккаунтуңузду алыңыз.
Насыя картасы талап кылынбайт.

Программалык камсыздоону иштеп чыгууну жана жеткирүүнү камсыз кылыңыз

Xygeni Product Suite менен