Cad is féidir a dhéanamh mícheart leis CI/CD pipelines?

Comhtháthú leanúnach agus seachadadh leanúnach (CI/CD) pipelineIs iad bunús aon eagraíochta bogearraí a thógann bogearraí ar bhealach “nua-aimseartha”. Soláthraíonn uathoibriú cumhacht mhór, ach cailleann formhór na bhforbróirí an fhreagracht a bhaineann leis.

ForbróirSea, glacaimid CI/CD slándála dáiríre agus smacht láidir a bheith agat ar chothaitheoirí cóid, athbhreithniú a dhéanamh commitroimh chumasc; poist agus pipelineá gcothabháil ag foireann shinsearach, tugann siad aire nach sceitheann siad rúin sa pipelines. Agus rinne pearsanra a bhfuil eolas acu ar an rud an uirlis a shuiteáil. Cad a d’fhéadfadh dul amú?

A fhorbróir a chara, CI/CD Tá córais casta. Mheall a dromchla ionsaithe leathan gníomhaithe mailíseacha. Is fearr a bheith cúramach agus gan rómhuiníneach a bheith agat riamh.

Uaireanta coinnítear an chumraíocht réamhshocraithe agus bíonn sí ina cara is fearr do hackers. Is féidir lochtanna criticiúla a bheith i láthair. CI/CD pipeline foinsí, i gcumraíocht an chórais, nó timpeall ar phróiseas agus comhthéacs an pipeline agus conas a spreagtar é.

Sa phost seo cuirfimid muid féin i mbróga na ndroch-aisteoirí. Samhlaigh go raibh muid ag léamh machnaimh M3M3N70 (Cuimhneachán Mori?) agus Rage Corraigh áit éigin sa ghréasán dorcha, i dteanga neamh-Iartharach is dócha, ach ná caill riamh go bhfuil an t-olc scaipthe ar fud an domhain.

 

Sna sean-amanna maithe bhí sé chomh héasca sin…

M3M3N70Ar ais go dtí na sean-amanna maithe, bhí ár ngnó chomh héasca sin… Ní raibh torthaí maithe ag baint le laethanta nialas, bhí aipeanna oscailte go forleathan le leochaileachtaí éasca le saothrú, agus bhíomar in ann bogadh go cliathánach i gceann tamaill bhig.

Rage CorraighFu#@Ifreann! Tá roinnt daoine amadánacha amuigh ansin go fóill, ach tá rudaí athraithe. Chuir na daoine móra go leor machnaimh ar an gcacamas AppSec sin.

M3M3N70Sea. Ach is iad na forbróirí na hamadáin nua. Is fusa dúinne na huirlisí a úsáideann na daoine seo a roghnú. Is mianach óir é an CI, go háirithe! Comharthaí rochtana scamall, SCM dintiúir, pasfhocail bhunachar sonraí léiriúcháin, eochracha príobháideacha SSH, dintiúir úsáideoirí CI eile… Bhí sé sách simplí léim ó na rudaí forbartha leadránacha go dtí an fhíor-rud.

Uathoibriú chun bogearraí a thógáil, a thástáil agus a imscaradh le CI/CD Is minic a bhíonn rúin ag teastáil ó uirlis chun orduithe a thabhairt de réir a chéile. Agus is minic a sceithtear iad, agus bíonn iarmhairtí clúiteacha mar thoradh orthu.

PipelineTeastaíonn rúin uathu a sceithtear uaireanta

M3M3N70: The code monkeys slipped their AWS keys in a pipeline on a GitHub commit, later they removed the thing but not changed git history. For our scripts it was trivial to scan the history, grab the key and wreak havoc.

B’fhéidir gur sna sean-amanna maithe a bhí sé le fáil i stair Git .env comhad (dhearmad an forbróir é a chur leis .gitignore):

AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=wJalrXUtn...
AWS_REGION=us-east-1
APP_FOLDER=...
S3BUCKET=...

a úsáideadh i sreabhadh oibre GitHub .github/deploy.yaml a raibh rud éigin mar seo ann:

jobs:
build:
name: Automated build and deployment into AWS
runs-on: ubuntu-22.04
steps:
# Load environment from .env file
- id: dotenv
uses: falti/dotenv-action@v1.0.2

- name: Configure AWS Credentials
uses:
with:
args: --acl public-read --follow-symlinks --delete
aws-access-key-id: $
aws-secret-access-key: $
aws-region: $

# ... build steps skipped ...

- name: Upload compiled code for deployment
working-directory: $/packaged_app
run: aws s3 cp my-app.zip s3://$

- name: Deploy the app
run: aws deploy create-deployment ...

M3M3N70: sea! Bhí na heochracha aws sin ag obair! Rinneamar tástáil ar athrú neamhdhíobhálach san aip ar dtús, agus ansin chuireamar an sting leis mar is cosúil nach raibh a fhios ag na daoine sin. Bingo! Feachtas iontach…

Níor úsáid an drochghníomhaí ach eochracha AWS chun feidhmchlár modhnaithe a uaslódáil le malware agus ansin rith sé an t-ordú deploy leis na dintiúir sin. Na rúin sceite, mar aon leis an bhfaisnéis atá sa pipelineIs dócha go gciallódh “A leithéid de fheachtas!” gur scrios Memento an t-íospartach bocht.

Is é an rud a insíonn Memento dúinn anseo ná nuair a tharlaíonn sceitheadh ​​rúnda, cosúil le heochracha rochtana AWS san sampla, go gcaithfidh tú an rún a chúlghairm (na heochracha thuas a rothlú). láithreachBíonn ann i gcónaí fuinneog nochta idir an sceitheadh commit agus an neamhbhailíochtú rúnda; Tá sé deacair stair Git a athscríobh (rinne fiú an stát údarásach is deacra iarracht ar athscríobh staire den chineál seo, gan aon toradh) agus is dócha nach raibh sé éifeachtach (b’fhéidir gur chlónáil ár gcairde roimh an stór leis an sceitheadh ​​rúnda commit). Rothlaigh na heochracha láithreach, agus guigh agus logaí gníomhaíochta á léamh agat don chuntas spriocdhírithe le linn na fuinneoige nochta!

Is dócha gur cheart d’eagraíochtaí toirmeasc a chur ar úsáid rúin fhadtéarmacha i CI/CD pipelines, agus cuir dintiúir shealadacha ina n-áit. Sa sampla roimhe seo le heochracha AWS i ngníomhartha GitHub, is sábháilte úsáid a bhaint as Soláthraí OpenID Connect (OIDC) chun dintiúir ghearrthéarmacha a fháil atá riachtanach le haghaidh gníomhartha.

Rage CorraighBhí an t-ádh leat! Ba ghnáthchleachtas sna seanlaethanta scripteanna a sceitheadh ​​le heochracha crua-chódaithe, fiú ar bhuicéid S3 a raibh rochtain phoiblí orthu. Ní raibh le déanamh agat ach na rudaí sa bhuicéad a thrasnú agus roinnt greimnithe a dhéanamh chun rudaí suimiúla a aimsiú.

Uaireanta, bhíodh an limistéar a úsáideadh le haghaidh imscartha (buicéad AWS S3 sa sampla seo) oscailte le léamh ó dhaoine seachtracha, mar gheall ar locht cumraíochta (nach bhfuair faoi deara). Rage Corraigh úsáideadh rud éigin mar seo:

aws s3 ls --recursive s3://<bucket_name>/<path>/ | \
awk '{print $4}' | \
xargs -I FNAME sh -c "echo FNAME; \
aws s3 cp s3://<bucket_name>/FNAME - | \
grep '<regex_pattern>'"

Is dócha gur cruthaíodh an buicéad i dteimpléad soláthair a d'fhéadfaí a scanadh go huathoibríoch le haghaidh lochtanna slándála.

Bhí cumraíocht réamhshocraithe an uirlis ina bréagán dúinn.

Chun samplaí coincréiteacha a thabhairt, labhraímis faoi Jenkins, ceann de na huirlisí CI is mó tóir.

Rage CorraighAn cuimhin leat an bosca seiceála “Cumasaigh Slándáil” i Jenkins, agus cé mhéad eagraíocht a roghnaigh gan é a ghníomhachtú ar mhaithe le háisiúlacht? Agus na “Is féidir le duine ar bith aon rud a dhéanamh"comboanna ceadanna mar réamhshocrú? Agus na breiseáin cráite Jenkins sin, cosúil leis an Breiseán GitHub OAuthRoghnaigh an fear a chumraigh é “Deonaigh ceadanna LÉIGH do gach Úsáideoir Fíordheimhnithe” agus “Úsáid ceadanna stórtha GitHub”, rud a thug rochtain dúinn ar a gcuid tionscadal go léir.

