CircleCI – storitev za gradnjo kode trpi popolno ogroženost poverilnic

CircleCI – storitev za gradnjo kode trpi popolno ogroženost poverilnic

CircleCI – code-building service suffers total credential compromise PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Če ste programer, ne glede na to, ali kodirate za hobi ali poklicno, boste vedeli, da ustvarite novo različico svojega projekta – uradno različico »izdaje«, ki jo boste sami, vaši prijatelji ali stranke dejansko namestili in uporaba – je vedno malo bela vožnja.

Navsezadnje je različica za izdajo odvisna od vse vaše kode, se zanaša na vse vaše privzete nastavitve, izda samo z vašo objavljeno dokumentacijo (vendar brez notranjega znanja) in mora delovati tudi na računalnikih, ki jih še niste videli, nastavljenih v konfiguracije, ki si jih nikoli niste predstavljali, skupaj z drugo programsko opremo, katere združljivosti niste nikoli preizkusili.

Preprosto povedano, bolj kompleksen postane projekt in več razvijalcev, ki delajo na njem, in več ločenih komponent, ki morajo gladko delovati z vsemi drugimi ...

…bolj verjetno je, da bo celota veliko manj impresivna kot vsota delov.

Kot groba analogija upoštevajte, da tekmovalna ekipa z najhitrejšimi posameznimi sprinterji na 100 m ne zmaga vedno v štafeti 4 x 100 m.

CI na pomoč

Eden od poskusov, da bi se izognili tovrstni krizi »vendar je na mojem računalniku dobro delovalo«, je tehnika, ki je v žargonu znana kot Stalna integracijaali CI na kratko.

Ideja je preprosta: vsakič, ko kdorkoli naredi spremembo v svojem delu projekta, zgrabi novo kodo te osebe in jih skupaj z njihovo novo kodo prepelji skozi celoten cikel gradnje in testiranja, tako kot bi to naredil pred ustvarjanjem končne izdaje različica.

Gradite zgodaj, gradite pogosto, gradite vse, gradite vedno!

Jasno je, da je to razkošje, ki ga projekti v fizičnem svetu ne morejo sprejeti: če gradite, na primer, pristaniški most v Sydneyju, ne morete znova zgraditi celotnega testnega razpona s povsem novimi surovinami vsakič, ko odločite se prilagoditi postopek kovičenja ali preveriti, ali lahko na vrh namestite večje drogove za zastave.

Tudi ko "zgradite" projekt računalniške programske opreme iz enega kupa izvornih datotek v zbirko izhodnih datotek, porabite dragocene vire, kot je elektrika, in potrebujete nenaden porast računalniške moči, da deluje skupaj z vsemi računalniki, ki jih razvijalci sami uporabljajo.

Navsezadnje pri procesih programskega inženiringa, ki uporabljajo CI, ideja ni čakati, dokler niso vsi pripravljeni, nato pa se vsi odmaknejo od programiranja in počakajo, da se dokonča končna gradnja.

Zgradbe se dogajajo ves dan, vsak dan, tako da lahko koderji dolgo vnaprej povedo, ali so nenamerno izvedli »izboljšave«, ki negativno vplivajo na vse ostale – lomljenje zgradbe, kot bi se reklo v žargonu.

Ideja je: odpovejte se zgodaj, popravite hitro, povečajte kakovost, naredite predvidljiv napredek in odpremo pravočasno.

Seveda, tudi po uspešni testni gradnji ima vaša nova koda morda še vedno napake, vendar vsaj ne boste prišli do konca razvojnega cikla in potem ugotovili, da se morajo vsi vrniti k risalni deski, samo da bi dobili programsko opremo za gradnjo in sploh delovanje, ker so različne komponente neusklajene.

Zgodnje metode razvoja programske opreme so bile pogosto označene kot naslednje model slapa, kjer so vsi delali harmonično, a neodvisno, ko je projekt med roki za različico nežno lebdel navzdol, dokler se na koncu cikla ni vse združilo v novo izdajo, pripravljeno, da pahne čez burni slap nadgradnje različice, da bi le prišla v drugo nežno obdobje čiste vode dolvodno za nadaljnje načrtovanje in razvoj. Ena težava s temi "slapovi" pa je bila, da ste pogosto končali ujeti v očitno neskončnem krožnem vrtincu tik ob samem robu slapa, gravitaciji navkljub, tako da sploh niste mogli priti čez rob prepada, dokler dolgotrajni vdori in spremembe (in spremljajoče prekoračitve) so omogočile nadaljnje potovanje.

Samo delo za oblak

