vložiť premenné prostredia do procesu zostavovania

Bezpečné vkladanie premenných prostredia do procesu zostavovania

Vkladanie premenných prostredia do procesu zostavovania je standard prax v modernom CI/CD pipelineTímy vkladajú do procesu zostavovania premenné prostredia, aby do zostavení odovzdali tajné údaje, tokeny a konfiguráciu za behu bez pevne zakódovaných hodnôt. Na prvý pohľad to vyzerá ako jednoduchý a bezpečný vzor.

V praxi sa však často stáva jedným z najviac podceňovaných rizík v dodávateľskom reťazci softvéru.

Pretože akonáhle tímy vložia premenné prostredia do procesu zostavovania, tieto hodnoty prestanú byť izolované. Stanú sa prístupnými pre všetko, čo beží v danom prostredí. pipelineSkripty pre zostavovanie, nástroje rozhrania príkazového riadka, akcie tretích strán a dokonca aj závislosti ich môžu čítať.

Tu sa veci začínajú kaziť.

V tejto príručke si prejdeme procesom, ako tímy v reálnom prostredí vkladajú premenné prostredia do procesu zostavovania. pipelines, kde v skutočnosti dochádza k únikom a ako zabezpečiť proces zostavovania bez spomalenia vývoja.

Čo znamená vložiť premenné prostredia do procesu zostavovania

V jadre vkladanie premenných prostredia znamená odovzdávanie hodnôt do pipeline za behu, aby k nim úlohy mali prístup počas vykonávania. 

V praxi väčšina tímov vkladá premenné prostredia do procesu zostavovania viackrát v rôznych fázach, často bez úplného prehľadu o tom, ako sa tieto hodnoty používajú.

Tieto hodnoty zvyčajne zahŕňajú kľúče API, poverenia databázy, tokeny alebo konfiguráciu špecifickú pre dané prostredie. Namiesto ich priameho ukladania do kódu, CI/CD Systém ich dynamicky načíta pri spustení zostavovania.

Toto rieši skutočný problém. Udržiava kód čistý, vyhýba sa duplicite a umožňuje to isté... pipeline spúšťať sa v prostredí staging, testovania a produkcie.

Tento model sa však spolieha na predpoklad, ktorý už neplatí: že prostredie zostavovania je kontrolované a predvídateľné.

moderné pipelinenie sú ani jedno, ani druhé. Zahŕňajú viacero krokov, externé integrácie a závislosti, ktoré dynamicky vykonávajú kód. V dôsledku toho, akonáhle je premenná vložená, už to nie je len konfigurácia. Stáva sa súčasťou kontextu vykonávania.

Kde dochádza k úniku premenných prostredia v procese zostavovania

Väčšina únikov sa nedeje preto, že by niekto explicitne odhalil tajomstvo. Dejú sa preto, lebo pipelinesprávajú sa spôsobom, ktorý vývojári úplne nepredvídajú.

Vždy, keď tímy vložia premenné prostredia do procesu zostavovania, rozšíria počet komponentov, ktoré môžu potenciálne pristupovať k citlivým údajom.

Napríklad vývojár môže povoliť podrobné protokolovanie na ladenie neúspešného zostavenia. Nástroj CLI môže vypísať premenné prostredia ako súčasť svojho výstupu. Závislosť môže ticho pristupovať k premenným procesu ako súčasť svojho vykonávania.

Žiadna z týchto akcií sama o sebe nevyzerá podozrivo. Spolu však vytvárajú viacero ciest úniku.

Tajomstvá sa môžu ocitnúť v:

  • vytvárať protokoly, ktoré sa ukladajú a indexujú
  • výstup ladenia zdieľaný medzi tímami
  • akcie CI tretích strán, ktoré spúšťajú externý kód
  • závislosti, ktoré sa vykonávajú počas inštalácie alebo behu
  • dočasné artefakty generované počas zostavovania

Keď sa tajomstvo objaví v protokoloch, zriedkakedy zostane utajené. Protokoly sa kopírujú, ukladajú a uchovávajú vo viacerých systémoch. V tomto bode sa odhalenie rozširuje ďaleko za rámec originálu. pipeline.

