ubrizgati varijable okruženja u proces izgradnje

Sigurno ubrizgavanje varijabli okruženja u proces izgradnje

Ubrizgavanje varijabli okruženja u proces izgradnje je standard praksa u modernom CI/CD pipelineTimovi ubrizgavaju varijable okruženja u proces izgradnje kako bi prenijeli tajne, tokene i konfiguraciju vremena izvođenja u izgradnje bez fiksno kodiranih vrijednosti. Na prvi pogled, ovo izgleda kao jednostavan i siguran obrazac.

Međutim, u praksi to često postaje jedan od najpodcijenjenijih rizika u lancu opskrbe softverom.

Jer kada timovi ubrizgaju varijable okruženja u proces izgradnje, te vrijednosti prestaju biti izolirane. Postaju dostupne svemu što se izvršava unutar tog procesa. pipelineSkripte za izradu, CLI alati, akcije trećih strana, pa čak i ovisnosti mogu ih čitati.

Tu se stvari počinju raspadati.

U ovom vodiču proći ćemo kroz to kako timovi u stvarnosti ubrizgavaju varijable okruženja u proces izgradnje. pipelines, gdje se zapravo događaju curenja i kako osigurati proces izgradnje bez usporavanja razvoja.

Što znači ubrizgati varijable okruženja u proces izgradnje

U svojoj srži, ubrizgavanje varijabli okruženja znači prosljeđivanje vrijednosti u pipeline za vrijeme izvođenja kako bi im poslovi mogli pristupiti tijekom izvršavanja. 

U praksi, većina timova ubrizgava varijable okruženja u proces izgradnje više puta u različitim fazama, često bez potpunog uvida u to kako se te vrijednosti koriste.

Te vrijednosti obično uključuju API ključeve, vjerodajnice baze podataka, tokene ili konfiguraciju specifičnu za okruženje. Umjesto da ih pohranjuju izravno u kodu, CI/CD Sustav ih dinamički učitava kada započne izgradnja.

Ovo rješava pravi problem. Održava kod čistim, izbjegava dupliciranje i omogućuje isto pipeline za izvođenje u okruženjima za pripremu, testiranje i produkciju.

Međutim, ovaj model se oslanja na pretpostavku koja više ne vrijedi: da je okruženje za izgradnju kontrolirano i predvidljivo.

moderna pipelinenisu ni jedno ni drugo. Uključuju više koraka, vanjske integracije i ovisnosti koje dinamički izvršavaju kod. Kao rezultat toga, nakon što se varijabla ubrizga, ona više nije samo konfiguracija. Postaje dio konteksta izvršavanja.

Gdje varijable okruženja propuštaju podatke u procesu izgradnje

Većina curenja informacija ne događa se zato što netko eksplicitno otkriva tajnu. Događaju se zato što pipelineponašaju se na načine koje programeri ne predviđaju u potpunosti.

Svaki put kada timovi ubrizgaju varijable okruženja u proces izgradnje, proširuju broj komponenti koje potencijalno mogu pristupiti osjetljivim podacima.

Na primjer, programer može omogućiti detaljno zapisivanje kako bi otklonio pogreške u neuspjeloj izgradnji. CLI alat može ispisati varijable okruženja kao dio svog izlaza. Ovisnost može tiho pristupiti varijablama procesa kao dio svog izvršavanja.

Nijedna od ovih radnji sama po sebi ne izgleda sumnjivo. Međutim, zajedno stvaraju višestruke puteve curenja.

Tajne mogu završiti u:

  • izgraditi zapisnike koji se pohranjuju i indeksiraju
  • izlaz za otklanjanje pogrešaka dijeljen između timova
  • CI akcije treće strane koje pokreću vanjski kod
  • ovisnosti koje se izvršavaju tijekom instalacije ili izvođenja
  • privremeni artefakti generirani tijekom izgradnje

Nakon što se tajna pojavi u zapisnicima, rijetko ostaje skrivena. Zapisnici se kopiraju, pohranjuju i čuvaju na više sustava. U tom trenutku, izloženost se proteže daleko izvan originala. pipeline.

Zbog toga se curenja varijabli okoline često otkrivaju kasno i nakon što je šteta već učinjena.

Zašto timovi ubacuju varijable okruženja u proces izgradnje

Unatoč tim rizicima, timovi se uvelike oslanjaju na ubrizgavanje varijabli okruženja. I to s dobrim razlogom.

Omogućuje pipelinekako bi ostali fleksibilni. Jedan tijek rada može se prilagoditi različitim okruženjima, autentificirati na više servisa i dinamički mijenjati ponašanje bez mijenjanja koda.

U brzo mijenjajućim DevOps okruženjima, ova fleksibilnost je ključna. Međutim, fleksibilnost uvijek dolazi s kompromisima. Što je dinamičnije pipeline Što više postaje, to je teže kontrolirati što se unutar njega događa. Svaki dodatni korak, integracija ili ovisnost povećava broj mjesta gdje se osjetljivim podacima može pristupiti.

Kao rezultat toga, ubrizgavanje varijabli okruženja prelazi iz detalja konfiguracije u sigurnosni problem.

Uobičajeni rizici prilikom umetanja varijabli okruženja u proces izgradnje

Rizici nisu teoretski. Pojavljuju se u stvarnosti. pipelinesvaki dan.

Tajne cure u zapisnike

Trupci su jedan od najčešći izvori izloženostiZastavice za otklanjanje pogrešaka, CLI alati i tragovi stoga često otkrivaju osjetljive vrijednosti, a da to programeri ne primijete.

Jednom izložene, te se vrijednosti brzo šire među sustavima.

Previše dopustiv pristup

Mnogi pipelineizlažu sve varijable svim poslovima. To stvara nepotreban rizik.

Ako jedan korak postane kompromitiran, može pristupiti vjerodajnicama koje mu zapravo nisu potrebne.

Ovisnost i zlouporaba djelovanja

moderna pipelineuvelike se oslanjaju na alate i integracije trećih strana. Ove komponente rade unutar istog okruženja kao i vaši tajni podaci.

Ako se jedan od njih ponaša zlonamjerno, može tiho pristupiti ubrizganim varijablama.

Prema OWASPNapadi na lanac opskrbe često iskorištavaju pouzdane komponente u procesu izgradnje. Varijable okruženja često postaju najlakša meta.

Ovaj rizik nije teoretski. Nedavni incidenti, poput kompromitiranja axios npm-a, pokazuju kako napadači zloupotrebljavaju pouzdane ovisnosti za pristup tajnama vremena izvođenja i pipeline podatke.
 

Rezervne tajne u kodu

Kada izrada ne uspije zbog nedostajućih varijabli, timovi ponekad dodaju rezervne vrijednosti kako bi zadržali pipelinetrči.

Vremenom, te vrijednosti postaju commitpostavljeni ili raspoređeni, stvarajući dugoročnu izloženost.

Najbolje prakse za sigurno ubrizgavanje varijabli okruženja u proces izgradnje

Osiguravanje načina na koji timovi ubrizgavaju varijable okruženja u proces izgradnje ne odnosi se na uklanjanje fleksibilnosti. Radi se o kontroli načina na koji se te vrijednosti izlažu tijekom izvršavanja.
 
Kategorija Najbolja vježba Zašto je to važno
Pohrana tajni Koristite upravitelj trezora ili CI tajni Sprječava izloženost u kodu
Kontrola pristupa Ograniči pristup po poslu Smanjuje površinu napada
Sječa drveta Vrijednosti osjetljive na masku Sprječava curenje
Opseg i vijek trajanja Koristite kratkotrajne vjerodajnice Ograničava radijus eksplozije
Potvrđivanje Neuspješne izgradnje ako nedostaju varijable Izbjegava nesigurne alternative

Zašto mnogi CI/CD Sigurnosni alati Miss Env Var Curenja

Većina sigurnosnih alata usredotočuje se na skeniranje koda ili ovisnosti nakon što je izgradnja završena.

Međutim, tijekom izvršavanja dolazi do curenja varijabli okruženja.

A pipeline može ispravno ubrizgati tajne podatke i dalje ih otkriti putem zapisnika ili ponašanja tijekom izvođenja. Dok skener otkrije problem, tajna već može biti ugrožena.

To stvara jaz između otkrivanja i sprječavanja.

Timovima su potrebne kontrole koje djeluju dok pipeline radi, a ne nakon što završi.

To postaje posebno kritično kada timovi ubrizgavaju varijable okruženja u proces izgradnje u više poslova i koraka trećih strana bez kontrola tijekom izvođenja.

Kako preporučujemo osiguranje ubrizgavanja varijabli okruženja

U praksi, učinkovita zaštita svodi se na nekoliko dosljednih načela.

Čuvajte tajne izvan pipelineUbrizgavajte ih samo za vrijeme izvođenja. Ograničite pristup na minimalni potrebni opseg. Koristite kratkoročne vjerodajnice kad god je to moguće.

Istovremeno, pratite kako pipelines vrijednostima osjetljivim na pristup. Neočekivani obrasci pristupa često ukazuju na rizik prije nego što curenje postane vidljivo.

Ovaj pristup pomiče sigurnost s reaktivnog otkrivanja na proaktivnu kontrolu.

Kako Xygeni pomaže u zaštiti CI/CD Tajna injekcija

Xygeni se fokusira na točku u kojoj timovi ubrizgavaju varijable okruženja u proces izgradnje i gdje tajne zapravo postaju otkrivene: unutar pipeline, tijekom izvršenja.

Umjesto oslanjanja samo na skeniranje nakon izgradnje, Xygeni analizira kako pipelinekoriste varijable okruženja dok se izvode. To uključuje kako se tajne datoteke kreću između poslova, kako im koraci izgradnje pristupaju i kako ovisnosti međusobno djeluju s okruženjem izvršavanja.

Na primjer, Xygeni može otkriti kada pipeline preširoko izlaže varijable, kada korak riskira ispis osjetljivih vrijednosti u zapisnike ili kada ovisnost pokušava neočekivano pristupiti vjerodajnicama.

U isto vrijeme, guardrails provoditi politiku izravno u pipelineTimovi mogu blokirati nesigurne verzije, ograničiti tajni pristup određenim poslovima i spriječiti rizične konfiguracije prije nego što dođu u produkciju.

Budući da se to događa unutar CI/CD tijek rada, programeri ne moraju mijenjati način na koji rade. Sigurnost postaje dio pipeline, a ne zaseban korak.

Kao rezultat toga, timovi dobivaju uvid u to kako se tajne koriste, kontroliraju kako se otkrivaju i smanjuju rizik od curenja bez usporavanja isporuke.

Završne misli

Ubrizgavanje varijabli okruženja u proces izgradnje ključno je za moderno CI/CD tijekove rada. Međutim, bez odgovarajućih kontrola, ova praksa može otkriti tajne u više faza izvršenja.

Međutim, to također uvodi sloj rizika koji često prolazi nezapaženo.

Izazov nije treba li koristiti varijable okruženja, već kako kontrolirati njihovu izloženost tijekom izvršavanja.

U modernim DevOps okruženjima, sprječavanje curenja tijekom procesa izgradnje puno je važnije od njihovog naknadnog otkrivanja.

alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda