Dè a dh’ fhaodadh a dhol ceàrr leis CI/CD pipelines?

Amalachadh leantainneach agus lìbhrigeadh leantainneach (CI/CD) pipeline’S iad sin bunait buidheann bathar-bog sam bith a bhios a’ togail bathar-bog ann an dòigh “nua-aimsireil”. Tha cumhachd mhòr aig fèin-ghluasad, ach chan eil a’ mhòr-chuid de luchd-leasachaidh mothachail air an uallach a tha an lùib sin.

-leasachaidh: 'Seadh, gabhaidh sinn CI/CD tèarainteachd gu dona agus smachd làidir a bhith agad air luchd-gleidhidh còd, ath-sgrùdadh commits mus tèid aonachadh; obraichean agus pipelineair an cumail suas le luchd-obrach àrd-ìre, bidh iad a’ dèanamh cinnteach nach tèid dìomhaireachdan a leigeil ma sgaoil anns an pipelineAgus chaidh an inneal a stàladh le luchd-obrach aig a bheil eòlas air a’ chùis. Dè a dh’ fhaodadh a dhol ceàrr?

A charaid an leasaiche, CI/CD Tha siostaman iom-fhillte. Tharraing an uachdar ionnsaigh farsaing aige cleasaichean droch-rùnach. Is fheàrr a bhith faiceallach agus gun a bhith ro mhisneachail a-riamh.

Uaireannan bidh an rèiteachadh bunaiteach air a chumail agus bidh e na charaid as fheàrr do luchd-hacaidh. Faodaidh lochdan cudromach a bhith an làthair ann an CI/CD pipeline stòran, ann an rèiteachadh an t-siostaim, no timcheall air a’ phròiseas agus co-theacsa an pipeline agus mar a thèid a bhrosnachadh.

Anns a’ phost seo cuiridh sinn sinn fhèin ann am brògan nan droch chleasaichean. Smaoinich gu robh sinn a’ leughadh smuaintean M3M3N70 (Cuimhneachan-cuimhne?) agus Rage Boglach an àiteigin air an lìon dhorcha, is dòcha ann an cànan nach eil às an Iar, ach na caill a-riamh gu bheil olc air a sgaoileadh air feadh an t-saoghail.

 

Anns na seann làithean math bha e cho furasta…

M3M3N70Air ais sna seann làithean math, bha ar gnìomhachas cho furasta… Cha robh dùil ri mòran thoraidhean aig làithean neoni, bha aplacaidean fosgailte le so-leòntachd furasta an cleachdadh, agus b’ urrainn dhuinn gluasad gu taobhach ann am priobadh na sùla.

Rage BoglachFu#@Ifrinn! Beagan gòrach fhathast, ach tha cùisean air atharrachadh. Chuir na daoine mòra tòrr cuideam air a’ ghòrach AppSec sin.

M3M3N70'Seadh. Ach is iad na luchd-leasachaidh na h-amadain ùra. Dhuinne, tha e air a bhith nas fhasa na h-innealan a bhios na daoine seo a' cleachdadh a thaghadh. Tha an CI, gu sònraichte, na mhèinn òir! Comharran ruigsinneachd sgòthan, SCM teisteanasan, faclan-faire stòr-dàta riochdachaidh, iuchraichean prìobhaideach SSH, teisteanasan luchd-cleachdaidh CI eile… Bha leum bho na rudan leasachaidh dòrainneach chun fhìor fheòil gu math sìmplidh.

Fèin-ghluasad airson bathar-bog a thogail, a dhearbhadh agus a chleachdadh le a CI/CD Bidh feum aig an inneal gu tric air dìomhaireachdan a thoirt do àitheantan ann an ceumannan. Agus gu tric bidh iad air an leigeil ma sgaoil, le droch bhuaidhean.

Pipelinefeumaidh dìomhaireachdan a bhios uaireannan air an leigeil ma sgaoil

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.

Is dòcha gur e na seann làithean math a bh’ ann a bhith a’ lorg ann an eachdraidh Git .env faidhle (dhìochuimhnich an leasaiche a chur ris .gitignore):

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

a chaidh a chleachdadh ann an sruth-obrach GitHub .github/deploy.yaml anns an robh rudeigin mar seo:

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: Oho! Bha na h-iuchraichean AWS sin ag obair! Rinn sinn deuchainn an toiseach air atharrachadh neo-chiontach san aplacaid, agus an uairsin chuir sinn an sting ris oir bha coltas nach robh fios aig na balaich sin. Bingo! Abair iomairt…

Chleachd an droch chleasaiche na h-iuchraichean AWS gus aplacaid atharraichte le malware a luchdachadh suas agus an uairsin ruith e an àithne deploy leis na teisteanasan sin. Na dìomhaireachdan a chaidh a leigeil ma sgaoil, còmhla ris an fhiosrachadh a tha anns an pipelineIs dòcha gu bheil “Abair iomairt!” a’ ciallachadh gun do rinn Memento sgrios air an neach-fulang bhochd.

Is e a tha Memento ag innse dhuinn an seo, aon uair ‘s gun tachair aodion dìomhair, mar iuchraichean ruigsinneachd AWS san eisimpleir, gum feum thu an dìomhaireachd a chùl-ghairm (cuairtich na h-iuchraichean gu h-àrd) sa bhadTha an-còmhnaidh ann uinneag nochdaidh eadar an t-sruth a tha a’ sileadh commit agus an neo-dhligheachadh dìomhair; Tha ath-sgrìobhadh eachdraidh Git duilich (dh’fheuch eadhon an stàit ùghdarrasach as cruaidhe ri ath-sgrìobhadh eachdraidh mar sin, gun fheum) agus is dòcha neo-èifeachdach (is dòcha gun do chlòn ar caraidean ron stòr-tasgaidh leis an aodion dìomhair commit). Tionndaidh na h-iuchraichean sa bhad, agus dèan ùrnaigh fhad ’s a tha thu a’ leughadh logaichean gnìomhachd airson a’ chunntais chuimsichte rè na h-uinneige nochdaidh!

Is dòcha gum bu chòir do bhuidhnean casg a chur air dìomhaireachdan fad-ùine a chleachdadh ann an CI/CD pipelines, agus cuir teisteanasan sealach nan àite. Anns an eisimpleir roimhe le iuchraichean AWS ann an gnìomhan GitHub, tha e nas sàbhailte fear a chleachdadh Solaraiche OpenID Connect (OIDC) gus teisteanasan geàrr-ùine fhaighinn a tha a dhìth airson gnìomhan.

Rage BoglachBha thu cho fortanach! B’ e cleachdadh cumanta a bh’ ann anns na seann làithean sgriobtaichean a leigeil a-mach le iuchraichean cruaidh-chòdaichte, eadhon air bucaidean S3 a bha ruigsinneach don phoball. Cha robh agad ach a bhith a’ dol thairis air na nithean sa bhucaid agus a’ dèanamh beagan greip gus rudan inntinneach a lorg.

Uaireannan bhiodh an raon a chaidh a chleachdadh airson an cur an gnìomh (bucaid AWS S3 san eisimpleir seo) fosgailte airson leughadh bho choigrich, air sgàth lochd rèiteachaidh (nach deach a lorg). Dè Rage Boglach bha rudeigin mar seo air a chleachdadh:

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 gun deach am bucaid a chruthachadh ann an teamplaid solarachaidh a dh’ fhaodadh a bhith air a sganadh gu fèin-ghluasadach airson lochdan tèarainteachd.

B’ e dèideag a bh’ ann an rèiteachadh bunaiteach an inneil dhuinne

Gus eisimpleirean concrait a thoirt seachad, bruidhnidh sinn mu dheidhinn Jenkins, aon de na h-innealan CI as mòr-chòrdte.

Rage BoglachA bheil cuimhne agaibh air a’ bhogsa-seic “Cumasaich Tèarainteachd” ann an Jenkins, agus cia mheud buidheann a thagh gun a ghnìomhachadh air sgàth goireasachd? Agus an fheadhainn “Faodaidh duine sam bith rud sam bith a dhèanamh“combos cead mar an àbhaist? Agus na plugain Jenkins sin a tha a’ cur dragh ort, mar an Plugan GitHub OAuthThagh an duine a chuir air dòigh e an dà chuid “Thoir ceadan READ do gach neach-cleachdaidh dearbhte” agus “Cleachd ceadan stòr-dàta GitHub”, a’ toirt cothrom dhuinn air na pròiseactan aca uile.

(Gabh mo leisgeul, Jenkins, airson do chur mar eisimpleir 😉)

Cùm eòlach (eadhon tràilleach) air prionnsabalan tèarainteachd. Is e aon dhiubh an Tèarainte gu bunaiteach prionnsabal: bu chòir smachdan a bhith air an suidheachadh gu bunaiteach leis na roghainnean as tèarainte a ghabhas dèanamh. Bu chòir tèarainteachd a thogail a-steach do CI/CD innealan agus pipelinebhon talamh suas, seach a bhith na rud às dèidh làimhe. Ach bidh càirdeas agus goireasachd an neach-cleachdaidh gu tric a’ dol an aghaidh tèarainteachd.

Airson cùis Jenkins, tha dearbhadh togte ro chugallach: na cleachd na dòighean dearbhaidh togte ann an Jenkins a-riamh’S fheàrr dhut dòigh-obrach treas-phàrtaidh (SAML, LDAP, Google…) a thaghadh, leis a’ plugan Ro-innleachd Ùghdarrais Stèidhichte air Dreuchd (“RBAC”). Agus bi air leth faiceallach leis an admin cunntas.

Thoir an aire do mar a tha obair agus pipeline faidhlichean ann an Jenkins air an làimhseachadh. An aon rud le Plugan rèiteachaidh-mar-chòd agus na faidhlichean rèiteachaidh aige, a tha a’ buntainn ri rèiteachadh Jenkins.

A’ gluasad bho fèin-aoigheachd CI/CD Tha an atharrachadh eadar siostaman SaaS agus siostaman stèidhichte air a’ sgòth a’ cur às do chuid de chunnartan a dh’fhaodadh a bhith ann a leigeas le gluasad taobhach taobh a-staigh lìonra na buidhne, ach tha feadhainn eile air an cur ris, leithid a bhith a’ fosgladh cheanglaichean taobh a-muigh eadar siostaman a-staigh a th’ ann mar-thà agus an siostam a tha air a chur a-mach. CI/CD inneal.

Bu chòir do bhuidhnean eacarsaich a dhèanamhciscùram iomchaidh ann a bhith a’ cruadhachadh an CI/CD siostam, a’ tòiseachadh leis na roghainnean as cuingealaiche agus mean air mhean a’ fosgladh suas leis na ceadan as ìsle a tha a dhìth airson an pipeline ceumannan.

A’ rèiteachadh tèarainteachd ann an CI/CD Dh’ fhaodadh innealan a bhith iom-fhillte. Tha plugain no leudachaidhean aig mòran dhiubh anns a bheil a’ mhòr-chuid de na so-leòntachdan agus feumar an ùrachadh.

Dh’fhaodadh sganairean mì-rèiteachadh tèarainteachd airson innealan cho iom-fhillte, no comharran-tomhais, cuideachadh.

A’ cur a-steach còd pipeline òrdughan airson spòrs agus prothaid

M3M3N70An do chleachd thu a-riamh Sgrùdaidhean Còd Neo-earbsach, na gnìomhan agus sgriobtaichean so-leònte sin a tha so-leònte ri stealladh-àithne?

