Github Security
Github Ni Nini
(Kutoka hapa) Kwa kiwango cha juu, GitHub ni tovuti na huduma inayotegemea wingu inayosaidia watengenezaji kuhifadhi na kusimamia nambari zao, pamoja na kufuatilia na kudhibiti mabadiliko kwenye nambari zao.
Taarifa Msingi
pageBasic Github InformationUchunguzi wa Nje
Maktaba za Github zinaweza kusanidiwa kama za umma, za kibinafsi na za ndani.
Binafsi inamaanisha kwamba watu tu wa shirika wataweza kuzifikia
Ndani inamaanisha kwamba watoto wa kampuni (kampuni inaweza kuwa na mashirika kadhaa) pekee wataweza kuzifikia
Umma inamaanisha kwamba mtandao wote utaweza kuzifikia.
Ikiwa unajua mtumiaji, repo au shirika unalotaka kulenga unaweza kutumia github dorks kupata habari nyeti au kutafuta mifumo ya habari nyeti kwenye kila repo.
Github Dorks
Github inaruhusu kutafuta kitu kwa kufafanua kama eneo mtumiaji, repo au shirika. Kwa hivyo, kwa orodha ya maneno ambayo yataonekana karibu na habari nyeti unaweza kwa urahisi kutafuta habari nyeti inayowezekana kwenye lengo lako.
Zana (kila zana ina orodha yake ya dorks):
Vujaji wa Github
Tafadhali, kumbuka kuwa github dorks pia inalenga kutafuta vujaji kwa kutumia chaguzi za utaftaji wa github. Sehemu hii imejitolea kwa zana hizo ambazo zitapakua kila repo na kutafuta habari nyeti ndani yake (hata kuchunguza kina fulani cha commits).
Zana (kila zana ina orodha yake ya regexes):
Unapotafuta vujaji kwenye repo na kufanya kitu kama git log -p
usisahau kwamba kunaweza kuwa na vijitawi vingine na commits vingine vinavyoleta siri!
Vichwa vya Nje
Inawezekana kudhoofisha repos kwa kutumia maombi ya kuvuta. Ili kujua ikiwa repo ni dhaifu kwa kawaida unahitaji kusoma mizani ya yaml ya Github Actions. Maelezo zaidi kuhusu hili hapa chini.
Kufanya Shirika Kuwa Imara
Haki za Wanachama
Kuna haki za msingi ambazo zinaweza kutolewa kwa wanachama wa shirika. Hizi zinaweza kudhibitiwa kutoka ukurasa https://github.com/organizations/<org_name>/settings/member_privileges
au kutoka kwa API za Mashirika.
Ruhusa za msingi: Wanachama watapata ruhusa None/Read/write/Admin kwenye maktaba za shirika. Inapendekezwa ni Hakuna au Soma.
Kuforka maktaba: Ikiwa sio lazima, ni bora kutoruhusu wanachama kuforka maktaba za shirika.
Uundaji wa kurasa: Ikiwa sio lazima, ni bora kutoruhusu wanachama kuchapisha kurasa kutoka kwa maktaba za shirika. Ikiwa ni lazima unaweza kuruhusu kuunda kurasa za umma au za kibinafsi.
Maombi ya ufikiaji wa Ushirikiano: Ikiwa hii imezimwa, washirika wa nje wataweza kuomba ufikiaji kwa programu za GitHub au OAuth kufikia shirika hili na rasilimali zake. Mara nyingi inahitajika, lakini ikiwa sivyo, ni bora kuzima.
Sikupata habari hii kwenye majibu ya APIs, shiriki ikiwa unayo
Mabadiliko ya uonekano wa maktaba: Ikiwa imewezeshwa, wanachama wenye ruhusa za admin kwa maktaba wataweza kubadilisha uonekano wake. Ikiwa imezimwa, ni wamiliki wa shirika pekee wanaweza kubadilisha uonekanaji wa maktaba. Ikiwa hautaki watu kufanya mambo kuwa ya umma, hakikisha hii imezimwa.
Sikupata habari hii kwenye majibu ya APIs, shiriki ikiwa unayo
Kufuta na Kuhamisha Maktaba: Ikiwa imewezeshwa, wanachama wenye ruhusa za admin kwa maktaba wataweza kufuta au kuhamisha maktaba za umma na za kibinafsi.
Sikupata habari hii kwenye majibu ya APIs, shiriki ikiwa unayo
Kuruhusu wanachama kuunda timu: Ikiwa imewezeshwa, mwanachama yeyote wa shirika ataweza kuunda timu mpya. Ikiwa imezimwa, ni wamiliki wa shirika pekee wanaweza kuunda timu mpya. Ni bora kuwa na hii imezimwa.
Sikupata habari hii kwenye majibu ya APIs, shiriki ikiwa unayo
Vitu zaidi vinaweza kusanidiwa kwenye ukurasa huu lakini yale yaliyotangulia ni yale yanayohusiana zaidi na usalama.
Mipangilio ya Vitendo
Mipangilio kadhaa inayohusiana na usalama inaweza kusanidiwa kwa vitendo kutoka kwa ukurasa https://github.com/organizations/<org_name>/settings/actions
.
Tambua kuwa mipangilio yote hii inaweza pia kuwekwa kwa kila maktaba kivyake
Sera za vitendo vya Github: Inakuruhusu kuonyesha ni maktaba zipi zinaweza kutekeleza mifumo ya kazi na ni mifumo gani inapaswa kuruhusiwa. Inapendekezwa kutaja ni maktaba zipi zinapaswa kuruhusiwa na kutokuruhusu vitendo vyote viendelee.
Mifumo ya kazi ya maombi ya kuvuta kutoka kwa washirika wa nje: Inapendekezwa kuhitaji idhini kwa wote washirika wa nje.
Sikupata API na habari hii, shiriki ikiwa unayo
Tekeleza mifumo ya kazi kutoka kwa maombi ya kuvuta: Inapendekezwa sana kutotekeleza mifumo ya kazi kutoka kwa maombi ya kuvuta kwani watunzaji wa asili ya kuvuta watapewa uwezo wa kutumia vivuli vyenye ruhusa ya kusoma kwenye maktaba ya asili.
Sikupata API na habari hii, shiriki ikiwa unayo
Ruhusa za mifumo ya kazi: Inapendekezwa sana kutoa ruhusa za kusoma maktaba tu. Inapendekezwa kutokupa ruhusa za kuandika na kuunda/idhinisha maombi ya kuvuta ili kuepuka unyanyasaji wa GITHUB_TOKEN uliotolewa kwa mifumo inayotekelezwa.
Ushirikiano
Niambie kama unajua mwisho wa API wa kupata habari hii!
Sera ya ufikiaji wa programu za watu wa tatu: Inapendekezwa kuzuia ufikiaji wa kila programu na kuruhusu tu zile zinazohitajika (baada ya kuzipitia).
Programu za GitHub zilizosakinishwa: Inapendekezwa kuruhusu tu zile zinazohitajika (baada ya kuzipitia).
Uchunguzi & Mashambulizi yanayotumia vibali
Kwa kesi hii tutadhani umepata ufikiaji fulani kwenye akaunti ya github.
Kwa Vibali vya Mtumiaji
Ikiwa kwa namna fulani tayari una vibali vya mtumiaji ndani ya shirika, unaweza kuingia tu na kuangalia ni majukumu ya shirika na shirika unayo, ikiwa wewe ni mwanachama wa kawaida, angalia ni ruhusa zipi wanachama wa kawaida wanazo, katika makundi gani uko, ni ruhusa zipi unazo kwenye repos, na jinsi repos zilivyo kingwa.
Tafadhali kumbuka kwamba 2FA inaweza kutumika hivyo utaweza kupata habari hii tu ikiwa unaweza pita ukaguzi huo.
Kumbuka kwamba ikiwa unafanikiwa kuiba kuki ya user_session
(kwa sasa imeboreshwa na SameSite: Lax) unaweza kujifanya kuwa mtumiaji bila kuhitaji vibali au 2FA.
Angalia sehemu hapa chini kuhusu njia za kudanganya ulinzi wa matawi ikiwa itakuwa na manufaa.
Kwa Kitufe cha SSH cha Mtumiaji
Github inaruhusu watumiaji kuweka vitufe vya SSH ambavyo vitatumika kama njia ya uthibitishaji wa kuweka kanuni kwa niaba yao (hakuna 2FA inayotumika).
Kwa kitufe hiki unaweza kufanya mabadiliko kwenye repositoria ambapo mtumiaji ana baadhi ya ruhusa, hata hivyo huwezi kutumia kufikia api ya github kuchunguza mazingira. Hata hivyo, unaweza kuchunguza mipangilio ya ndani ili kupata habari kuhusu repos na mtumiaji unaofikia:
Ikiwa mtumiaji ameboresha jina lake la mtumiaji kama jina lake la github unaweza kupata funguo za umma alizoweka kwenye akaunti yake kwenye https://github.com/<github_username>.keys, unaweza kuchunguza hii ili kuthibitisha kwamba funguo ya kibinafsi uliyoipata inaweza kutumika.
Funguo za SSH pia zinaweza kuwekwa kwenye hazina kama funguo za kupeleka. Mtu yeyote mwenye ufikiaji wa funguo hii ataweza kuzindua miradi kutoka kwenye hazina. Kawaida kwenye seva yenye funguo tofauti za kupeleka, faili ya ndani ~/.ssh/config
itakupa habari kuhusu funguo ipi inahusiana.
Funguo za GPG
Kama ilivyoelezwa hapa mara nyingine inahitajika kusaini maandiko au unaweza kugunduliwa.
Chunguza kwa kujua ikiwa mtumiaji wa sasa ana funguo yoyote kwa:
Kwa Token ya Mtumiaji
Kwa maelezo zaidi kuhusu Vyeti vya Mtumiaji angalia taarifa za msingi.
Tokeni ya mtumiaji inaweza kutumika badala ya nenosiri kwa Git kupitia HTTPS, au inaweza kutumika kwa uthibitisho kwa API kupitia Uthibitisho wa Msingi. Kulingana na mamlaka iliyowekwa unaweza kufanya vitendo tofauti.
Tokeni ya Mtumiaji inaonekana kama hivi: ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123
Kwa Maombi ya Oauth
Kwa maelezo zaidi kuhusu Maombi ya Oauth ya Github angalia taarifa za msingi.
Mshambuliaji anaweza kuunda Maombi ya Oauth yenye nia mbaya kufikia data/vitendo vya siri vya watumiaji ambao huwaruhusu labda kama sehemu ya kampeni ya ughushi.
Hizi ni mamlaka ambazo maombi ya Oauth yanaweza kuomba. Daima mtumiaji anapaswa kuangalia mamlaka zinazohitajika kabla ya kuzikubali.
Zaidi ya hayo, kama ilivyoelezwa katika taarifa za msingi, shirika linaweza kutoa/kukataa upatikanaji wa maombi ya watu wa tatu kwa habari/repos/vitendo vinavyohusiana na shirika.
Kwa Maombi ya Github
Kwa maelezo zaidi kuhusu Maombi ya Github angalia taarifa za msingi.
Mshambuliaji anaweza kuunda Maombi ya Github yenye nia mbaya kufikia data/vitendo vya siri vya watumiaji ambao huwaruhusu labda kama sehemu ya kampeni ya ughushi.
Zaidi ya hayo, kama ilivyoelezwa katika taarifa za msingi, shirika linaweza kutoa/kukataa upatikanaji wa maombi ya watu wa tatu kwa habari/repos/vitendo vinavyohusiana na shirika.
Kuvunja na Kutumia Vibaya Hatua za Github
Kuna njia kadhaa za kuvunja na kutumia vibaya Hatua ya Github, zitazame hapa:
pageAbusing Github ActionsKupuuza Kinga ya Matawi
Hitaji idhini kadhaa: Ikiwa umevunja akaunti kadhaa unaweza tu kukubali maombi yako ya PR kutoka kwa akaunti nyingine. Ikiwa una akaunti ambayo uliunda PR kutoka hapo huwezi kukubali PR yako mwenyewe. Hata hivyo, ikiwa una ufikiaji wa mazingira ya Hatua ya Github ndani ya repo, ukitumia GITHUB_TOKEN unaweza kuidhinisha PR yako na kupata idhini moja kwa njia hii.
Angalia kwa hili na kwa kizuizi cha Wamiliki wa Kanuni kwamba kawaida mtumiaji hataweza kuidhinisha PR zake mwenyewe, lakini ikiwa unaweza, unaweza kutumia vibaya kuidhinisha PR zako.
Futa idhini wakati maandishi mapya yanapopakiwa: Ikiwa hii haijawekwa, unaweza kuwasilisha kanuni halali, subiri mpaka mtu aithibitishe, na weka kanuni yenye nia mbaya na kuimega kwenye tawi lililolindwa.
Hitaji mapitio kutoka kwa Wamiliki wa Kanuni: Ikiwa hii imeamilishwa na wewe ni Mmiliki wa Kanuni, unaweza kufanya Hatua ya Github kuunda PR yako na kisha kuithibitisha mwenyewe.
Wakati faili ya CODEOWNER imepangiliwa vibaya Github haitoi malalamiko lakini haifanyi matumizi yake. Kwa hivyo, ikiwa imepangiliwa vibaya kinga ya Wamiliki wa Kanuni haitekelezwi.
Ruhusu waigizaji maalum kukiuka mahitaji ya maombi ya kuvuta: Ikiwa wewe ni mmoja wa waigizaji hawa unaweza kukiuka kinga ya maombi ya kuvuta.
Jumuisha wasimamizi: Ikiwa hii haijawekwa na wewe ni msimamizi wa repo, unaweza kukiuka kinga ya tawi hili.
Utekaji wa PR: Unaweza kuwa na uwezo wa kurekebisha PR ya mtu mwingine kwa kuongeza kanuni yenye nia mbaya, kuidhinisha PR inayotokana na hilo mwenyewe na kufunga kila kitu.
Kuondoa Kinga ya Matawi: Ikiwa wewe ni msimamizi wa repo unaweza kulemaza kinga, kufunga PR yako na kuweka kinga hizo tena.
Kukiuka kinga ya kuvuta: Ikiwa repo inaruhusu watumiaji fulani tu kutuma kuvuta (kufunga kanuni) kwenye matawi (kinga ya tawi inaweza kulinda matawi yote ikieleza joker
*
).Ikiwa una ufikiaji wa kuandika kwenye repo lakini hauruhusiwi kufunga kanuni kwa sababu ya kinga ya tawi, bado unaweza kuunda tawi jipya na ndani yake kuunda hatua ya github ambayo inaanzishwa wakati kanuni inapofungwa. Kwa kuwa kinga ya tawi haitalinda tawi hadi litakapoanzishwa, kufungua kanuni ya kwanza kwenye tawi hilo kutasababisha utekelezaji wa hatua ya github.
Kukiuka Kinga ya Mazingira
Kwa maelezo zaidi kuhusu Mazingira ya Github angalia taarifa za msingi.
Katika kesi ambapo mazingira yanaweza kufikiwa kutoka matawi yote, hayalindwi na unaweza kwa urahisi kufikia siri ndani ya mazingira. Kumbuka kwamba unaweza kukuta repos ambapo matawi yote yanalindwa (kwa kutaja majina yake au kwa kutumia *
) katika hali hiyo, tafuta tawi ambalo unaweza kufunga kanuni na unaweza kuchota siri kwa kuunda hatua mpya ya github (au kubadilisha moja).
Kumbuka, unaweza kukuta hali ya kipekee ambapo matawi yote yanalindwa (kupitia joker *
) imetajwa nani anaweza kufunga kanuni kwenye matawi (unaweza kutaja hilo katika kinga ya tawi) na mtumiaji wako hauruhusiwi. Bado unaweza kutekeleza hatua ya github ya desturi kwa sababu unaweza kuunda tawi na kutumia kichocheo cha kufunga juu yake. Kinga ya tawi inaruhusu kufunga kwenye tawi jipya hivyo hatua ya github itaanzishwa.
Tafadhali kumbuka baada ya kuunda tawi ulinzi wa tawi utatumika kwa tawi jipya na hutaweza kulibadilisha, lakini kufikia wakati huo tayari utakuwa umeshatoa siri.
Uimara
Zalisha ishara ya mtumiaji
Pora ishara za github kutoka siri
Kufuta matokeo ya mfumo wa kazi na matawi
Toa ruhusa zaidi kwa shirika lote
Unda kamba za wavuti kwa ajili ya kuchukua habari
Alika washirika wa nje
Ondoa kamba za wavuti zilizotumiwa na SIEM
Unda/abadilisha Hatua ya Github na mlango wa nyuma
Pata Hatua ya Github inayoweza kudhuriwa kwa kuingiza amri kupitia ubadilishaji wa thamani ya siri
Kuingiza Kwa Udanganyifu - Mlango wa Nyuma kupitia kuingiza kwa kuingiza amri
Katika Github ni inawezekana kuunda PR kwa repo kutoka kwa fork. Hata kama PR haikubaliki, kitambulisho cha kuingiza ndani ya repo ya awali kitabuniwa kwa toleo la fork la nambari. Hivyo, mshambuliaji anaweza kufunga kutumia kuingiza maalum kutoka kwa repo inayoonekana kuwa halali ambayo haikuundwa na mmiliki wa repo.
Kama hii:
Kwa maelezo zaidi angalia https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd
Last updated