Preto sa úniky premenných prostredia často objavia neskoro a až po tom, čo je škoda už spôsobená.

Prečo tímy vkladajú premenné prostredia do procesu zostavovania

Napriek týmto rizikám sa tímy vo veľkej miere spoliehajú na vkladanie premenných prostredia. A to z dobrého dôvodu.

Umožňuje to pipelineaby zostali flexibilní. Jeden pracovný postup sa môže prispôsobiť rôznym prostrediam, overovať si totožnosť vo viacerých službách a dynamicky meniť správanie bez úpravy kódu.

V rýchlo sa meniacom DevOps prostredí je táto flexibilita nevyhnutná. Flexibilita však vždy prichádza s kompromismi. Čím dynamickejšie pipeline Čím viac sa stáva, tým ťažšie je kontrolovať, čo sa v ňom deje. Každý ďalší krok, integrácia alebo závislosť zvyšuje počet miest, kde je možné získať prístup k citlivým údajom.

V dôsledku toho sa vkladanie premenných prostredia mení z detailu konfigurácie na bezpečnostný problém.

Bežné riziká pri vkladaní premenných prostredia do procesu zostavovania

Riziká nie sú teoretické. Objavujú sa v praxi. pipelinekaždý deň.

Tajomstvá unikajúce do protokolov

Záznamy sú jedným z najčastejšie zdroje expozícieLadiace príznaky, nástroje CLI a stopy zásobníka často odhaľujú citlivé hodnoty bez toho, aby si to vývojári všimli.

Po odhalení sa tieto hodnoty rýchlo šíria medzi systémami.

Príliš permisívny prístup

Mnoho pipelinevystavuje všetky premenné všetkým úlohám. To vytvára zbytočné riziko.

Ak dôjde k ohrozeniu jedného kroku, systém môže získať prístup k povereniam, ktoré v skutočnosti nepotrebuje.

Závislosť a zneužívanie konania

moderné pipelinesa vo veľkej miere spoliehajú na nástroje a integrácie tretích strán. Tieto komponenty bežia v rovnakom prostredí ako vaše tajné atribúty.

Ak sa jeden z nich správa škodlivo, môže k vloženým premenným pristupovať potichu.

Podľa OWASPÚtoky v dodávateľskom reťazci často zneužívajú dôveryhodné komponenty v procese zostavovania. Premenné prostredia sa často stávajú najľahším cieľom.

Toto riziko nie je teoretické. Nedávne incidenty, ako napríklad kompromitácia Axios NPM, ukazujú, ako útočníci zneužívajú dôveryhodné závislosti na prístup k tajným údajom za behu a pipeline dáta.
 

Záložné tajomstvá v kóde

Keď zostavenia zlyhajú kvôli chýbajúcim premenným, tímy niekedy pridajú záložné hodnoty, aby zachovali pipelinebeží.

Postupom času sa tieto hodnoty stávajú commitpoužité alebo nasadené, čím sa vytvára dlhodobá expozícia.

Najlepšie postupy na bezpečné vkladanie premenných prostredia do procesu zostavovania

Zabezpečenie spôsobu, akým tímy vkladajú premenné prostredia do procesu zostavovania, nespočíva v odstránení flexibility. Ide o kontrolu toho, ako sú tieto hodnoty vystavené počas vykonávania.
 
kategórie Najlepší tréning Prečo je to dôležité
Úložisko tajomstiev Použite správcu tajných úložísk alebo CI Zabraňuje odhaleniu v kóde
Riadenie prístupu Obmedziť prístup na úlohu Znižuje povrch útoku
Prihlásenie Hodnoty citlivé na masku Zabraňuje úniku
Rozsah a životnosť Používajte krátkodobé poverenia Obmedzuje polomer výbuchu
Potvrdenie Zlyhanie zostavení, ak chýbajú premenné Vyhýba sa nebezpečným záložným riešeniam