Tha an earrann seo a’ sealltainn gu bheil an pipeline dh’ fhaodadh mearachdan còdaidh a bhith ann fhèin a leigeas le droch chleasaichean cur an gnìomh còd neo-riaghailteach a thoirt a-steach don pipeline gun atharrachadh a dhèanamh air an pipeline an stòr fhèinMar eisimpleir a’ cleachdadh PR

A’ chiad eisimpleir de sruth-obrach GitHub mì-fhortanach:

# 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 ...

A 'tighinn còmhla pull_request_target 'S e cleachdadh cunnartach a th' ann an brosnachadh sruth-obrach le sgrùdadh soilleir de PR neo-earbsach a dh'fhaodadh leantainn gu milleadh air stòr-dàta. Anns an eisimpleir, an cothlamadh mì-fhortanach de:

  • pull_request_target tachartas, aig a bheil cead sgrìobhaidh gu bunaiteach chun stòr-tasgaidh targaid agus dìomhaireachdan an stòr-tasgaidh targaid, eadhon bho fhorcaichean taobh a-muigh, agus a ruitheas ann an co-theacsa stòr-tasgaidh targaid a’ PR,
  • thoir sùil air a’ chòd PR bhon stòr, stòr-tasgaidh neo-earbsach,
  • cuir an gnìomh sgriobt sam bith a dh’ fhaodadh obrachadh air susbaint fo smachd PR, mar a thachras le npm install, agus
  • gun a bhith a’ cleachdadh cumha airson an brosnachadh pull_request_target chan ruith an tachartas ach ma thèid seòrsa de leubail ‘chaidh sgrùdadh a dhèanamh air a’ PR seo’ a shònrachadh don PR (chan urrainn do luchd-cleachdaidh bhon taobh a-muigh leubail a shònrachadh don PR).

Tha dàrna eisimpleir a’ gabhail ri fiosrachadh neo-earbsach (bho chùis, beachd no pull request) mar thùs airson argamaidean a chaidh a chur gu a pipeline àithne tro abairtean. Is e seo an pipeline dreach de sho-leòntachd stealladh àithne an OS.

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

Bidh an gnìomh ruith a’ gineadh sgriobt slige sealach stèidhichte air an teamplaid, leis an $ air a chur na àite, ga dhèanamh so-leònte ri stealladh àithne slige. Dh’ fhaodadh ionnsaighear le cunntas GitHub meallta duilgheadas a chruthachadh le tiotal a"; bad_code_goes_here;#, agus bùm! 

Rage BoglachO, bha na balaich sin a’ fosgladh an dorais airson stealladh àithne le bhith dìreach a’ fosgladh cùis…

Bha so-leòntachdan cur an gnìomh còd ann an gnìomhan GitHub, leithid beachd-gajira, air a chàradh a-nis. Leugh, ma 's e do thoil e “Cuir a-steach neo-earbsach ann an sruthan-obrach GitHub” airson fiosrachadh iomlan.

Moral na sgeòil: Na bi a-riamh a’ sgrùdadh agus a’ togail PR bho thùsan mì-earbsach às aonais ath-sgrùdadh a dhèanamh air a’ PR an toiseach. Dh’fhaodadh ‘gun earbsa’ an seo, mura h-eil dearbhadh cruaidh air tùs, a bhith a’ ciallachadh cunntas leasaiche sam bith a dh’ fhaodadh a bhith air a thoirt thairis.

 

Cleachdadh malware gun fhiosta an seo!

Cleachdadh leantainneach ’S e seo an ìre as àirde den uathoibrachadh, ach dh’fhaodadh dìth smachdan ceadachaidh iomchaidh air an ìre sin a bhith air a mhilleadh pipeline sruthadh.

