CircleCI – kodbyggande tjänst utsätts för total behörighetskompromiss

CircleCI – kodbyggande tjänst utsätts för total behörighetskompromiss

CircleCI – kodbyggande tjänst drabbas av total behörighetskompromiss PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Om du är en programmerare, oavsett om du kodar för en hobby eller yrkesmässigt, kommer du att veta att skapa en ny version av ditt projekt – en officiell "release"-version som du själv, eller dina vänner, eller dina kunder, faktiskt kommer att installera och användning – är alltid lite av en vit knoge-tur.

När allt kommer omkring beror en releaseversion på all din kod, förlitar sig på alla dina standardinställningar, slocknar endast med din publicerade dokumentation (men ingen insiderkunskap) och måste fungera även på datorer du aldrig har sett förut, konfigurerad i konfigurationer du aldrig har föreställt dig, tillsammans med annan programvara som du aldrig har testat för kompatibilitet.

Enkelt uttryckt, ju mer komplext ett projekt blir, och ju fler utvecklare du har som arbetar med det, och desto mer separata komponenter måste fungera smidigt med alla andra...

...desto mer sannolikt är det att det hela blir mycket mindre imponerande än summan av delarna.

Som en grov analogi, tänk på att banlaget med de snabbaste individuella 100 m sprinterna inte alltid vinner 4x100 m stafett.

CI till undsättning

Ett försök att undvika denna typ av "men det fungerade bra på min dator"-kris är en teknik som kallas på jargongen Kontinuerlig integration, eller CI för korta.

Idén är enkel: varje gång någon gör en förändring i sin del av projektet, ta tag i den personens nya kod och kör dem och deras nya kod genom en fullständig bygg-och-testcykel, precis som du skulle göra innan du skapar en slutlig version version.

Bygg tidigt, bygg ofta, bygg allt, bygg alltid!

Det här är uppenbarligen en lyx som projekt i den fysiska världen inte kan ta: om du bygger, säg, en Sydney Harbour Bridge, kan du inte bygga om ett helt testspann, med helt nya råmaterial, varje gång du bestäm dig för att justera nitningsprocessen eller se om du kan få plats med större flaggstänger på toppen.

Även när du "bygger" ett datorprogramprojekt från ett gäng källfiler till en samling utdatafiler, förbrukar du värdefulla resurser, som elektricitet, och du behöver en plötslig ökning av datorkraften för att köra tillsammans med alla datorer som utvecklarna själva använder.

När allt kommer omkring, i programvaruutvecklingsprocesser som använder CI, är tanken inte att vänta tills alla är redo, och sedan att alla ska gå tillbaka från programmering och vänta på att en slutlig konstruktion ska slutföras.

Byggeringar sker hela dagen, varje dag, så att kodare kan berätta långt i förväg om de oavsiktligt har gjort "förbättringar" som påverkar alla andra negativt – bryta bygget, som jargongen kanske säger.

Tanken är: misslyckas tidigt, fixa snabbt, höj kvaliteten, gör förutsägbara framsteg och skicka i tid.

Visst, även efter ett lyckat testbygge kan din nya kod fortfarande ha buggar i sig, men du kommer åtminstone inte till slutet av en utvecklingscykel och sedan upptäcka att alla måste gå tillbaka till ritbordet bara för att få programvaran att bygga och fungera överhuvudtaget, eftersom de olika komponenterna har glidit ur anpassning.

Tidiga metoder för mjukvaruutveckling hänvisades ofta till som följande vattenfallsmodell, där alla arbetade harmoniskt men självständigt medan projektet sakta drev nedåt floden mellan versionsdeadlines, tills allt kom samman i slutet av cykeln för att skapa en ny release, redo att kasta sig över det tumultartade vattenfallet i en versionsuppgradering, bara för att dyka upp i en annan version mild period med klart vatten nedströms för vidare design och utveckling. Ett problem med dessa "vattenfall" var dock att man ofta hamnade instängd i en till synes oändlig cirkulär virvel precis vid vattenfallets yttersta kant, trots gravitationen, oförmögen att ta sig över branten alls förrän långa hack och modifieringar (och åtföljande överskridanden) gjorde den vidare resan möjlig.

Bara jobbet för molnet

Som du kan föreställa dig innebär att anta CI att ha ett gäng kraftfulla, färdiga servrar till ditt förfogande när någon av dina utvecklare utlöser en bygg-och-testprocedur, för att undvika att glida tillbaka till det där "fastnar vid mycket läppen av vattenfallet” situation.

Det låter som ett jobb för molnet!

Och det är det faktiskt, med många så kallade CI/CD-molntjänster (detta CD är inte en spelbar musikskiva, utan stenografi för kontinuerlig leverans) ger dig flexibiliteten att ha ett ständigt varierande antal olika grenar av olika produkter som går igenom olika konfigurerade builds, kanske till och med på olika hårdvara, samtidigt.

CircleCI är en sådan molnbaserad tjänst...

…men tyvärr för deras kunder har de bara gjort det drabbats av ett brott.

Tekniskt sett, och som verkar vara vanligt nuförtiden, har företaget faktiskt inte använt orden "intrång", "intrång" eller "attack" någonstans i sitt officiella meddelande: hittills är det bara en säkerhetshändelse.

Den ursprungliga få syn på [2023-01-04] sade helt enkelt att:

Vi ville göra dig uppmärksam på att vi för närvarande undersöker en säkerhetsincident och att vår utredning pågår. Vi kommer att ge dig uppdateringar om denna incident och vårt svar när de blir tillgängliga. Vid denna tidpunkt är vi övertygade om att det inte finns några obehöriga aktörer aktiva i våra system; Men av stor försiktighet vill vi se till att alla kunder vidtar vissa förebyggande åtgärder för att skydda dina data också.

Vad göra?

Sedan dess har CircleCI tillhandahållit regelbundna uppdateringar och ytterligare råd, vilket mestadels handlar om detta: "Vänligen rotera alla hemligheter som lagras i CircleCI."

Som vi har förklarat tidigare, jargongordet rotera är illa vald här, eftersom det är arvet från ett farligt förflutet där människor bokstavligen "roterade" lösenord och hemligheter genom ett litet antal förutsägbara val, inte bara för att det var svårare att hålla reda på nya då, utan också för att cybersäkerhet var inte lika viktigt som det är idag.

Vad CircleCI betyder är att du måste ÄNDRA alla dina lösenord, hemligheter, åtkomsttokens, miljövariabler, offentlig-privata nyckelpar och så vidare, förmodligen för att angriparna som bröt nätverket antingen stal ditt eller inte kan bevisas att de inte att ha stulit dem.

Företaget har en tillhandahöll en lista av de olika typerna av privat säkerhetsdata som påverkades av intrånget, och har skapat ett praktiskt skript som heter CircleCI-Env-inspektör som du kan använda för att exportera en JSON-formaterad lista över alla CI-hemligheter som du behöver ändra i din miljö.

Dessutom kan cyberkriminella nu ha åtkomsttokens och kryptografiska nycklar som kan ge dem en väg tillbaka till ditt eget nätverk, särskilt eftersom CI-byggprocesser ibland behöver "ringa hem" för att begära kod eller data som du inte kan eller vill ha att ladda upp till molnet (skript som gör detta är kända på jargongen som löpare).

Så, CircleCI rekommenderar:

Vi rekommenderar även kunder att granska interna loggar för sina system för eventuell obehörig åtkomst från och med 2022-12-21 [till och med 2023-01-04], eller efter att [ändra dina hemligheter] har slutförts.

Spännande nog, om det är förståeligt, vissa kunder har noterat att det datum som CircleCI antydde då detta intrång började [2022-12-21] bara råkar sammanfalla med ett blogginlägg som företaget publicerat om senaste tillförlitlighetsuppdateringar.

Kunder ville veta, "Var intrånget relaterat till buggar som introducerades i den här uppdateringen?"

Med tanke på att företagets artiklar om tillförlitlighetsuppdatering verkar vara rullande nyhetssammanfattningar, snarare än tillkännagivanden av individuella ändringar gjorda på specifika datum, är det uppenbara svaret "Nej"...

…och CircleCI har uppgett att det tillfälliga datumet 2022-12-21 för reliabilitetsblogginlägget var just det: en slump.

Glad nybörjare!


Tidsstämpel:

Mer från Naken säkerhet