Prečo mnohí CI/CD Úniky bezpečnostných nástrojov Miss Env Var

Väčšina bezpečnostných nástrojov sa zameriava na skenovanie kódu alebo závislostí po dokončení zostavovania.

Počas vykonávania však dochádza k únikom premenných prostredia.

A pipeline dokáže správne vložiť tajné údaje a stále ich odhaliť prostredníctvom protokolov alebo správania za behu. V čase, keď skener zistí problém, tajné údaje už môžu byť ohrozené.

To vytvára priepasť medzi detekciou a prevenciou.

Tímy potrebujú kontroly, ktoré fungujú počas pipeline beží, nie po jeho skončení.

Toto sa stáva obzvlášť kritickým, keď tímy vkladajú premenné prostredia do procesu zostavovania naprieč viacerými úlohami a krokmi tretích strán bez kontrol za behu.

Ako odporúčame zabezpečiť vkladanie premenných prostredia

V praxi sa účinná ochrana redukuje na niekoľko konzistentných zásad.

Uchovávajte tajomstvá mimo pipelineVkladajte ich iba za behu. Obmedzte prístup na minimálny požadovaný rozsah. Vždy, keď je to možné, používajte krátkodobé prihlasovacie údaje.

Zároveň sledujte, ako pipelines citlivými hodnotami prístupu. Neočakávané vzorce prístupu často naznačujú riziko skôr, ako sa únik stane viditeľným.

Tento prístup posúva bezpečnosť z reaktívnej detekcie na proaktívnu kontrolu.

Ako Xygeni pomáha chrániť CI/CD Tajná injekcia

Xygeni sa zameriava na bod, kde tímy vkladajú premenné prostredia do procesu zostavovania a kde sa tajné údaje skutočne odhalia: vnútri pipeline, počas vykonávania.

Namiesto spoliehania sa iba na skenovanie po zostavení Xygeni analyzuje, ako pipelinePoužívajú premenné prostredia počas svojho behu. Patria sem premenné prostredia, ako sa tajné údaje presúvajú medzi úlohami, ako k nim kroky zostavovania pristupujú a ako závislosti interagujú s prostredím vykonávania.

Napríklad Xygeni dokáže zistiť, kedy pipeline príliš široko sprístupňuje premenné, keď krok riskuje vytlačenie citlivých hodnôt do protokolov alebo keď sa závislosť neočakávane pokúša získať prístup k povereniam.

V rovnakom čase, guardrails priamo presadzovať politiku v pipelineTímy môžu blokovať nebezpečné zostavenia, obmedzovať tajný prístup ku konkrétnym úlohám a predchádzať rizikovým konfiguráciám skôr, ako sa dostanú do produkcie.

Pretože sa to deje v rámci CI/CD pracovný postup, vývojári nemusia meniť spôsob svojej práce. Bezpečnosť sa stáva súčasťou pipeline, nie samostatný krok.

Vďaka tomu tímy získajú prehľad o tom, ako sa tajné informácie používajú, kontrolujú, ako sú odhaľované, a znižujú riziko únikov bez spomalenia dodávok.

Záverečné myšlienky

Vkladanie premenných prostredia do procesu zostavovania je nevyhnutné pre moderné CI/CD pracovné postupy. Bez riadnej kontroly však môže tento postup odhaliť tajomstvá vo viacerých fázach vykonávania.

Zároveň to však prináša aj vrstvu rizika, ktorá často zostáva nepovšimnutá.

Problém nie je v tom, či používať premenné prostredia, ale ako kontrolovať ich expozíciu počas vykonávania.

V moderných DevOps prostrediach je oveľa dôležitejšie predchádzať únikom počas procesu zostavovania ako ich následne odhaliť.

nástroje na analýzu zloženia softvéru SCA
Stanovte si priority, odstraňujte a zabezpečte svoje softvérové ​​riziká
Získajte svoj bezplatný účet.
Nie je potrebná kreditná karta.

Zabezpečte si vývoj a dodávku softvéru

s produktovým balíkom Xygeni