(Gabh mo leithscéal, a Jenkins, as ucht sampla a chur thú 😉

Coinnigh ort féin (fiú bí ag tabhairt andúile duit féin) i bprionsabail slándála. Ceann acu is ea an Slán de réir réamhshocraithe prionsabal: ba chóir go mbeadh na rialuithe réamhshocraithe sna socruithe is sláine is féidir. Ba chóir slándáil a ionchorprú CI/CD uirlisí agus pipelineón tús, seachas a bheith ina smaoineamh iar-dheiridh. Ach is minic a bhíonn coimhlint idir cairdiúlacht úsáideora agus áisiúlacht agus slándáil.

I gcás Jenkins, tá an fíordheimhniú ionsuite ró-leochaileach: ná húsáid na sásraí fíordheimhnithe ionsuite i Jenkins choícheIs fearr meicníocht tríú páirtí (SAML, LDAP, Google…) a roghnú, leis an mbreiseán Straitéis Údaraithe Rólbhunaithe (“RBAC”). Agus bí thar a bheith cúramach leis an admin áireamh.

Tabhair aire don chaoi a bhfuil an post agus pipeline láimhseáiltear comhaid i Jenkins. An rud céanna le Breiseán Cumraíochta-mar-Chód agus a chomhaid chumraíochta, a bhaineann le cumraíocht Jenkins.

Ag bogadh ó fhéinóstáil CI/CD Cuireann an t-athrú ar chórais SaaS scamallbhunaithe deireadh le roinnt rioscaí féideartha a cheadaíonn gluaiseacht chliathánach laistigh de líonra na heagraíochta, ach cuireann sé cinn eile leis, amhail naisc sheachtracha a oscailt idir córais inmheánacha atá ann cheana féin agus na córais sheachtracha. CI/CD uirlis.

Ba chóir d’eagraíochtaí a ndícheall a dhéanamhciscúram cuí agus an CI/CD córas, ag tosú leis na socruithe is sriantaí agus ag oscailt de réir a chéile leis na ceadanna íosta riachtanacha don pipeline céimeanna.

Cumrú slándála i CI/CD D’fhéadfadh uirlisí a bheith casta. Bíonn breiseáin nó síntí ag go leor acu a bhfuil formhór na leochaileachtaí iontu agus a gcaithfear iad a nuashonrú.

D’fhéadfadh scanóirí míchumraíochta slándála le haghaidh uirlisí casta den sórt sin, nó tagarmharcanna, cabhrú.

Cód á instealladh isteach pipeline orduithe le haghaidh spraoi agus brabúis

M3M3N70An ndearna tú riamh úsáid as Seiceálacha Cód Neamhiontaofa, na gníomhartha agus na scripteanna leochaileacha sin atá soghonta i leith instealladh orduithe?

Léiríonn an chuid seo go bhfuil an pipeline d’fhéadfadh botúin chódaithe a bheith ann féin a chuireann ar chumas drochghníomhaithe forghníomhú cód treallach a instealladh sa pipeline gan athrú ar an pipeline foinse féinMar shampla, trí úsáid a bhaint as caidreamh poiblí

Céad sampla de sreabhadh oibre GitHub trua:

# INSECURE. Provided as an example only.
on:
pull_request_target #1

jobs:
build:
name: Build and test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: $ #2

- uses: actions/setup-node@v1
- run: |
npm install #3
npm build
# ... more steps ...

Snaidhmthe pull_request_target Is cleachtas contúirteach é spreagadh sreabhadh oibre le seiceáil shoiléir ar PR neamhiontaofa a d'fhéadfadh cur isteach ar an stór. Sa sampla, an teaglaim mhí-ámharach de:

  • pull_request_target imeacht, a bhfuil cead scríbhneoireachta aige de réir réamhshocraithe chuig an stór sprice agus rúin an stór sprice, fiú ó fhorcanna seachtracha, agus a ritheann i gcomhthéacs stór sprice an PR,
  • seiceáil an cód PR ón bhfoinse, stór neamhiontaofa,
  • aon script a d’fhéadfadh oibriú ar ábhar atá faoi rialú PR a spreagadh, mar atá i gcás npm install, agus
  • gan coinníoll a úsáid chun an spreagadh pull_request_target ní rithfidh an teagmhas ach amháin má shanntar lipéad de shaghas éigin 'rinneadh grinnscrúdú ar an PR seo' don PR (ní féidir le húsáideoirí seachtracha lipéid a shannadh don PR).

Glacann an dara sampla ionchur neamhiontaofa (ó cheist, trácht nó pull request) mar fhoinse d'argóintí a chuirtear chuig pipeline ordú trí nathanna. Seo é an pipeline leagan den leochaileacht insteallta ordaithe OS.

- name: Check title
run: |
title="$"
if [[ ! $title =~ ^.*:\ .*$ ]]; then
echo "Bad issue title"
exit 1
fi

Gineann an oibríocht rith script bhlaosc sealadach bunaithe ar an teimpléad, leis an $ curtha ina ionad, rud a fhágann go bhfuil sé leochaileach d’instealladh orduithe sliogáin. D’fhéadfadh ionsaitheoir le cuntas GitHub bréige fadhb a chruthú le teideal a"; bad_code_goes_here;#, agus búm! 

Rage CorraighÓ, bhí na daoine sin ag oscailt an dorais le haghaidh instealladh ordaithe trí cheist a oscailt go simplí…

Bhí leochaileachtaí forghníomhaithe cóid i ngníomhartha GitHub, amhail trácht gajira, socraithe anois. Léigh le do thoil “Ionchur neamhiontaofa i sreafaí oibre GitHub” le haghaidh sonraí iomlána.

Moráltacht an scéil: Ná seiceáil amach agus ná tóg fógraí poiblí ó fhoinsí nach bhfuil iontaofa riamh gan an fógra poiblí a athbhreithniú ar dtús. D’fhéadfadh ‘Gan muinín’ anseo, mura bhfuil fíordheimhniú dian ar bhunús ann, aon chuntas forbróra a d’fhéadfadh a bheith fuadaithe a chiallaíonn.

 

Imscaradh malware gan choinne anseo!

Imscaradh leanúnach is buaicphointe an uathoibrithe é, ach d’fhéadfadh easpa rialuithe formheasa cuí ar an mbuaicphointe sin a chur ó mhaith pipeline sreabhadh.

Na rioscaí a bhaineann le himscaradh lán-uathoibrithe ón bhfoinse commit I measc na n-ábhar a bhaineann le córais táirgthe tá an fhéidearthacht go n-imscarfaí cód mailíseach chuig timpeallachtaí táirgthe gan a bheith faoi deara, chomh maith leis an bhféidearthacht go gcuirfeadh earráidí sa phróiseas imscartha isteach nó briseadh seirbhíse faoi deara.

Chun na rioscaí seo a mhaolú, moltar go minic go gcuirfeadh eagraíochtaí “sos crua” i bhfeidhm ina bpróiseas imscartha, rud a éilíonn faomhadh daonna sula ndéantar eisiúintí a imscaradh chuig timpeallachtaí deiridh.

Tá siad ag dúnadh na ndoirse

Rage CorraighNa pasfhocail réamhshocraithe áthais sin i CI/CD Tá uirlisí á scriosadh. Ag rochtain ar an /var/lib/jenkins/secrets/initialAdminPassword rian marbh anois. Tá go leor uirlisí ag soláthar 2FA anois, rud a rinne Covid coitianta, agus tá fiú an moncaí cóid is leisciúla amuigh ansin á úsáid!

M3M3N70Táimid ag troid i gcoinne 2FA, ach níl sé chomh héasca sin. Tá sé deacair na daoine sin a mhealladh le spear-phishing, mar Rinne “Scatter Swine” le TwilioLe heochracha WebAuthn tá sé i bhfad níos deacra. Ar a laghad, is féidir linn iarracht a dhéanamh goid fianáin chun MFA a sheachbhóthar, ach ní mór briseadh isteach i mbosca an fhorbróra.

Is céim mhaith sa treo ceart é Fíordheimhniú Ilfhachtóireach chun an riosca sceitheadh ​​rúin fíordheimhnithe a theorannú. Tacaíonn formhór na n-uirlisí DevOps nua-aimseartha le MFA. Agus eochracha fíordheimhnithe faoi WebAuthn / U2F (féach tionscadal FIDO2) b'fhéidir gurb iad an rogha is fearr le haghaidh MFA i DevOps, má dhéantar iad a bhainistiú i gceart.

Rage CorraighTá lucht DevOps ag dúiseacht. Tá an rud mallaithe "is lú pribhléide" ina gcuid fola. Agus ní moncaí cóid iad a thuilleadh. Gabhtar sinn anois ar an deora ag athbhreithneoirí.

Go deimhin, pipelineTá siad beagán níos láidre anois ná mar a bhí siad cúpla bliain ó shin, agus gníomhartha agus scripteanna laga bainte amach, agus céimeanna tástála slándála breise ann a bhraith fiú ár n-iompróirí i bhfolach faoi rún. commitagus pacáistí a fuadaíomar.

Ceist don léitheoir: an gnó riosca é an próiseas chun na bogearraí a thógáil ó fhoinsí agus iad a imscaradh i dtáirgeadh? An bhfeiceann tú do DevOps i gcéim an... sean-amanna maithe do na drochdhaoine?

Moltaí Deiridh

Cá háit le tosú CI/CD pipelines?

Tá an chéad mholadh simplí anseo: Go cúramach athbhreithniú a dhéanamh ar pipelines (tá siad criticiúil acmhainní) le haghaidh saincheisteanna slándála. Tá athbhreithnithe costasach ach riachtanach, agus ba chóir iad a dhéanamh i gceart. Ba chóir d’athbhreithneoirí a bheith ar an eolas faoi na rudaí atá le breathnú orthu. Ní mór gach céim a sheiceáil le haghaidh lochtanna.

B’fhéidir go bhféadfadh meascán d’athbhreithneoirí saineolaithe atá armtha le scanóirí uathoibrithe cóid mailíseacha cabhrú.

Is é an dara moladh ná forbróirí a scríobhann a oiliúint pipelineagus iad a choinneáil slánRudaí le machnamh a dhéanamh orthu:

  • Conas fíordheimhniú a láimhseáil i gceart le seirbhísí inmheánacha agus scamall, agus an míchaoithiúlacht a bhaineann le dintiúir fhadtéarmacha a sheachaint.
  • Conas teorainn a chur pipelines leis an tsraith acmhainní beacht a bhfuil rochtain aige orthu. Lonraíonn prionsabal na pribhléide is lú arís.
  • Conas na céimeanna a scríobh chun é a dhéanamh pipelines in-atáirgthe cosúil le priontáil leagan, agus leochaileachtaí insteallta orduithe a sheachaint.
  • Conas imscaradh a cheadú ó thaobh na slándála de (is cinn eile iad!): cé acu slándáil standardba chóir a mheaitseáil agus conas seiceálacha/geataí comhfhreagracha a chur leis sa pipelines.

Is é an tríú moladh ná cumraigh an CI/CD córas le cúram cuíFíordheimhniú láidir, gan aon phasfhocail réamhshocraithe ná socruithe neamhshábháilte, pribhléidí íosta… Tabhair aire do leochaileachtaí i mbreiseáin agus i síntí atá suiteáilte. D’fhéadfadh sé seo a bheith ina fhócas sna poist seo a leanas, coinnigh súil ghéar orthu le do thoil.

Is é an ceathrú moladh ná ghiaráil an CI/CD pipelines le haghaidh uathoibriú slándálaAnailís ar chód foinse (SAST), anailís ar chomhdhéanamh foinse (SCA), is féidir scanadh sceitheanna rúnda, uirlisí frith-mailíseacha, scanóirí slándála coimeádán, nó brathadóirí rith-ama uathoibrithe (DAST agus malware) a rith go rialta ar an pipelineAgus féadfaidh d’eagraíocht forfheidhmiú standardfaoi ​​chlúdach ar scanadh slándála i CI/CD.

Cuir i gcuimhne nach mbaintear athbhreithniú saineolaithe as an gcothromóid leis na huirlisí seo go fóill, nó d’fhéadfadh go mbeadh braistint bhréagach slándála agat.

Más eolach thú ar na deich is fearr i liosta OWASP, is tionscadal deas le déanaí é an ceann. 10 barr OWASP CI/CD Riosca Slándála.

Nóta Séanta

(1) Tá na samplaí sa phost seo ag baint úsáide as GitHub mar SCM, AWS mar sholáthraí scamall, agus GitHub Actions nó Jenkins mar CI/CD uirlis. Níl siad níos laige/níos sábháilte ná a roghanna malartacha. Gan aon drochintinn don phreas! Tá na huirlisí seo cumhachtach agus ní mór iad a úsáid i gceart.

(2) M3M3N70 agus Rage Corraigh Is carachtair fhicseanúla iad. Is comhtharlú amháin atá aon chosúlacht idir daoine nó grúpaí, beo nó básaithe… nó an ea?

Chun níos mó a léamh

uirlisí-sca-uirlisí-bogearraí-anailíse-comhdhéanamh
Tabhair tosaíocht do rioscaí bogearraí, déan iad a leigheas agus a dhaingniú
Faigh do Chuntas Saor in Aisce.
Níl aon chárta creidmheasa ag teastáil.

Daingnigh do Fhorbairt agus do Sheachadadh Bogearraí

le Sraith Táirgí Xygeni