Kot si lahko predstavljate, sprejetje CI pomeni, da imate na voljo kup zmogljivih strežnikov, ki so pripravljeni na uporabo, kadar koli kateri od vaših razvijalcev sproži postopek gradnje in testiranja, da se izognete vrnitvi v to »zataknitev pri zelo lip of the slap« situacija.

To zveni kot delo za oblak!

In res je, s številnimi tako imenovanimi storitvami v oblaku CI/CD (ta CD ni glasbeni disk, ki bi ga bilo mogoče predvajati, ampak okrajšava za neprekinjena dostava), ki vam ponuja prilagodljivost, da imate nenehno spreminjajoče se število različnih vej različnih izdelkov, ki gredo skozi različno konfigurirane gradnje, morda celo na različni strojni opremi, hkrati.

KrogCI je ena taka storitev v oblaku ...

... vendar so na žalost svojih strank pravkar utrpel kršitev.

Tehnično gledano in kot se zdi dandanes običajno, podjetje dejansko ni nikjer v svojem uradnem obvestilu uporabilo besed »kršitev«, »vdor« ali »napad«: do zdaj je to le varnostni incident.

Izvirnik obvestilo [2023-01-04] preprosto izjavil, da:

Želeli smo vas obvestiti, da trenutno preiskujemo varnostni incident in da naša preiskava še poteka. Posredovali vam bomo posodobitve o tem dogodku in naš odgovor, ko bodo na voljo. Na tej točki smo prepričani, da v naših sistemih ni aktivnih nepooblaščenih akterjev; vendar pa želimo zaradi velike previdnosti zagotoviti, da vse stranke sprejmejo določene preventivne ukrepe za zaščito vaših podatkov.

Kaj storiti?

Od takrat CircleCI zagotavlja redne posodobitve in nadaljnje nasvete, ki se večinoma skrčijo na tole: "Prosimo, zavrtite vse in vse skrivnosti, shranjene v CircleCI."

Kot smo že pojasnili, žargonska beseda vrtenje tukaj je slabo izbrano, ker gre za dediščino nevarne preteklosti, kjer so ljudje dobesedno »krotili« gesla in skrivnosti z majhnim številom predvidljivih izbir, ne samo zato, ker je bilo takrat težje slediti novim, ampak tudi zato, ker kibernetska varnost ni bila ni tako pomembna, kot je danes.

CircleCI pomeni, da morate SPREMENITI vsa svoja gesla, skrivnosti, žetone za dostop, spremenljivke okolja, pare javno-zasebnih ključev in tako naprej, verjetno zato, ker so napadalci, ki so vdrli v omrežje, ukradli vaše ali pa ni mogoče dokazati, da niso da bi jih ukradel.

Podjetje ima predložil seznam različnih vrst zasebnih varnostnih podatkov, na katere je vplivala kršitev, in je ustvaril priročen skript, imenovan CircleCI-Env-Inspector ki jih lahko uporabite za izvoz seznama v formatu JSON vseh skrivnosti CI, ki jih morate spremeniti v svojem okolju.

Poleg tega imajo lahko kibernetski kriminalci žetone za dostop in kriptografske ključe, ki bi jim lahko omogočili pot nazaj v vaše lastno omrežje, zlasti zato, ker morajo procesi gradnje CI včasih "poklicati domov", da zahtevajo kodo ali podatke, ki jih ne morete ali ne želite naložiti v oblak (skripti, ki to počnejo, so v žargonu znani kot tekači).

CircleCI torej svetuje:

Priporočamo tudi, da stranke pregledajo notranje dnevnike za svoje sisteme glede morebitnega nepooblaščenega dostopa od 2022 [do vključno 12] ali po zaključku [spreminjanje vaših skrivnosti].

Zanimivo, čeprav razumljivo, so nekatere stranke opazile, da datum, ki ga navaja CircleCI, ko se je začela ta kršitev [2022-12-21], slučajno sovpada z objavo v spletnem dnevniku podjetje objavilo o nedavnih posodobitvah zanesljivosti.

Stranke so želele vedeti: »Ali je bila kršitev povezana z napakami, uvedenimi v tej posodobitvi?«

Glede na to, da se članki podjetja o posodobitvah zanesljivosti zdijo tekoči povzetki novic, ne pa objave posameznih sprememb, izvedenih na določene datume, je očiten odgovor »Ne« ...

...in CircleCI je izjavil, da je bil naključni datum 2022-12-21 za objavo v blogu o zanesljivosti prav to: naključje.

Srečno obnavljanje ključev!


Časovni žig:

Več od Gola varnost