Pentesting CI/CD Methodology

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

VCS

VCS inasimama kwa Mfumo wa Kudhibiti Toleo, mifumo hii inaruhusu watengenezaji kusimamia msimbo wao wa chanzo. Moja ya maarufu ni git na kawaida utakutana na makampuni yanayoitumia kwenye moja ya majukwaa yafuatayo:

  • Github

  • Gitlab

  • Bitbucket

  • Gitea

  • Watoa huduma wa wingu (hutoa majukwaa yao ya VCS)

Mipango

Mipango inaruhusu watengenezaji kutumia kiotomatiki utekelezaji wa msimbo (kwa madhumuni ya kujenga, kufanya majaribio, kusambaza...) baada ya matukio fulani kutokea: Kupiga, PR, cron... Wanakuwa na manufaa makubwa kwa kutumia hatua zote kutoka kwa maendeleo hadi uzalishaji.

Hata hivyo, mifumo hii inahitaji kutekelezwa mahali fulani na kawaida na ruhusa za kipekee za kusambaza msimbo.

Metodolojia ya Pentesting ya VCS

Hata kama baadhi ya majukwaa ya VCS huruhusu kuunda mipango kwa sehemu hii tutachambua tu mashambulizi yanayowezekana kwa udhibiti wa msimbo wa chanzo.

Majukwaa yanayohifadhi msimbo wa mradi wako yanayo taarifa nyeti na watu wanahitaji kuwa makini sana na ruhusa zilizotolewa ndani ya jukwaa hili. Hizi ni baadhi ya matatizo ya kawaida kwenye majukwaa ya VCS ambayo mshambuliaji anaweza kutumia:

  • Mifereji: Ikiwa msimbo wako una mifereji kwenye mabadiliko na mshambuliaji anaweza kupata ufikivu wa repo (kwa sababu ni ya umma au kwa sababu ana ufikivu), anaweza kugundua mifereji.

  • Ufikivu: Ikiwa mshambuliaji anaweza kufikia akaunti ndani ya jukwaa la VCS anaweza kupata ufahamu na ruhusa zaidi.

  • Usajili: Baadhi ya majukwaa zitaruhusu watumiaji wa nje kuunda akaunti.

  • SSO: Baadhi ya majukwaa hayataruhusu watumiaji kusajili, lakini wataruhusu yeyote kufikia kwa SSO halali (hivyo mshambuliaji anaweza kutumia akaunti yake ya github kuingia kwa mfano).

  • Anwani za siri: Jina la mtumiaji+Nywila, vibambo vya kibinafsi, funguo za ssh, vibambo vya Oauth, vidakuzi... kuna aina kadhaa za vibambo ambavyo mtumiaji anaweza kuiba ili kupata ufikivu wa njia fulani kwenye repo.

  • Webhooks: Majukwaa ya VCS huruhusu kuzalisha webhooks. Ikiwa hawalindwi na siri zisizoonekana, mshambuliaji anaweza kuzitumia vibaya.

  • Ikiwa hakuna siri iliyowekwa, mshambuliaji anaweza kutumia vibaya webhook ya jukwaa la tatu

  • Ikiwa siri iko kwenye URL, jambo lile lile linatokea na mshambuliaji pia anapata siri

  • Udanganyifu wa msimbo: Ikiwa mwigizaji mwenye nia mbaya ana aina fulani ya ufikivu wa kuandika kwenye repos, anaweza kujaribu kuingiza msimbo wa madhara. Ili kufanikiwa anaweza kuhitaji kupita kinga za matawi. Vitendo hivi vinaweza kufanywa na malengo tofauti akilini:

  • Kudhoofisha tawi kuu ili kudhoofisha uzalishaji.

  • Kudhoofisha tawi kuu (au matawi mengine) ili kudhoofisha mashine za watengenezaji (kwa sababu kawaida hutekeleza majaribio, terraform au mambo mengine ndani ya repo kwenye mashine zao).

  • Kudhoofisha mstari wa mabomba (angalia sehemu inayofuata)

Metodolojia ya Pentesting ya Mipango

Njia ya kawaida ya kufafanua mstari wa mabomba, ni kwa kutumia faili ya usanidi wa CI iliyohifadhiwa kwenye repo mstari wa mabomba unajengwa. Faili hii inaelezea mpangilio wa kazi zilizotekelezwa, hali zinazoathiri mtiririko, na mipangilio ya mazingira ya ujenzi. Faili hizi kawaida zina jina na muundo thabiti, kwa mfano — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), na faili za GitHub Actions YAML zilizoko chini ya .github/workflows. Inapobadilishwa, kazi ya mstari wa mabomba huvuta msimbo kutoka kwenye chanzo kilichochaguliwa (k.m. kujitolea / tawi), na kuendesha amri zilizoelezwa kwenye faili ya usanidi wa CI dhidi ya msimbo huo.

Kwa hivyo lengo kuu la mshambuliaji ni kwa namna fulani kudhoofisha faili hizo za usanidi au amri wanazotekeleza.

PPE - Utekelezaji wa Mabomba Uliodhurika

Njia ya Utekelezaji wa Mabomba Uliodhurika (PPE) inatumia ruhusa katika repo ya SCM kudanganya mstari wa mabomba ya CI na kutekeleza amri zenye madhara. Watumiaji wenye ruhusa zinazohitajika wanaweza kurekebisha faili za usanidi wa CI au faili nyingine zinazotumiwa na kazi ya mstari wa mabomba ili kujumuisha amri zenye madhara. Hii "inachafua" mstari wa mabomba ya CI, ikisababisha utekelezaji wa amri hizi zenye madhara.

Ili mwigizaji mwenye nia mbaya afanikiwe kutekeleza shambulio la PPE anahitaji:

  • Kuwa na ufikivu wa kuandika kwenye jukwaa la VCS, kwa kawaida mabomba huanzishwa wakati wa kupiga au kufanya ombi la kuvuta. (Angalia metodolojia ya pentesting ya VCS kwa muhtasari wa njia za kupata ufikivu).

  • Kumbuka mara nyingine PR ya nje inahesabika kama "ufikivu wa kuandika".

  • Hata kama ana ruhusa za kuandika, anahitaji kuhakikisha anaweza kurekebisha faili ya usanidi wa CI au faili nyingine ambazo usanidi unategemea.

  • Kwa hili, anaweza kuhitaji kuweza kupita kinga za matawi.

Kuna ladha 3 za PPE:

  • D-PPE: Shambulio la Moja kwa moja la PPE hutokea wakati mwigizaji anarekebisha faili ya usanidi wa CI ambayo itatekelezwa.

  • I-DDE: Shambulio la Moja kwa moja la PPE hutokea wakati mwigizaji anarekebisha faili ambayo faili ya usanidi wa CI itatekelezwa inategemea (kama faili ya kufanya au faili ya terraform).

  • PPE ya Umma au 3PE: Kwa baadhi ya kesi mabomba yanaweza kuanzishwa na watumiaji ambao hawana ufikivu wa kuandika kwenye repo (na ambao labda hata sio sehemu ya shirika) kwa sababu wanaweza kutuma PR.

  • Uingizaji Amri wa 3PE: Kwa kawaida, mabomba ya CI/CD yataweka mazingira ya mazingira na taarifa kuhusu PR. Ikiwa thamani hiyo inaweza kudhibitiwa na mshambuliaji (kama kichwa cha PR) na kutumiwa mahali hatari (kama kutekeleza amri za sh), mshambuliaji anaweza kuingiza amri humo.

Manufaa ya Udukuzi

Kujua ladha 3 za kudhoofisha mstari wa mabomba, hebu tuangalie mshambuliaji anaweza kupata nini baada ya kutekeleza shambulio la mafanikio:

  • Siri: Kama ilivyotajwa hapo awali, mabomba yanahitaji ruhusa kwa kazi zao (kupata msimbo, kujenga, kusambaza...) na ruhusa hizi kawaida hutolewa kwa siri. Siri hizi kawaida zinapatikana kupitia mazingira ya mazingira au faili ndani ya mfumo. Kwa hivyo mshambuliaji daima atajaribu kuchota siri nyingi iwezekanavyo.

  • Kulingana na jukwaa la mstari wa mabomba mshambuliaji anaweza kuhitaji kutaja siri kwenye usanidi. Hii inamaanisha kwamba ikiwa mshambuliaji hawezi kurekebisha mstari wa mabomba wa usanidi wa CI (I-PPE kwa mfano), anaweza kuchota siri ambazo mstari wa mabomba una.

  • Hesabu: Msimbo unatekelezwa mahali fulani, kulingana na mahali unatekelezwa mshambuliaji anaweza kuwa na uwezo wa kugeuza zaidi.

  • Kwenye-Premises: Ikiwa mabomba yanatekelezwa kwenye-premises, mshambuliaji anaweza kumaliza katika mtandao wa ndani na ufikivu wa rasilimali zaidi.

  • Wingu: Mshambuliaji anaweza kupata mashine zingine kwenye wingu lakini pia anaweza kuchota majukumu ya IAM/service accounts vitambulisho kutoka hapo ili kupata ufikivu zaidi ndani ya wingu.

  • Mashine za majukwaa: Mara nyingi kazi zitatekelezwa ndani ya mashine za majukwaa ya mabomba, ambazo kawaida ziko ndani ya wingu bila ufikivu zaidi.

  • Chagua: Mara nyingi jukwaa la mabomba litakuwa limepangwa na mashine kadhaa na ikiwa unaweza kurekebisha faili ya usanidi wa CI unaweza kuonyesha wapi unataka kutekeleza msimbo wa madhara. Katika hali hii, mshambuliaji labda atatekeleza ganda la kurudi kwenye kila mashine inayowezekana kujaribu kudhoofisha zaidi.

  • Kudhoofisha uzalishaji: Ikiwa uko ndani ya mstari wa mabomba na toleo la mwisho linajengwa na kusambazwa kutoka hapo, unaweza kudhoofisha msimbo utakaokuwa unatekelezwa kwenye uzalishaji.

Taarifa zaidi

Zana & Mwongozo wa CIS

  • Chain-bench ni zana huru ya kukagua rundo lako la ugavi wa programu kwa kufuata kanuni za usalama kulingana na Mwongozo mpya wa Ugavi wa Programu wa CIS. Ukaguzi unazingatia mchakato mzima wa SDLC, ambapo unaweza kufichua hatari kutoka wakati wa kuandika nambari hadi wakati wa kupeleka.

Hatari Bora 10 za Usalama wa CI/CD

Angalia makala hii ya kuvutia kuhusu hatari bora 10 za CI/CD kulingana na Cider: https://www.cidersecurity.io/top-10-cicd-security-risks/

Maabara

Zana za Kiotomatiki

  • Checkov: Checkov ni zana ya uchambuzi wa nambari ya miundo kama nambari.

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated