Fil-post preċedenti tagħna dwar CI/CD Pipelines, ahna rajna kif tiħakja CI/CD xenarju li preżumibbilment kien protett.
Ejjew niftakru l-punt tagħna fil-post preċedenti: bdejna b'xi wħud pipeline li kien vulnerabbli għal Avvelenat Indirett Pipeline Eżekuzzjoni (I-PPE) u, biex nirranġawha, iddeċidejna li naqsmu l- pipeline f'żewġ:
- L-1 pipeline (Build CI), sikur għal D-PPE u I-PPE, jiċċekkja l-kodiċi PR, jagħmel il-build, u jiġġenera artefatt
- It-2 pipeline (Test CI), ukoll sikur għal D-PPE u I-PPE jiċċekkja l-kodiċi Bażi (biex jevita modifika tal-iskrittura tax-shell) u jesegwixxi l-iskritturi oriġinali kontra l-artefatt.
- Biex tissinkronizza t-Test CI pipeline biex jaħdem WARA l-Build CI pipeline, użajna tħaddim_tal-fluss tax-xogħol grillu.
Semmejna dan bħala Xenarju #3.
Għalkemm, kif semmejna f'dik il-kariga, hemm soluzzjonijiet oħra, iddeċidejna li nimplimentaw din is-"soluzzjoni" għal raġunijiet pedagoġiċi, sabiex inkunu nistgħu nidħlu fil-fond fil-vulnerabbiltajiet ta' CI/CD pipelines.
Wara, rajna kif nistgħu nindirizzaw dan ix-xenarju billi avvelenament tal-artefattDan huwa dak li nsejħu Avvelenament minn Artefatti, jiġifieri l-abbiltà li timmodifika (tħakkja) l- pipeline loġika billi timmodifika a pipeline artifatt.
X'inhi l-problema b'dan l-approċċ? Rajna li l-problema tinqala' meta kwalunkwe utent "joħloq" verżjoni ġdida pipeline.
Jekk utent jiftaħ PR li fiha dokument ġdid pipeline, GitHub se jesegwixxi dak pipeline (minħabba xi kundizzjonijiet, kif rajna fil-kariga).
L-utent imbagħad ikun jista' joħloq wieħed ġdid pipeline bl-istess isem bħal Build CI!! Iva, huwa sorprendenti, imma GitHub jippermettilek toħloq tnejn pipelines bl-istess isem!!
Meta l-utent jiftaħ PR b'dawn il-bidliet, il-“ġdid” pipeline se jiġi eżegwit (jtella' artifatt avvelenat) u l-Implimentazzjoni tas-CI pipeline se jiġi eżegwit wara dan, u dan jirriżulta fl-iskrittura "modifikata" tax-shell li tissostitwixxi l-iskrittura "oriġinali" tax-shell li tinsab fil- pipeline spazju tax-xogħol. Għalhekk, din is-“soluzzjoni” ma tevitax il-vulnerabbiltà tal-I-PPE (kif nistgħu naraw hawn taħt)
X'inhuma l-problemi? Tal-anqas, hemm ftit kwistjonijiet:
- L-ewwel, Kif tkun ċert li l-proċess tal-bini ma ġiex imfixkel? F'dan ix-xenarju, l-utent malizzjuż seta' jimmodifika l-proċess tal-bini maħsub billi juża tiegħu pipeline biex toħloq artefatt avvelenat.
- It-tieni nett, Kif nistgħu nivvalutaw il-provenjenza ta' artefatt?
Dawn il-mistoqsijiet jitfgħuna f’dirgħajn il- Attestazzjonijiet tas-Softwer dominju!!
Attestazzjonijiet tas-Softwer
An attestazzjoni hija biċċa ta ' data li jirrappreżenta prova ta' avvenimentFid-dinja reali, ġeneralment insejħu dawn ċertifikazzjonijiet.
Pereżempju, meta laboratorju jittestja d-demm tiegħek, id-dejta dwar it-test tiġi rreġistrata u ċċertifikata. Ir-riżultati tat-test tad-demm huma verifikabbli u, traċċabbli.
Aktar qrib id-dominju tal-IT tagħna, tista' taħseb x'tkun traduzzjoni ta' dan il-proċess għal, pereżempju, proċess ta' kumpilazzjoni.
Informazzjoni dwar l-ambjent u l-għodod tas-server tal-kumpilazzjoni, il-materjali (il-kodiċi tas-sors), u l-prodotti/artefatti (il-kodiċi binarju) tkun parti minn tali attestazzjoni.
Ovvjament, l-attestazzjoni trid tiġi ġġenerata minn attestur awtorizzat (awtentikat u mhux repudibbli) biex tipprovdi kredibilità.
Probabbilment, xi wħud minnkom jistgħu jkunu qed jaħsbu .. u x'inhu l- differenza bejn firem u attestazzjonijiet?
Firem u Attestazzjonijiet tal- Kodiċi
F'livell għoli, a firma tinħoloq bl-użu ta' par ta' ċwievet u artefatt. Il-par ta' ċwievet jikkonsisti minn ċavetta pubblika u ċavetta privata.
L-utent jiffirma artefatt bl-użu taċ-ċavetta privata, u oħrajn imbagħad jistgħu jivverifikaw il-firma bl-użu taċ-ċavetta pubblika. Iċ-ċavetta privata trid tinżamm sigrieta, iżda ċ-ċavetta pubblika hija mqassma b'mod wiesa'.
Il-firem jistgħu jintużaw biex jipprova li d-detentur taċ-ċavetta privata uża ċ-ċavetta privata biex jiffirma l-artefatt.
Firem ma tipprovax
- L-utent intenzjoni biex jiffirmaw l-artefatt (jistgħu jkunu ġew imqarrqa), jew
- L-intenzjoni tal-utent li jagħmel xi ħaġa talba speċifika dwar l-artefatt
bil Attestazzjonijiet, minflok ma jiffirmaw artefatt direttament, l-utenti joħolqu xi tip ta' dokument Li jaqbad l-intenzjoni tagħhom wara l-iffirmar tal-artefatt u kwalunkwe talbiet speċifiċi qed isir bħala parti minn din il-firma.
Qafas ta' Attestazzjoni In-toto
L-aktar qafas komuni huwa l- Qafas ta' Attestazzjoni in-toto
- jiddefinixxi standard format għall-attestazzjonijiet li jorbtu s-suġġetti, l-artefatti li qed jiġu deskritti, ma' metadata awtentikata dwar l-artefatt
- jipprovdi sett ta' predikati predefiniti għall-komunikazzjoni ta' metadata awtentikata fil-ktajjen kollha tal-provvista tas-softwer
Ejja nidħlu f'xi dettall dwar il-format tal-attestazzjoni.
An Attestazzjoni hija dokument iffirmat diġitalment li fih Dikjarazzjonijiet.
il Dikjarazzjoni huwa s-saff tan-nofs tal-attestazzjoni, li jorbotha ma' parti partikolari suġġett u li jidentifika b'mod ċar it-tipi ta' Predikat:
- suġġett: L- referenza kriptografikament sigura għall-artefatt (ġeneralment permezz ta' hash), u
- Predikatisett ta' speċifiċi pretensjonijiet Informazzjoni dwar dak l-artefatt tissejjaħ Dikjarazzjoni. Dawn l-istqarrijiet jistgħu jintużaw biex jesprimu (u aktar tard jippruvaw) kwalunkwe ħaġa li tista' taħseb fiha! Jistgħu jirrappreżentaw approvazzjoni manwali, provenjenza ta' artefatt, riżultati ta' testijiet awtomatizzati, traċċa tal-verifika, jew aktar!
Meta din id-Dikjarazzjoni tkun iffirmata b'mod kriptografiku, imbagħad tissejjaħ Attestazzjoni
B'dan il-mod, bħala eżempju, Alice toħloq Dikjarazzjoni dwar artifatt u tiffirmaha bl-użu taċ-ċavetta privata tagħha, u b'hekk toħloq Attestazzjoni.
- Bob jista' mbagħad ivverifika l-firma f'dik l-Attestazzjoni, li tippermettilu li tafda l-istqarrijiet ġewwa.
Bob jista' mbagħad juża dawk it-talbiet biex tiddeċiedi jekk għandux jiġi permess jew le li dan l-artefatt jintuża.
L-Attestazzjonijiet jistgħu jgħinu biex isolvu l-Avvelenament tal-Artefatti?
Wara din l-introduzzjoni għall-Attestazzjonijiet, ejja nerġgħu lura għall-problema tagħna. Kif jistgħu l-attestazzjonijiet jgħinuna nsolvu l-problema tagħna, jiġifieri nevitaw l-avvelenament mill-artefatti?
L-utent malizzjuż irnexxielu joħloq artefatt billi jevita l-mekkaniżmu "uffiċjali", jiġifieri billi juża l-informazzjoni tiegħu/tagħha pipeline biex tiġġenera l-artefatt.
Ikun tal-għaġeb kieku nistgħu nippruvaw li l-artefatti li qed jitniżżlu nbnew bl-uffiċjali pipelines. Dan huwa biss eżempju wieħed ta’ dak li nistgħu nsejħu “Punti ta’ tbagħbis”, iżda jista’ jkun hemm ħafna oħrajn.
Kif tistgħu taraw fl-istampa ta’ hawn fuq, il-punti ta’ tbagħbis huma multipli. B’dan il-mod, il-konsumatur pipeline (Test CI fl-eżempju tagħna) irid jivvaluta l- l-integrità tal-proċess tal-bini kif ukoll il- l-integrità tal-artefatt innifsu.
Fl-eżempju tagħna, l-artefatt avvelenat inħoloq billi ġie introdott artefatt (avvelenat) ġdid. pipeline li jbagħbas il-proċess tal-bini. Iżda l-utent malizzjuż seta' kien kapaċi li:
- timmodifika l-kodiċi wara li tkun ġiet iċċekkjata mill- SCM biex tiġġenera binarju malizzjuż
- tissostitwixxi l-binarju t-tajjeb prodott mill-kumpilazzjoni bi kwalunkwe binarju malizzjuż ieħor
- tikkomprometti r-Reġistru tal-Artefatti u ttella' artefatt avvelenat mibni b'xi mod ieħor
- eċċ.
Kif tistgħu taraw, jista' jkun hemm diversi punti ta' "tbagħbis".
X'inhu importanti hawnhekk? Ovvjament li nipproteġu dawk il-punti kollha ta' "tbagħbis". Imma, fl-aħħar mill-aħħar, l-aktar importanti hu li l-“konsumatur” tal-artefatt jista’ jivvaluta l-integrità tal-artefatt, u jiddeċiedi jekk jipproċedix bih jew le.
Nistgħu tivvaluta l-integrità ta' artefatt b'żewġ modi.
Wieħed huwa billi tivvaluta l- provenjenza tal-artefatt.
Billi tiġġenera Attestazzjoni tal-Provenjenza, nipprovdu metadata utli (awtentikata kif suppost u mhux ripudjata) dwar l-artefatt. Fl-eżempji li ġejjin, se nużaw MELĦ Xygeni (Software Attestations Layer for Trust), il-komponent għall-ġenerazzjoni, ir-reġistrazzjoni u l-verifika tal-attestazzjonijiet tas-softwer.
Fil-kodiċi ta' hawn fuq, tista' tara li hemm pass li jibni l-fajl tal-gwerra u t-tieni pass li jiġġenera l- Attestazzjoni tal-ProvenjenzaBiex tagħmel dan, l- pipeline juża ċ-ċavetta privata u jinkludi wkoll iċ-ċavetta pubblika fl-attestazzjoni.
Wara l-kwinti, Xygeni's melħ Il-kmand jaħżen l-attestazzjoni f' ktieb (magħruf ukoll bħala reġistru tal-attestazzjoni, rekord fil-każ tagħna imma tista' tuża kwalunkwe oħra). Għamel dan, il-konsumatur pipeline jista' jinkludi Xygeni's Magna ta' Verifika biex tivverifika l-provenjenza tal-artefatt u tivvaluta l-integrità tal-artefatt.
Il-proċess ta' verifika jivvaluta:
- il L-artefatt sha256sum huwa validu (jiġifieri hemm attestazzjoni dwar dak is-“suġġett”), u
- il l-attestazzjoni hija awtentikata kif suppost (ġie ġġenerat bl-użu taċ-ċavetta privata adegwata)
Dan il-proċess ta' verifika jista' mbagħad jivvaluta li kemm l-artefatt kif ukoll l-attestazzjoni huma validi.
Imma, kif tiftakru, fil-każ tagħna, l-artefatt ġie ġġenerat minn xi ħadd "malizzjuż" pipeline (jiġifieri mhux l-oriġinali minn modifikat pipeline). Imbagħad irridu nibdew u nivverifikaw aspett ieħor: li l-artefatt ġie ġġenerat mill-"oriġinali" pipeline, mhux xi ieħor.
Biex tagħmel dan, inkludi biss linja sempliċi biex tivverifika dik il-kundizzjoni, pereżempju:
Din il-verifika addizzjonali tfalli jekk l-artefatt ma jkunx ġie ġġenerat mis-“safe” tagħna. pipeline.
Jekk l-artefatt ġie ġġenerat mill-oriġinali tagħna pipeline (cicd_top10_3_salt/.github/workflows/build.yml), il-kmand grep jirnexxi, inkella jfalli, u jkisser il- pipeline u l-abort ta' kwalunkwe pass ieħor.
Il-“bennej” pipeline huwa biss punt wieħed ta' tbagħbis li għandu jiġi vverifikat iżda, kif imsemmi qabel, hemm xi punti oħra ta' tbagħbis li għandna niċċekkjaw.
Per eżempju, Xi ngħidu jekk il-kodiċi tas-sors ikun ġie mbagħbas wara l-checkout tar-repo u qabel il-kmand tal-bini? F'dan il-każ, il-kodiċi li għandu jinbena mhux l-istess bħal dak maħżun fil- SCM.
Li tivverifika dan il-punt ta' tbagħbis huwa faċli daqs li tiċċekkja l-hashes tal-materjal f'kull pass.
Konklużjonijiet
Fil-qosor, a Attestazzjoni tas-Softwer hija asserzjoni magħmula dwar biċċa softwer, jiġifieri dikjarazzjoni awtentikata (metadata) dwar artefatt tas-softwer jew ġabra ta' artefatti tas-softwer.
L-attestazzjonijiet tas-softwer huma ġeneralizzazzjoni tal-iffirmar tal-kodiċi/artefatt mhux ipproċessat. L-attestazzjoni hija dokument iffirmat (f'format partikolari, tipikament ibbażat fuq JSON) li jassoċja l-metadata ma' artefatt. Huma jirrappreżentaw evidenza li torbot l-inputs (materjali) u l-outputs (artefatti prodotti) f'kull pass tal-bini.
L-attestazzjonijiet jipprovdu rekord verifikabbli tal-passi li saru għall-bini tal-artefatti tas-softwer finali, inklużi materjali ta' input għal kull pass u l-kmandi tal-bini li tħaddmu.
Bħala konklużjoni, l-Attestazzjonijiet tas-Softwer huma mekkaniżmu tajjeb ħafna biex jiġu vverifikati ħafna aspetti differenti tal-integrità tal-proċess tal-bini tagħna.
Spiċċajt is-serje? Tinkwetax! Ħossok liberu li terġa' lura għal 'Avvelenat Pipeline Eżekuzzjoni (PPE)' jew kwalunkwe post ieħor li jerġa' jqajjem l-interess tiegħek!
Ibqgħu magħna, se nidħlu fil-fond fl-attestazzjonijiet tas-softwer u build security f'aktar postijiet tal-blog.