Na cunnartan a tha an lùib cleachdadh làn-fèin-ghluasadach bhon stòr commit do shiostaman cinneasachaidh a’ gabhail a-steach a’ chomas gum bi còd droch-rùnach air a chleachdadh ann an àrainneachdan cinneasachaidh gun a bhith air a lorg, a bharrachd air a’ chomas gum bi mearachdan sa phròiseas cleachdaidh ag adhbhrachadh buaireadh no briseadh-sìos.

Gus na cunnartan sin a lughdachadh, thathas tric a’ moladh gum bi buidhnean a’ cur “briseadh cruaidh” an sàs anns a’ phròiseas cleachdaidh aca, a dh’ fheumas cead daonna mus tèid fiosan a sgaoileadh gu àrainneachdan crìochnachaidh.

Tha iad a’ dùnadh nan dorsan

Rage BoglachNa faclan-faire bunaiteach aoibhneach sin ann an CI/CD Tha innealan gan sguabadh às. A’ faighinn cothrom air an /var/lib/jenkins/secrets/initialAdminPassword tha e na shlighe marbh a-nis. Tha mòran innealan a-nis a’ toirt seachad 2FA, a rinn Covid mòr-chòrdte, agus tha eadhon am muncaidh còd as leisge a-muigh an sin ga chleachdadh!

M3M3N70Tha sinn a’ sabaid an aghaidh 2FA, ach chan eil e cho furasta sin. Tha e duilich na daoine sin a mhealladh le spear-phishing, oir Rinn “Scatter Swine” le TwilioLe iuchraichean WebAuthn tha e tòrr nas duilghe. Co-dhiù, is urrainn dhuinn feuchainn ri goid briosgaidean gus MFA a sheachnadh, ach feumaidh mi briseadh a-steach do bhogsa an leasaiche.

’S e deagh cheum san rathad cheart a th’ ann an dearbhadh ioma-fhactar airson cunnart aodion dìomhaireachd dearbhaidh a chuingealachadh. Tha a’ mhòr-chuid de na h-innealan DevOps ùr-nodha a’ toirt taic do MFA. Agus iuchraichean dearbhaidh fo WebAuthn / U2F (faic Pròiseact FIDO2) is dòcha an roghainn as fheàrr airson MFA ann an DevOps, ma thèid an riaghladh gu ceart.

Rage BoglachTha na daoine DevOps a’ dùsgadh. Tha an rud “as lugha de shochair” nam fuil. Agus chan eil iad nan muncaidhean còd tuilleadh. Bidh luchd-sgrùdaidh a’ glacadh sinn air ar glacadh le làimh dhearg a-nis.

Leis an fhìrinn innse, pipelineTha iad beagan nas làidire a-nis na bha iad o chionn dà bhliadhna, le gnìomhan is sgriobtaichean lag air an toirt air falbh, agus le ceumannan deuchainn tèarainteachd a bharrachd a lorg eadhon na droppers againn falaichte ann an dìomhaireachd. commitagus pacaidean a ghoid sinn.

Ceist don leughadair: an e gnìomhachas cunnartach a th’ ann a bhith a’ togail a’ bhathar-bhog bho thùsan agus ga chur an sàs ann an riochdachadh? Am faic thu na DevOps agad aig ìre… seann amannan math airson nan droch dhaoine?

Molaidhean deireannach

Càite an tòisich thu CI/CD pipelines?

Tha a’ chiad mholadh sìmplidh an seo: Gu faiceallach ath-bhreithneachadh pipelines (Is iad sin Cruaidh goireasan) airson cùisean tèarainteachd. Tha lèirmheasan cosgail ach riatanach, agus bu chòir an dèanamh ceart. Bu chòir do luchd-sgrùdaidh a bhith mothachail air dè a choimheadas iad. Feumar gach ceum a sgrùdadh airson lochdan.

’S dòcha gum biodh measgachadh de luchd-sgrùdaidh eòlach le sganairean còd droch-rùnach fèin-ghluasadach feumail.

Is e an dàrna moladh a bhith trèanadh luchd-leasachaidh a sgrìobhas pipelineagus an cumail suas fo dhìon tèarainteachdRudan ri beachdachadh:

  • Mar a làimhsicheas tu dearbhadh gu ceart le seirbheisean a-staigh agus seirbheisean sgòthan, a’ seachnadh trioblaid a bhith a’ làimhseachadh teisteanasan fad-ùine.
  • Mar a chuireas tu crìoch air pipelines chun an t-seata mionaideach de ghoireasan air a bheil feum aige ruigsinneachd. Tha prionnsapal na sochair as lugha a’ deàrrsadh a-rithist.
  • Mar a sgrìobhas tu na ceumannan gus an dèanamh pipelines ath-riochdachadh mar phrìneadh dreach, agus a’ seachnadh so-leòntachd stealladh àithne.
  • Mar a dh’aontaicheas tu ri cleachdaidhean bho shealladh tèarainteachd (is iad sin feadhainn eile!): dè an tèarainteachd standardbu chòir a bhith air am maidseadh agus mar a chuireas tu sgrùdaidhean/geataichean co-fhreagarrach ris anns an pipelines.

Is e treas moladh a bhith rèitich an CI/CD siostam le cùram iomchaidhDearbhadh làidir, gun faclan-faire bunaiteach no roghainnean mì-thèarainte, glè bheag de chòraichean… Thoir aire do sho-leòntachd ann am plugain agus leudachaidhean a tha air an stàladh. Dh’ fhaodadh seo a bhith na fhòcas air puist a leanas, cùm sùil a-mach.

Is e an ceathramh moladh a bhith leasaich an CI/CD pipelines airson fèin-ghluasad tèarainteachdMion-sgrùdadh còd tùsail (SAST), mion-sgrùdadh air co-dhèanamh an stòrais (SCA), faodar sganadh aodion dìomhaireachd, innealan an-aghaidh malware, sganairean tèarainteachd container, no lorgairean ruith-ùine fèin-ghluasadach (DAST agus malware) a ruith gu cunbhalach air an pipelineAgus faodaidh do bhuidheann a chur an gnìomh standardmu dheidhinn craoladh air sganadh tèarainteachd ann an CI/CD.

Cuimhnich, chan eil na h-innealan seo fhathast a’ toirt air falbh lèirmheas eòlach bhon cho-aontar, air neo dh’ fhaodadh gum bi faireachdainn meallta de thèarainteachd agad.

Ma tha thu eòlach air prìomh dheichean OWASP, is e pròiseact math o chionn ghoirid an OWASP - 10 as àirde CI/CD Cunnart tèarainteachd.

Nota Àicheadh

(1) Tha na h-eisimpleirean san dreuchd seo a’ cleachdadh GitHub mar SCM, AWS mar sholaraiche sgòthan, agus GitHub Actions no Jenkins mar CI/CD inneal. Chan eil iad nas laige / nas sàbhailte na an roghainnean eile. Gun rùn dona sna meadhanan! Tha na h-innealan seo cumhachdach agus feumar an cleachdadh gu h-iomchaidh.

(2) M3M3N70 agus Rage Boglach ’S e caractaran ficseanail a th’ annta. Tha coltas sam bith ri daoine no buidhnean, beò no marbh, dìreach co-thuiteamas… no an e?

Airson barrachd a leughadh

innealan-sca-bathar-bog-innealan-anailis-co-dhèanamh
Thoir prìomhachas do chunnartan bathar-bog, dèan cinnteach gu bheil iad air an rèiteachadh, agus dèan cinnteach gu bheil iad tèarainte
Faigh do Chunntas an-asgaidh.
Chan eil feum air cairt creideas.

Dèan cinnteach à leasachadh is lìbhrigeadh do bhathar-bog

le Sreath Thoraidhean Xygeni