Սա երրորդ դրվագն է մի շարքում հոդվածների շարք ծրագրային ապահովման մատակարարման շղթայի ամենատարածված հարձակումների մասին՝ նրանք, որոնք չարաշահում են հանրային գրանցամատյանը բաց աղբյուր ծրագրային բաղադրիչներ։ Նախորդ դրվագում վերլուծելուց հետո «Վնասակար փաթեթների անատոմիա. Որո՞նք են միտումները։«Ինչպես են չարամիտ գործողները չարամիտ վարքագիծ ներարկում նոր կամ առկա հրապարակված բաղադրիչների մեջ, մենք պատրաստ ենք հագնել մեր հրդեհաշիջման բաճկոնները և ուսումնասիրել, թե ինչպես կարող ենք հաջողությամբ արգելափակել այս կերպ մատակարարվող չարամիտ ծրագրակազմը, կամ այլընտրանքորեն՝ զբաղվել պոտենցիալ լուրջ կիբեռմիջադեպով, քանի որ մենք սխալ մոտեցում ենք ցուցաբերել»։
Անվտանգությանը տեղյակ մասնագետների մեծ մասն ունի պատկերացումներ այս սպառնալիքի դեմ պայքարի մասին: Մենք լսել ենք անվտանգության մենեջերների, որոնք առանց վարանելու ասում են, որ SCA գործիքներն արդեն իսկ ձեզ տեղեկացնում են, թե երբ է փաթեթի տարբերակը վնասակար ծրագիր։ Կամ որ նրանք կախված են հայտնի, բարձր գնահատականներով ծրագրային բաղադրիչներից, որտեղ ցանկացած վնասակար ծրագիր անմիջապես կհայտնաբերվի և կհեռացվի։ Նրանք օգտագործում են բաց մանր/կարգերի տարբերակներ՝ խոցելիության շտկումներ ավտոմատ կերպով ստանալու համար, և դա բաց կոդով կախվածությունների ռիսկը նվազեցնելու ճիշտ, խորհուրդ տրվող միջոցն է՝ հետևելով «վաղ կարկատեք, հաճախ կարկատեք» սկզբունքը.
Այս դրվագում մենք կքննարկենք, թե ինչու են այս գաղափարները սխալ, և թե ինչպես են նման թյուրըմբռնումները նպաստում այս հարձակման մեխանիզմի ժողովրդականությանը և այն ճնշող ռիսկին, որին ենթարկվում են կազմակերպությունները: Մենք կեզրափակենք նրանով, թե ինչն է աշխատում, և որոնք են ներգրավված ջանքերն ու ռեսուրսները:
Ընդհանուր թյուրըմբռնումներ
Ծրագրային անվտանգության ոլորտում մեր ճանապարհորդության ընթացքում մենք տեսանք հարձակման տեխնիկայի զարգացումը և անվտանգությանը մոտ կանգնած մարդկանց գաղափարների լայն շրջանակ։ Կազմակերպությունները հաճախ սխալ են հասկանում, թե ինչն է աշխատում այս սպառնալիքի դեմ, ուստի նախ կքննարկենք, թե ինչն է չի աշխատում, որը համառոտ ներկայացված է սխալ պատկերացումների հետևյալ, ոչ սպառիչ ցանկում։
Սխալ պատկերացում #1: SCA գործիքներն արդեն հաղորդում են վնասակար բաղադրիչների մասին
Իսկապես! Բայց փաստից հետո… Երբ, հավանաբար, արդեն շատ ուշ է, եթե տարրը օգտագործվել է ծրագրային ապահովման կառուցման մեջ, և չարագործները արդեն իսկ հենարան են ձեռք բերել մշակողի կամ CI/CD Հոսթ։ Հնարավոր է՝ գաղտնիքները դուրս են բերվել, լրացուցիչ վնասակար ծրագրեր են ներբեռնվել և տեղադրվել, և հնարավոր է՝ թշնամին տեղաշարժվել է կողքից և արդեն մուտք է ստացել այլուր։
Ծրագրային ապահովման կազմի վերլուծություն (SCA) գործիքները նախագծվել են հնարավոր հայտնի խոցելիությունները հայտնաբերելու համար: Ժամանակակից գործիքները հիանալի աշխատանք են կատարում՝ բարձրացնելով ազդանշան-աղմուկ հարաբերակցությունը, որոշելով, թե արդյոք խոցելիությունը իրականում հասանելի է, թե շահագործելի: Սակայն դրանք անօգուտ են նոր վնասակար ծրագրերի դեմ: Մտածեք վնասակար բաղադրիչի մասին որպես զրոյական օրվա խոցելիության մասին. միայն այն դեպքում, երբ հայտնաբերվում է դրա վնասակար վարքագիծը, բաղադրիչը հաղորդվում է պահող գրանցամատյանին, որը անվտանգության թիմի կողմից վերանայումից հետո հաստատվում է որպես վնասակար և հեռացվում է գրանցամատյանից: [1].
Այդ պահին աշխարհը (ներառյալ SCAs) գիտի, որ բաղադրիչի (կամ գոյություն ունեցող բաղադրիչի որոշ տարբերակ(ներ)ի) տեղադրումը կամ օգտագործումը լավ բան չէ։ Սակայն սա այն դեպքում է, երբ բաղադրիչը հասանելի չէ գրանցամատյանում։Լավ է իմանալ, որ ես ունեմ խոցելիություններ երրորդ կողմի բաղադրիչներում, կամ նույնիսկ բաղադրիչներում, որոնք գրանցամատյանի կողմից դասակարգվել են որպես վնասակար, բայց, ցավոք, SCA կամ ընդհանուր աուդիտի գործիքները այս համատեքստում չեն օգնում։ Քանի դեռ SCA/audit գործիքը կարող է նախապես իմանալ, որ բաղադրիչը վնասակար է, նախքան այն ձեր կազմակերպությունում կօգտագործվի։.
Հիշե՛ք, որ վնասակար բաց կոդով բաղադրիչների դեմ ցանկացած լուծում պետք է հայտնաբերի դրանք։ թռիչքի ժամանակ, բաղադրիչի գրանցամատյանում հրապարակման և ձեր կազմակերպությունում դրա առաջին օգտագործման միջև ընկած ժամանակահատվածում։ Եվ դա ներառում է նաև անցումային բաղադրիչները։
Սխալ պատկերացում #2. տեղադրման սկրիպտների կառավարումը կառուցման ժամանակ կանխում է բաց կոդով բաղադրիչների վնասակար վարքագիծը
Տարբեր փաթեթների կառավարիչներ առաջարկում են սկրիպտներ գործարկելու հնարավորություն (ներառված են բաղադրիչի tarball-ում) [2]), օրինական պատճառներով, ինչպիսիք են տարբեր հարթակներում անհրաժեշտ տարրերի կոմպիլյացիան, կոդի ստեղծումը կամ թեստեր անցկացնելը, և մենք բոլորս պետք է իմանանք, որ դրանք կարող են չարաշահվել չարամիտ գործողների կողմից, եթե tarball-ում ներառված են վնասակար սկրիպտներ, կամ եթե հարձակվողը կարող է վնասակար սկրիպտ գործարկել լավի փոխարեն։
Սա իմանալով՝ մենք կարող ենք կարգավորել փաթեթների կառավարիչը՝ սկրիպտները անտեսելու համար։ Օրինակ՝ NPM-ի դեպքում –ignore-scripts դրոշ (կամ կարգավորման հատկություն .npmrc ֆայլը) բաց է թողնում սկրիպտները տեղադրման ընթացքում: Սա կարող է որոշ խնդիրներ առաջացնել, քանի որ սկրիպտների գործարկումը տարածված է շատ էկոհամակարգերում. Որոշ փաթեթների կառավարիչներ նույնիսկ թույլ չեն տալիս անջատել սկրիպտի կատարումը (հուշում՝ հուշում «Ո՞ր փաթեթների կառավարիչներն են թույլ չեն տալիս անջատել տեղադրման սկրիպտների կատարումը։«ձեր սիրելի արհեստական ինտելեկտում)։ Բայց սա ընդհանուր առմամբ չի պաշտպանում (մենք պետք է պարտադրենք, որ բաց թողնելու անջատման կարգավորումը ամենուրեք լինի)։
Եվ երբ վնասակար վարքագիծը գտնվում է ոչ թե տեղադրման սկրիպտներում, այլ գործարկման ժամանակ կատարվող ծրագրաշարում, այս տարբերակն ինքնին մեզ չի պաշտպանում։
Սխալ պատկերացում #3. Տարբերակի ամրացումը կանխում է վնասակար բաղադրիչների տեղադրումը
Կա փոխզիջում վաղ կարկատման և հաճախակի կիրառման միջև բաց տարբերակներ (թույլ տալով փաթեթների կառավարչին ավտոմատ կերպով տեղադրել նոր թարմացումներ, երբ դրանք հասանելի են անվտանգության շտկումների համար) և տարբերակի ամրացում (ունենալով ծրագրային ապահովման բոլոր ուղղակի և անցումային կախվածությունները ֆիքսված տարբերակում): Անվտանգության սկզբունքները համառ են և երբեմն հակասական, ինչպես պատահում է «վաղ թարմացնել, հաճախ թարմացնել» դեպքում և «Թարմացումը չպետք է թեթևամտորեն ընդունվի»Որոշ փաթեթների կառավարիչներ ավտոմատ թարմացումներ են կատարում սերվերի տիրույթներով՝ խորհուրդ տրված եղանակով: Հիանալի է, եթե դուք նույնպես ցանկանում եք ստանալ վնասակար թարմացումները: Այո, բաղադրիչները պետք է թարմացվեն՝ անվտանգության շտկումներ ստանալու համար, որոնք հնարավորինս շուտ կփակեն խոցելիությունները, բայց… երբեք թույլ մի տվեք, որ փաթեթների կառավարիչը դա անի ավտոմատ կերպով:
Սխալ պատկերացում #4. Հուսալի բաղադրիչների օգտագործումը անվտանգ է: Ցանկացած վնասակար տարբերակ անմիջապես կգտնվի, կբացահայտվի և կհեռացվի:
Ինչո՞ւ է որևէ բաղադրիչ վստահելի։ Հնարավոր է՝ այն շատ տարածված է, շատերը փնտրում են խոցելիություններ, ունի մեծ թվով աջակցողներ սպասարկման համար, բազմաթիվ հիմնական սպասարկողներ, որոնք ջանասիրաբար վերանայում են բոլոր բաղադրիչները։ pull requestsԻրականությունը բավականին այլ է։ Որոշ կարևոր բաղադրիչներ պահպանվում են մեկ, չվճարվող մշակողի կողմից։ Լայնորեն օգտագործվող շրջանակները ունեն մի քանի մշտական հեղինակներ, արագորեն նվազող թվով commitյուրաքանչյուր սպասարկողի համար (հայտնի նախագծերն ունեն ներդրողների երկար շարք, որոնք կատարում են որոշակի ավտոմատացված աշխատանք) commit և երբեք չեն վերադառնա)։ Եվ մեկ սպասարկողով հայտնի նախագծերը շատ են։
Պատկերացրեք, որ ասում եք. «Օ՜, մենք օգտագործում ենք Spring Boot / Angular / React / PyTorch / պաշտոնական Docker պատկերները, այնպես որ այն ռիսկը, որի մասին դուք խոսում եք, բավականին ցածր է»։ Հնարավոր է՝ դա ճիշտ է, մենք՝ անվտանգության մատակարարներս, անընդհատ վախեցնում ենք և խառնվում մշակողների թիմերին՝ վիճելի ռիսկը մեղմելու համար, անհեթեթություն է: Դուք կարող եք գայթակղվել անցնել ռիսկի ընդունման պարբերությանը (հաջորդ բաժնում) և ամեն ինչ պատրաստ է: Դժբախտաբար, ամենատարածված բաղադրիչները չարագործների թիրախ են, և, օրինակ, հայտնի... PyTorch գրադարանը հարձակման է ենթարկվել անցյալում է.
«Անհապաղ հայտնաբերվել, բացահայտվել և հեռացվել է»։ Հանրային գրանցամատյանից նոր վնասակար բաղադրիչը հեռացնելու համար օրեր են պահանջվում: Գրանցամատյանները զգուշորեն են վերաբերվում բաղադրիչի տարբերակի հեռացմանը՝ դրական արդյունքի հասնելու համար: Մեր փորձը ցույց է տալիս, որ մեր կողմից հաղորդվելուց հետո, գրանցամատյանի համար ազդակիր տարբերակը հեռացնելու միջին ժամանակը 39 ժամ է, ավելի քան մեկուկես օր: Կան վնասակար բաղադրիչներ, որոնք հեռացումից մեկ շաբաթ անց են գրանցամատյանում մեր սկզբնական հաղորդումից հետո: Եվ որոշ դեպքերում բաղադրիչը հեռացվում է միայն այն բանից հետո, երբ տուժողը կամ միջադեպերին արձագանքող ընկերությունը հաղորդում է բաղադրիչի հետ կապված միջադեպի մասին:
Ինչը չի աշխատում վնասակար բաղադրիչների դեմ
Ցանկացած անորոշ մոտեցում խորապես ձախողվելու է։ Սա անկասկած է, դուք արդյունավետ հակազդեցություններ չեք ապահովում այս սպառնալիքի հետ կապված ռիսկի դեմ։
Ավանդական SCA Գործիքները ձեզ տեղեկացնում են հայտնի վնասակար ծրագրերի մասին, բայց ունեն մեծ ազդեցության պատուհան։ Եթե դրանք նախաձեռնողաբար չեն հայտնաբերում վնասակար ծրագրերը՝ վնասակար բաղադրիչների հարկադիր արգելափակմամբ, դրանք չեն աշխատում այս սպառնալիքի դեմ։
Տեղադրման սկրիպտների անջատումը կարող է օգնել, բայց պետք է պարտադրվի ամենուր, որտեղ անհրաժեշտ է տեղադրել բաղադրիչ: Նույնը վերաբերում է նաև տարբերակների ամրացմանը, քանի որ տարբերակները չեն կարող հավերժ ամրացվել անվտանգ սկզբնական վիճակից:
Ենթադրել, որ հայտնի բաղադրիչները բավարար ուշադրության են արժանանում, որպեսզի դրանց վրա չնախատեսված վարքագիծ չառաջանա մատակարարման շղթայի հարձակման ժամանակ՝ առանց գրեթե ակնթարթային հայտնաբերման և որևէ վնասի կանխարգելման համար, միամիտ և ռիսկային է։ Դուք չեք ուզենա ապրել վտանգի եզրին, այնպես չէ՞։
Եթե կանգ առնեք այս պահին, ապա՝ ռիսկի ընդունում միակ բանն է, որ կարող ես անել. Սա դե էcisորը պետք է փաստաթղթավորվի ձեր սպառնալիքի մոդելում/ռիսկի գնահատման մեջ, ներառյալ ռիսկը ընդունելու հիմնավորումը և դրա հնարավոր հետևանքները: Բարձրացրեք իրազեկվածությունը՝ այն հաղորդելով ղեկավարությանը և այլ համապատասխան կողմերին: Որոշ պայմանականություն կարող է պլանավորվել, երբ ձեր ծրագրաշարում տեղադրվում կամ ներառվում է վնասակար բաղադրիչ, բայց դա դժվար է, քանի որ հարձակվողները բազմաթիվ ուղիներ ունեն հետևելու: Վնասակար բաղադրիչի օգտագործման վրա հիմնված մատակարարման շղթայի հարձակման մանրամասները կտրուկ կփոխեն միջադեպի հրապարակային բացահայտումը, որը, հավանաբար, պարտադիր է ձեր կազմակերպության կարգավորող շրջանակի համաձայն: Դուք կարող եք նաև դիմել փոխհատուցող կառավարումներ or փոխանցման ռիսկ օրինակ՝ ապահովագրության հետ։
Այնուամենայնիվ, կան վերահսկողության միջոցներ, որոնք ուղղված են սպառնալիքին և պետք է դիտարկվեն, եթե դուք գոհ չեք ռիսկի ընդունումից: Խնդրում ենք շարունակել կարդալ:
Ի՞նչն է աշխատում վնասակար բաղադրիչներ օգտագործող հարձակումների դեմ
Solid տարբերակի մշակում
Տարբերակի ամրագրումը վերահսկվող և տեղեկացված տարբերակների փոփոխությունների միջոցով լավագույն լուծումն է՝ խոցելիությունները հեռացնելու անհրաժեշտությունը հավասարակշռելու համար՝ առանց վնասակար ծրագրեր ստանալու։ Սակայն հիշեք #3 սխալ պատկերացումը. միայն տարբերակի ամրագրումը բավարար չէ նոր տարբերակներից եկող վնասակար կոդը կանխելու համար, քանի որ ապագայում ձեզ անհրաժեշտ կլինի թարմացնել ցանկացած ուղղակի կամ անուղղակի կախվածության տարբերակներ։ Այդ պահին ձեզ անհրաժեշտ են բավականաչափ ուժեղ ապացույցներ, որ բոլոր փոփոխված տարբերակները չեն պարունակում վնասակար ծրագրեր։
Վաղ նախազգուշացում
Վնասակար բաղադրիչների խնդրի լուծման մեկ մոտեցումը վաղ նախազգուշացման համակարգն է (այստեղ անվանված է որպես Վնասակար ծրագրերի վաղ նախազգուշացում կամ MEW), որտեղ հրապարակված նոր տարբերակները (նոր կամ գոյություն ունեցող բաղադրիչների համար) վերլուծվում են հայտնաբերման մեխանիզմի կողմից, որը, բավարար ապացույցներ գտնելու դեպքում, կարող է նոր տարբերակը դասակարգել որպես պոտենցիալ վնասակար։
Ավտոմատացումը այստեղ կարևոր է, քանի որ անհնար է ձեռքով վերանայել բոլոր նոր բաղադրիչները ներկայիս հրապարակման տեմպով: Այսպիսով, հայտնաբերման շարժիչը պետք է համատեղի մի շարք տեխնիկաներ, ներառյալ ստատիկ, դինամիկ և կարողությունների վերլուծությունը, օգտատիրոջ հեղինակությունը և բաղադրիչի մետատվյալների և tarball-ի բովանդակության միջև անհամապատասխանություններից բխող ապացույցները, կամ tarball-ի և աղբյուրի պահոցի միջև, որտեղից ենթադրաբար ծագում է բաղադրիչը:
Կա մութ գոտի հրապարակման ժամանակի և շարժիչի կողմից բաղադրիչների պարունակության վերլուծության միջև ընկած ժամանակահատվածը, սակայն այն չպետք է գերազանցի մի քանի րոպեն։ Սխեման կարող է փոփոխվել, օրինակ՝ սպասելով նոր բաղադրիչների վերլուծությանը, նախքան դրանց տեղադրումը և ծրագրային ապահովման կառուցման մեջ օգտագործելը թույլատրելը։ pipelines, կամ վերլուծել դրանք ըստ պահանջի, երբ անհրաժեշտ է։ Տվյալ տարբերակի բաղադրիչը անփոփոխ է։ [3], ուստի այն պետք է վերլուծվի միայն մեկ անգամ։
Լրիվ ավտոմատացումը հնարավոր չէ, և անհրաժեշտ է անվտանգության ստուգում՝ պոտենցիալ վնասակար բաղադրիչների առկայության համար։ Զգուշացե՛ք թվային համախտանիշի կողմնակիցներիցԱրհեստական բանականությունը և մեքենայական ուսուցումը բավականաչափ զարգացած չեն, որպեսզի վերջին խոսքը ասեն կասկածելի բաղադրիչի վնասակար ծրագրի առկայության հաստատման հարցում: Անշուշտ, մեքենայական ուսուցումը կարևոր դեր է խաղում հայտնաբերման շարժիչում՝ մուտքային բաղադրիչը դասակարգելով ստացված հում ապացույցներից, բայց երբ բաղադրիչը «կարանտինացվում է», վերջին խոսքը վերաբերում է վնասակար բաղադրիչների հետ փորձ ունեցող անվտանգության թիմի կողմից ձեռքով վերանայմանը: Սա հաստատում է ցանկացած պոտենցիալ վնասակար ծրագիր կամ վերադասակավորում է այն որպես անվտանգ: Եվ ժամանակահատվածը ժամերի սահմաններում է:
Գրանցամատյանը հաղորդում է վնասակար տարբերակի/բաղադրիչի մասին։ Այնուհետև գրանցամատյանը կատարում է իր վերանայումը՝ հաստատելու համար, և անցնում է հանրային բացահայտման և գրանցամատյանից հեռացման։ Որոշ գրանցամատյաններ պահում են անվտանգության պահպանման փաթեթ։ Այստեղ ժամանակային միջակայքը հրապարակումից հետո օրերը կամ շաբաթներն են, որը «բնակվել ժամանակը' կամ 'էքսպոզիցիայի պատուհան' վնասակար բաղադրիչների մեծ մասի համար։
Հնարավո՞ր է իմանալ, թե արդյոք բաղադրիչի տարբերակը վնասակար է։
Այսպիսով, վաղ նախազգուշացման համար մենք պետք է բավարար պատասխան տանք այս հարցին. Ինչպե՞ս կարող եմ իմանալ, որ գրադարանը կամ փաթեթը (չեն) վնասակար: Ինչպե՞ս հավաքել վնասակար վարքագծի բավարար ապացույցներ: Հնարավոր է, բայց դժվար, քանի որ հակառակորդները մեծ հնարամտություն են գործադրում հայտնաբերումից խուսափելու համար: Կան տարբեր մոտեցումներ, որոնցից յուրաքանչյուրն ունի իր դրական և բացասական կողմերը:
Ստատիկ վերլուծություն կարող է ուսումնասիրել բոլոր կատարման ուղիները, ստուգել հարձակվողների կողմից օգտագործվող տեխնիկաները՝ առանց բաղադրիչը գործարկելու, և կատարել նախնական մշակման առաջադրանքներ, ինչպիսիք են ապախաղացումը կամ վերծանումը: Քանի որ հարձակվողները փորձում են թաքցնել իրենց չարագործությունները, խաղացման փորձերը իսկապես վնասակար ծրագրի ապացույց են (սակայն նկատի ունեցեք, որ օրինական բաղադրիչները խաղացնում են կոդը՝ մտավոր սեփականությունը պահպանելու համար, հակասելով «բաց աղբյուր«)։ Բարձր բարդության և ուժեղ խավարման հետ կապված հարձակումների միայն փոքրամասնությունն է պահանջում «sandboxing», սակայն նման ուժեղ խավարումը չարամիտության վկայող նշան է։ Խնդրում ենք նկատի ունենալ, որ ավանդական SAST Գործիքները նախագծված էին ոչ թե չարամիտ մտադրությունների, ինչպիսիք են «հետին դռները», այլ ոչ թե ոչ միտումնավոր խոցելիությունների համար։
Դինամիկ վերլուծություն գործարկում է բաղադրիչը և ուսումնասիրում է արձագանքը՝ գործիքավորելով կատարման ժամանակը, սովորաբար ապահովելով պաշտպանված միջավայր: Որոշակի պայմաններում առաջացած չարամիտ վարքագիծը կարող է աննկատ մնալ. խնդրում ենք նկատի ունենալ, որ չարամիտ ծրագիրը կարող է օգտագործել խուսափելու տեխնիկաներ, ինչպիսիք են՝ Վիրտուալիզացիա/Sandbox-ից խուսափելը ակտիվացնել միայն այն դեպքում, երբ այն հսկողության տակ չէ, և նաև ցանկացած ստատիկ վերլուծության շարժիչի համար չարամիտ գործունեության վկայող նշան է։
Կարողությունների վերլուծություն հաշվի է առնում, թե ինչ է անում բաղադրիչը. որտեղ է այն միանում, որ ֆայլերին է մուտք գործում, որ հրամաններն ու ծրագրերն են գործարկվում, որ տերմինալը կամ սարքի մուտքը/ելքը կատարվում է, կամ որ համակարգային կանչերն են կանչվում: Վարքագծի այս մատնահետքը կարող է համեմատվել (գոյություն ունեցող բաղադրիչի համար) տարբեր տարբերակների միջև, այնպես որ, երբ հայտնաբերվում է անսպասելի վարքագիծ, այդ ապացույցը կարող է կասկածներ առաջացնել նոր տարբերակում ներարկված հնարավոր չարամիտ գործունեության վերաբերյալ: Այս մոտեցումը հետևում է տեսակավորման քայլերին, որոնք անվտանգության վերլուծաբանները կատարում են հնարավոր չարամիտ ծրագրերի հետ բախվելիս. ստուգում՝ օգտագործելով տողերը կամ նմանատիպ գործիքներ: Այս մոտեցումը հայտնաբերում է չարամիտ վարքագիծը՝ անկախ ակտիվացման պայմաններից, և աշխատում է, երբ աղբյուրի կոդը հասանելի չէ:
Համատեքստի վերլուծություն Հավաքում է տեղեկատվություն այն մասին, թե ինչպես է բաղադրիչը հրապարակվել և ում կողմից: Վատ գործողների արշավները հաճախ օգտագործում են նոր օգտատիրոջ հաշիվ(ներ), որոնք չեն ենթարկվում որևէ խիստ ստուգման գործընթացի: Անցյալի գործունեության հետևումը կարող է պատկերացում տալ հիմնական օգտատիրոջ մասին, հիմնականում՝ անոմալիաների մասին, որոնք կարող են ակնարկել հնարավոր խափանման մասին: Հեղինակությունը շատ դժվար է վաստակել և շատ հեշտ՝ կորցնել: Անցյալի գործունեություն չունեցող օգտատերը չեզոք է, բայց կարման հետապնդում է չարամիտներին: Հաքթիվիստները կամ սովորական օգտատերերը, որոնց հրապարակման տվյալները գողացվել են, պետք է ուշադիր հետևվեն:
Մեկ այլ համատեքստային տեղեկատվություն է բաղադրիչի tarball-ը ստեղծելու համար ենթադրաբար օգտագործված սկզբնաղբյուրի պահոցի և հենց tarball-ի բովանդակության միջև ցանկացած անհամապատասխանություն։ Եվ նաև լավ պրակտիկայի հետևումը, ինչպիսին է սկզբնաղբյուրի պահոցում հանրային գրանցամատյանում հրապարակված բաղադրիչի տարբերակներին համապատասխանող պիտակների կամ թողարկումների ստեղծումը։ Երբ սկզբնաղբյուրի պահոցը գտնվում է որոշակի... commit եթե այն պիտակավորված է release-ով, և հանկարծ մեկ տարբերակը չի հետևում դրան, դա արդեն իսկ ուժեղ ապացույց է, որ բաղադրիչը կարող է վնասված լինել. չարագործը կարող է վնասել բաղադրիչը հրապարակելու համար օգտագործված հաշիվը, բայց չունի գրելու թույլտվություն սկզբնական կոդի պահոցում): Շատ հարձակումներ պարբերաբար հայտնաբերվում են այս կանոնների միջոցով. օրինակ՝ Լեջերի հարձակումը կարելի է հեշտությամբ հայտնաբերել այս ուղղությամբ։ Հետևաբար, համատեքստային վերլուծությունը բացահայտում է նման անոմալիաները հրատարակչական գործընթացում։
Կախվածության firewalling
Մեկ այլ մոտեցում է ունենալ ձեր ծրագրաշարում օգտագործվող բոլոր կախվածության գրաֆիկների համար բաղադրիչների համապարփակ սպիտակ ցուցակ, այնպես որ ցանկացած կառուցվածքում pipeline Ձեր կազմակերպությունում գործարկվող միայն հաստատված բաղադրիչների տարբերակները կարող են տեղադրվել և օգտագործվել: «firewall«» հրամանը պարտադրվում է ներքին գրանցամատյանի միջոցով, որտեղ մատուցվում են թույլատրված բաղադրիչների տարբերակների tarball ֆայլերը (քեշավորված կամ պրոքսիացված): Խնդրում ենք նկատի ունենալ, որ ցանկացած սպիտակ ցուցակ չի աշխատի, եթե դուք չունեք որևէ նոր տարբերակ որպես համեմատաբար անվտանգ դասակարգելու տեխնոլոգիա, որպեսզի այն կարողանա ավելացվել սպիտակ ցուցակին:
Խնդրում ենք նկատի ունենալ, որ վաղ նախազգուշացումը (նոր տարբերակի հրապարակումից հետո հնարավորինս շուտ արագ հայտնաբերումը) պետք է համակցվի այդ տեղեկատվությունն ակտիվորեն օգտագործելու որևէ եղանակի հետ՝ կառուցվածքին ազդող բաղադրիչը արգելափակելու համար։ pipelineկամ մշակողների մեքենաները [4]Մենք սա անվանում ենք «կախվածության firewalling«»: ավտոմատացված կառուցվածքները վնասակար փաթեթներից պաշտպանելու կարանտինային մեխանիզմ: Ներքին փաթեթներն ու պատկերների գրանցամատյանները լավ են կազմակերպությունները արտաքին չարիքից մեկուսացնելու համար, բայց կարանտինը արդյունավետ դարձնելու համար անհրաժեշտ են բավականաչափ ուժեղ ապացույցներ:
Գործողության ժամանակի ավազարկում
Հրապարակման պահին հայտնաբերման այլընտրանքային մոտեցում է կատարման ընթացքում վարքագծի վերլուծությունը: Գաղափարն այն է, որ գրանցվի ծրագրից սպասվող վարքագիծը և հայտնաբերվեն (կամ արգելափակվեն) հայտնաբերված ցանկացած անոմալիա: Այս գործողությունների ուղղությունն ունի այն խնդիրը, որ անհրաժեշտ է գործիքավորել կատարման ժամանակը մոնիթորինգի կամ արգելափակման համար, և սա խոստումնալից գաղափար է, որը կավելացվի վնասակար բաղադրիչի վնասատուի դեմ պաշտպանության մեխանիզմների զինանոցին:
Համապարփակ ռազմավարության սահմանում
Առաջարկվող ռազմավարությունը պետք է համատեղի տարբեր տեխնիկաներ ծրագրային ապահովման մշակման գործընթացում՝ վերահսկելով տարբերակների թարմացումները՝ մուտքային վնասակար բաղադրիչները արգելափակելու համար: Մենք պետք է հարմարեցնենք տարբերակների ամրագրմանը՝ թարմացվող տարբերակների ավտոմատ վարակից խուսափելու համար՝ կարևոր խոցելիությունների շտկումներ ստանալու համար. տարբերակների թարմացումների ընթացքում ուղղակի և անուղղակի կախվածությունների արագ և արդյունավետ գնահատում՝ բավարար ապացույցներ ունենալու համար, որ դրանք լի չեն վնասակար ծրագրերով: Հայտնի վնասակար բաղադրիչներից կախված ծրագրային ապահովման կառուցվածքները պետք է արգելափակվեն: Եվ բոլորը պետք է կիրառվեն:
Հնարավորության դեպքում օգտագործեք տարբերակի ամրացումը, քանի որ դա կառուցվածքները դարձնում է ավելի վերարտադրելի։ Տարբերակի ամրացում՝ վերահսկվող, ձեռքով հաստատված տարբերակի փոփոխությունների միջոցով, եւ օժանդակ տեխնոլոգիայի օգնությամբ, պետք է գնահատի, թե արդյոք թարմացումը բերում է վնասակար ծրագրեր կամ խափանում է ծրագիրը, և համատեղի խոցելիությունները շտկելու համար անհրաժեշտ թարմացումը վնասակար ծրագրերով վարակվելուց խուսափելու հետ: Այստեղ գործիքակազմը կարող է օգնել՝ (1) առաջնահերթություն տալով, թե որ խոցելիություններն են իրականում կարևոր (հասանելի և շահագործելի, հարձակվողների կողմից թիրախ դառնալու բարձր ռիսկով), (2) ընտրելով այն թիրախային տարբերակները, որոնք համատեղելի են բաղադրիչների ներկայիս օգտագործման հետ և չեն խափանում ծրագիրը, (3) ընտրելով այն թիրախային տարբերակները, որոնք չեն պարունակում վնասակար վարքագիծ, և (4) տարբերակի թարմացումը ուղղակի և անուղղակի կախվածությունների համար դարձնելով արագ՝ առաջարկելով փոփոխություններ մանիֆեստ ֆայլերում, որոնք կարող են արագ հաստատվել: Քայլ (3)-ը պահանջում է վնասակար բաղադրիչների մասին հատուկ տեղեկատվություն՝ որքան հնարավոր է մոտ դրանց հրապարակման ժամանակին:
Կախվածությունների թարմացման այս գործընթացը պետք է լինի հարկադրաբար և ստուգված բոլոր վայրերում։ Գործընթացը պետք է փաստաթղթավորվի, և բոլոր ներգրավված կողմերը պետք է վերապատրաստվեն, քանի որ հաճախ մշակումը և ծրագրային ապահովման ստեղծումը/տեղադրումը կատարվում է արտաքին կողմերի կողմից։ CI/CD pipelines-ը պետք է համապատասխանաբար փոփոխվի, որպեսզի ավտոմատացումը թույլ չտա, որ չարամիտ անուղղակի կախվածությունը ներթափանցի կառուցման մեջ։ guardrails Խորհուրդ է տրվում արգելափակել կառուցվածքը, եթե կախվածության մեջ կան բավարար ապացույցներ պոտենցիալ վնասակար ծրագրերի առկայության մասին։
Եթե ձեր կազմակերպությունն ունի ներքին գրանցամատյան, որը գործում է որպես անվտանգության միջնորդ՝ թույլատրված բաղադրիչների տարբերակները պահելու համար, ապա դուք պետք է տեղեկություններ ստանաք վնասակար բաղադրիչների մասին (այլ չափանիշներից բացի)՝ պահանջվող բաղադրիչը ստուգելու համար, նախքան այն թույլատրելի ցանկում ավելացնելը։
Բաց կոդով ծրագրաշարի անվտանգ օգտագործումը հեշտ չէ, և վնասակար ծրագրերի գործոնը պետք է լիովին հաշվի առնվի՝ նմանատիպ ջանքեր գործադրելով խոցելիությունների կառավարման համար։
Մեկ վերջնական նշում. Աղբյուրի ծագումը, բաղադրիչի կառուցման ժամանակ ստեղծված ծրագրային հավաստագրերի տեսքով, արտեֆակտը (բաղադրիչի tarball) աղբյուրների և կառուցման գործընթացի հետ կապելու ջանքերի մեկ այլ կարևոր մասն է։ Նկատի ունեցեք, որ աղբյուրի լուսանկարի + կառուցման միջավայրի և դրան կից ծրագրային արտեֆակտի (վստահելի կառուցման համակարգի կողմից ստորագրված) միջև այս կապը ինքնին չի կանխում, որ բաղադրիչը չպարունակի չարամիտ վարքագիծ, բայց դժվարացնում է չարագործների համար վնասակար ծրագրերի ներարկումը։ Եվ ծագման վավերացումը բաց կոդով բաղադրիչների օգտագործման ընդհանուր պահանջ դարձնելը երկար ժամանակ կպահանջի, և միայն վերջերս ավելացված է NPM-ինԱյդ վստահելի կառուցման և տեղակայման համակարգերը կեղծումից պաշտպանված դարձնելը կամ կառուցման մեջ ցանկացած կեղծում հայտնաբերելու հնարավորություն տալը բոլորովին այլ պատմություն է, որը դուրս է այս գրառման շրջանակներից։
Further ընթերցում
Հաջորդ դրվագը Բաց կոդով վնասակար փաթեթներ. Xygeni մոտեցումը կներկայացնի Xygeni-ում մեր կողմից որդեգրվող ռազմավարությունը մեր համար Վնասակար ծրագրերի վաղ նախազգուշացում (MEW) համակարգ։ Հանրային փաթեթի և պատկերների գրանցամատյանների նոր փաթեթների տարբերակները սկանավորվում են, և ապացույցները ստացվում են ստատիկ, դինամիկ, հնարավորությունների և համատեքստային վերլուծության համադրության միջոցով։ Ապացույցները, զուգորդված օգտատիրոջ հեղինակության և սկզբնական կոդի պահոցներում փոփոխությունների պատմության հետ, թույլ են տալիս ամբողջությամբ ավտոմատ կերպով դասակարգել բաղադրիչը բարձր ռիսկային և հավանաբար վնասակար կատեգորիաների։ Համակարգը սովորում է փաթեթներից հավաքված անցյալի ապացույցներից՝ կեղծ դրականները նվազագույնի հասցնելու համար։
Բաժանորդագրված կազմակերպությունները ստանում են նախազգուշացման ծանուցում իրենց կողմից օգտագործվող բաղադրիչների վերաբերյալ, ուղղակիորեն կամ անուղղակիորեն, երբ դասակարգվում է վնասակար տարբերակը: Այնուհետև մեր վերլուծաբանները կատարում են ձեռքով վերլուծություն, որը հաստատում կամ մերժում է դասակարգումը: Հաստատված վնասակար ծրագրերի դեպքում հանրային գրանցամատյանը տեղեկացվում է, որպեսզի այն կարողանա իրականացնել իր սեփական վերլուծությունը և, որպես կանոն, հեռացնել վնասակար տարբերակը կամ ձեռնարկել լրացուցիչ գործողություններ, ինչպիսիք են տվյալ օգտատիրոջ հաշվի արգելափակումը կամ հեռացումը:
Մենք կբացատրենք, թե ինչպես ենք օգնում NPM-ին, PyPI-ին, GitHub-ին և բաց կոդով էկոհամակարգի այլ կարևոր ենթակառուցվածքներին կրճատել հրապարակված նոր վնասակար բաղադրիչի ակտիվ մնալու ժամանակը մինչև այն չհաստատվի որպես վնասակար ծրագիր և հեռացվի գրանցամատյանից: Եվ ինչպես կարող են կազմակերպությունները օգտվել MEW համակարգից՝ բաց կոդով բաղադրիչներ ներառող ծրագրային ապահովման մատակարարման շղթայի հարձակումներից շատ ավելի լավ պաշտպանություն ունենալու համար:
- [1] Ամեն դեպքում, բաղադրիչի օգտատերերը պետք է ստուգեն, թե արդյոք բաղադրիչի tarball-ը քեշավորված է կամ գրանցված է որևէ տեղ, օրինակ՝ ներքին գրանցամատյանում, որպեսզի հիվանդությունը վերացվի։
- [2] Փաթեթավորված բաղադրիչը ներառում է մանիֆեստ, որը հայտարարում է դրա պարունակությունը և մետատվյալները, սկզբնական կամ կոմպիլացված կոդը, տեղադրման սկրիպտները և լրացուցիչ տարրեր, ինչպիսիք են թեստային հավաքածուները, փաթեթավորման ձևաչափին համապատասխան և սովորաբար սեղմված տեսքով: Սա կոչվում է «բաղադրիչի tarball»:
- [3] Նույնիսկ եթե չարամիտ անձը կարող է փոփոխել հրապարակված բաղադրիչը գրանցամատյանի խախտման պատճառով, պարզ կրիպտոգրաֆիկ ամփոփագիրը կարող է հայտնաբերել tarball-ում ցանկացած փոփոխություն վերլուծությունն ավարտելուց հետո։
- [4] Հիշե՛ք, որ որոշ վնասակար բաղադրիչներ գործարկվում են տեղադրման ժամանակ, ուստի դա կարող է ազդել մշակողի հանգույցների վրա, որոնք անգիտակցաբար գործարկում են «npm install X»-ը՝ X-ը վնասակար բաղադրիչով։




