Заҳролудшуда-Pipeline-Иҷро

Ғарқшавии амиқ CI/CD PipelineОсебпазириҳо (I): Заҳролудшуда Pipeline Иҷро (PPE)

Ҳамгироии пайваста ва ҷойгиркунии пайваста (CI/CD) pipelineдар мусоидат ба таҳияи нармафзори соддакардашуда нақши муҳим мебозанд. Бо вуҷуди ин, зеро инҳо pipelineбо мурури замон, зарурати ҳифзи онҳо аз осебпазириҳо возеҳтар мегардад. Ин таҳқиқоти амиқ ба ҳалли хатари намоёне, ки дар рӯйхати 10 беҳтарини OWASP муайян шудааст, тамаркуз мекунад. CI/CD Хатарҳои амниятӣ: Заҳролудшуда Pipeline Иҷрои (PPE).

Тасвири беҳтарини OWASP 10

Заҳролудшавӣ чист? Pipeline Иҷро (PPE)

Мувофиқи рейтинги Top-10 OWASP CI/CD Хатарҳои амниятӣ, "Заҳролуд шудааст Pipeline Иҷро (КУИ) хатар ба қобилияти ҳамлагар бо дастрасӣ ба системаҳои идоракунии манбаъ ва бидуни дастрасӣ ба муҳити сохташуда ишора мекунад. барои тағир додани раванди сохтан тавассути ворид кардани рамзи/фармонҳои зараровар ба сохтан pipeline конфигуратсия, аслан «заҳролудшавӣ»-ро pipeline ва иҷро кардани рамзи зараровар ҳамчун як қисми раванди сохтан"

Бо чанд калима, заҳролудшуда Pipeline Иҷро (PPE) вақте истеҳсол мешавад, ки ҳамлагар метавонад онро тағир диҳад pipeline мантиқи.

Ду нафар мебошанд вариантҳо:

  • PPE мустақим (D-PPE): Дар сенарияи D-PPE, Ҳамлагар файли конфигуратсияи CI-ро тағир медиҳад дар анборе, ки онҳо ба он дастрасӣ доранд, ё тавассути тела додани тағйирот мустақиман ба шохаи дурдасти ҳифзнашуда дар анбор, ё тавассути пешниҳоди PR бо тағйирот аз шоха ё чангак. Аз замони CI pipeline Иҷро аз ҷониби фармонҳо дар файли конфигуратсияи CI-и тағйирёфта муайян карда мешавад, фармонҳои зараровари ҳамлагар дар ниҳоят пас аз сохтан дар гиреҳи сохтан иҷро мешаванд. pipeline ангехта мешавад.
  • Васоити муҳофизатии ғайримустақим (I-PPE): Дар баъзе ҳолатҳо, имконияти истифодаи D-PPE барои душмане, ки ба SCM анбор (масалан, агар pipeline барои кашидани файли конфигуратсияи CI аз шохаи алоҳида ва ҳифзшуда дар ҳамон анбор танзим шудааст). Дар чунин сенария, ба ҷои заҳролуд кардан pipeline худаш, ҳамлагар рамзи зарароварро ба файлҳое, ки аз ҷониби онҳо истинод карда мешаванд, ворид мекунад pipeline (масалан: скриптҳое, ки аз дохили он истинод шудаанд pipeline файли конфигуратсия)

Дар ҳарду ҳолат, GitHub тағирёфтаро иҷро мекунад pipeline бидуни зарурати баррасии қаблӣ ё тасдиқ.

CICD-Заҳролудшуда-Pipeline-Иҷро

Ошкоркунии барвақтии воситаҳои муҳофизатии шахсӣ

Чӣ тавр мо метавонем ин намуди осебпазириро муайян кунем? 

Биёед ин мисолро дида бароем pipeline :

Ва мундариҷаи скрипти shell-и думми (runtests.sh):

Дар pipeline хеле содда аст: ҳадафи он пешниҳоди баъзе маслиҳатҳои пешакӣ ба баррасикунанда барои Pull Request Раванди қабули (PR):

  • Он дар вақти фаъол мешавад дархости кашидан (яъне ҳар вақте ки PR эҷод мешавад)
  • Он рамзи PR-ро (яъне рамзи саҳмгузорро) тафтиш мекунад.
  • Он сохтмонро месозад 
  • Он санҷишҳоро дар рамзи саҳмгузор иҷро мекунад (масалан, бо иҷрои скрипти shell) 

Қадамҳои #3 (сохтани сохтор) ва #4 (иҷрои санҷиш) агар код тартиб дода нашавад ё аз санҷишҳо нагузарад, ноком мешаванд. Пас, ин қадамҳо ҳамчун шарти зарурӣ, вале кофӣ барои қабули PR амал мекунанд. Агар муваффақ бошанд, мудири анбор рамзи саҳмгузорро баррасӣ мекунад ва дар асоси он, ӯ PR-ро қабул/рад/шарҳ медиҳад.  

Сканери Xygeni

Ксигенӣ CLI-ро таъмин мекунад ("Сканери Xygeni”), ки метавонад ба он ҷойгир карда шавад pipeline ё дар сатри фармон иҷро кунед. Сканери Xygeni онро коркард мекунад pipelines барои санҷидани осебпазириҳо ва агар PAT GitHub пешниҳод карда шавад, он барои ошкор кардани осебпазириҳо дар сатҳи org/repo ба GitHub пайваст мешавад.

Инвентаризатсияи Xygeni

Вақте ки мо сканери Xygeni-ро дар ин анбор иҷро мекунем, он маҷмӯи муфиди дороиҳоро ( Инвентаризатсияи Xygeni). Инвентаризатсия бо намудҳои гуногуни гуногун пур карда мешавад CI/CD дороиҳо, ба мисли:

  • Дар SCM система ки дар он анбор нигоҳ дошта мешавад
  • Дар SCM Замима насбшуда/истифодашуда
  • Дар Анбори рамзҳо худ
  • Дар SCM ташкилот ки дар он анбор ба он тааллуқ дорад
  • Дар CI/CD Pipelineва ҷойҳои корӣ
  • Дар CI/CD система идора кардани pipelines
  • IaC захираҳо дар анбор муайян карда шудааст
  • Дигар Таҳдидҳо
  • ва ғайра ..

Дар мисоли мо, мо метавонем инвентаризатсияро аз рӯи ягон намуди дороиҳои мушаххас филтр кунем (SCM- ва дороиҳои марбут ба CICD), бинобар ин мо метавонем бубинем, ки:

  • SCM система GitHub Cloud аст
  • Репозитория дар GitHub Cloud нигоҳ дошта мешавад ва ба як созмони мушаххаси GitHub тааллуқ дорад
  • Ду нафар мебошанд pipelineаз ҷониби GitHub кор мекунад (CI/CD система)
  • Ҳар pipeline як қадами мушаххасро дар бар мегирад
Заҳролуд шудааст Pipeline Иҷро (PPE)

Бо интихоби боло pipeline мо метавонем баъзе камбудиҳоро бубинем:

  • At pipeline сатҳ, он ба ҳарду осебпазир аст бевосита ва ШХБ-и ғайримустақим.

Мо метавонем тафсилоти онҳоеро, ки заҳролуд шудаанд, бубинем Pipeline Осебҳои иҷроиш

Заҳролуд шудааст Pipeline Иҷро (PPE)
Заҳролуд шудааст Pipeline Иҷро (PPE)

Xygeni муайян мекунад, ки ин аст осебпазир ба D-PPE зеро он дар як фаъол мешавад Pull Request ҳодиса вуҷуд дорад ва ягон назорати иловагии амниятӣ вуҷуд надорад, аз ин рӯ ҳар як корбари анбор метавонад онро тағир диҳад pipeline ва ин тағйирот бе ягон баррасӣ ё тасдиқ амалӣ карда мешаванд. 

Ба ҳамин маъно, Xygeni инчунин муайян мекунад, ки ин аст осебпазир ба I-PPE аз сабаби даъват ба скрипти shell аз pipelineҲар як корбари анбор метавонад скрипти shell-ро тағир диҳад ва ин тағиротҳо бидуни баррасӣ ё тасдиқ иҷро карда мешаванд.

Мехоҳед маълумоти бештар гиред?

Истифодаи воситаҳои муҳофизатии шахсӣ

Барои истифодаи PPE, биёед сенарияеро баррасӣ кунем, ки дар он ҷо вуҷуд дорад ду намуди корбарони анбор:

  • An корбари дохилӣ (таҳиягари дохилӣ, ки дар он анбор кор мекунад), бо иҷозатҳои навиштан дар анбор
  • An корбари беруна (таҳиягари берунаи дар он анбор коркунанда, аммо бо иҷозатҳои хондан дар анбор), яъне иҷозати шохабандии анборро надорад ва маҷбур аст, ки дар чангак кор кунад.

Биёед тасаввур кунем, ки ҳарду ҳамлагарони бадхоҳанд (ё аз ҷониби як шахси бадхоҳ тақлид карда шудаанд). Дар анбор ягон сир мавҷуд аст ва ҳарду мехоҳанд дуздидани сирри анбор ва онро ба сервери аз ҷониби ҳакерҳо идорашаванда фиристед. Барои ин, онҳо аз заҳролудшуда истифода мебаранд. Pipeline Осебпазириҳои иҷрои pipeline.

cicd-demo-daq

Дар ҳарду ҳолат (корбари беруна ва дохилӣ), онҳо якро мекушоянд Pull Request бо ҳамон тағйирот:

  • Дар pipeline ва скрипти shell тағир дода шудааст ба сирро бихонед аз муҳити зист ва онро ба сервери аз ҷониби ҳакерҳо идорашаванда фиристед

Тағйирот метавонанд чунин бошанд:

тағйироти cicd
истисмори cicd

Ҳарду корбар эҷод мекунанд Pull Request бо тағйироту иловаҳоПас аз таъсиси PR, GitHub ҳарду тағиротро иҷро мекунад (бе баррасии пешакӣ ё тасдиқи пешакӣ), дар натиҷа зерин ба даст меояд:

Top10-CICD-v1.0-9

Ҳамин чиз барои корбарони навиштан ва хондан, дар ҳарду ҳолат D-PPE ва I-PPE иҷро карда мешаванд, бо фарқияти он ки корбари хондашуда наметавонад ба асрор дастрасӣ пайдо кунад. (!!!!) 

Ин сабаб аз он сабаб аст, Дар ҳолати PR аз чангак, GitHub дастрасӣ ба асрори анборро иҷозат намедиҳад. Гарчанде ки корбари хондашуда наметавонад асрорро хонад, ӯ/ӯ метавонад ҳама гуна барномаи дигарро иҷро кунад. Мисоли маъмулии ҳамла эҷоди PR-ҳоест, ки криптомайнерро зеркашӣ мекунанд, аз ин рӯ, иҷрокунандаи GitHub ҳангоми иҷрои заҳролудшуда криптомайнерро иҷро мекунад. pipeline.

Албатта, ин муҳити бехатар нест!! Мудири анбор барои пешгирӣ аз он чӣ кор карда метавонад?

Пас аз ҷустуҷӯи каме дар Google, мудири анбор қарор мекунад, ки онро тағир диҳад pipeline ба кор андохта шавад pull_request_target рӯйдод. Чаро? Зеро pipelines дар pull_request_target фаъол мешавад, ки иҷрои онҳоро иҷозат намедиҳад pipeline Тағйирдиҳии, яъне сарфи назар аз ҳама гуна тағироти корбар "аслӣ" pipeline иҷро карда мешавад.

Пас аз намунаи мо, ҳамла мисли пештара хоҳад буд. Пас аз ин чӣ рӯй хоҳад дод pipeline тағйирдиҳӣ? 

ппе

Тавре, D-PPE иҷро намешавад аммо, азбаски I-PPE ҳоло ҳам вуҷуд дорад, корбари хондашуда акнун метавонад ба махфи анбор дастрасӣ пайдо кунад!!! 

Сабаби он ки корбари хондашуда ҳоло ба асрор дастрасӣ дорад, чист? Гарчанде ки pipeline тағйир дода намешавад, аммо ҳоло ҳам тағир додани скрипти shell имконпазир аст. Вақте ки а pipeline дар pull_request_target фаъол мешавад, он дар ҳолати имтиёзнок иҷро карда мешавад so он инчунин скрипти shell хоҳад буд, ки дар натиҷа скрипти shell ба асрори анборҳо дастрасӣ дорад!!

Тадбирњои пешгирикунанда

GitHub баъзе чораҳоро барои муҳофизат аз PR-ҳои зараровар пешниҳод мекунад. 

Қоидаҳои ҳифзи филиал

Бо GitHub шумо метавонед Қоидаҳои ҳифзи шохаҳоро бар шохаҳои интихобшуда муайян кунед.

Барои шохаҳои ҳифзшудаи худ, шумо метавонед сиёсатеро муайян кунед, ки талаб мекунад pull request пеш аз муттаҳидшавӣ (инчунин шартҳои иловагӣ ба монанди шумораи зарурии тасдиқҳо, баррасиҳо аз соҳибони рамз ва ғайра)

Якчанд шартҳое, ки сазовори таваҷҷӯҳи махсус мебошанд, инҳоянд:

  • "Ба фаъолони мушаххас иҷозат диҳед, ки аз зарурат канорагирӣ кунанд pull requests". 
  • "Гузаронидани танзимоти дар боло зикршударо иҷозат надиҳед"

Гарчанде ки аксари шартҳо ба сиёсат сахтгириро зам мекунанд, ин шартҳо сиёсатро суст мекунанд ва ин метавонад боиси кушода шудани дарҳо барои фаъолиятҳои зараровар гардад, масалан, дар сурате, ки эътимодномаҳо аз ҷониби шахсони "имтиёзнок" дуздида шаванд.

Маҳдуд кардани иҷозатномаҳои GITHUB_TOKEN (камтарин имтиёз)

Иҷозатҳои токени GitHub-ро танҳо ба иҷозатҳои зарурӣ маҳдуд кунед; бо ин роҳ, ҳатто агар ҳамлагарон дар вайрон кардани маълумоти шумо муваффақ шаванд pipeline, онҳо наметавонанд корҳои зиёдеро анҷом диҳанд.

Аз интерполятсияи сатрҳо бо истифода аз pipeline тағйирёбандаҳои муҳити атроф

Ҳар вақте ки шумо баъзе тағирёбандаҳои вурудиро дар худ истифода мебаред pipeline, огоҳ бошед, ки онҳо бояд пешфарз ҳамчун маълумоти "беэътимод" ҳисобида шаванд (муҳтавои онҳо аз ҷониби корбари ниҳоӣ назорат карда мешавад). Нигаред Амнияти амалиётҳо ва ҷараёнҳои кории беэътимод ва Амалҳои Github-ро омӯзед.

Шумо бояд ҳамеша тағирёбандаҳои муҳити зистро барои ворид кардани тағирёбандаҳои вурудӣ дар дохили скриптҳо ба ҷои истифодаи интерполятсияи сатрӣ истифода баред.

Ҷараёни корӣ ва талаботи тасдиқ

барои умумӣ анборҳо, GitHub имкон медиҳад, ки муайян кунад чӣ гуна бо PR-ҳои "берунӣ" кор кардан мумкин аст

Танзимоти ташкилоти GitHub ("Ташкилот >> Танзимот >> Амалҳо >> Умумӣ") имкон медиҳад, ки чӣ гуна идоракунии PR-ҳои берунаро муайян кунед:

дақиқаи кашидани чангак

Бо нобаёнӣ, GitHub барои саҳмгузорони аввалиндараҷа тасдиқи PR-ро талаб мекунад, ки ин ҳамлаҳои дархостҳои зарароварро мураккабтар мекунад. Бо вуҷуди ин, ҳамлагар метавонад эътимоди нигоҳдорандагони лоиҳаро ба даст орад, масалан, бо саҳмгузорӣ кардани баъзе маълумоти бегуноҳ. pull request пеш аз ҳамлаи воқеӣ. 

Ба ин маъно, ки Варианти сеюм (талаб кардани тасдиқи ҳамаи ҳамкорони беруна) сатҳи баланди назоратро зам мекунад. 

барои хусусї Бо вуҷуди ин, GitHub инчунин назорати муфидро ҳам дар сатҳи созмон ва ҳам дар сатҳи анбор таъмин мекунад. 

Чангаки пулакӣ2

"Ҷараёнҳои кориро аз Pull Requests"(бо нобаёнӣ қайд нашудааст) ба корбарон имкон медиҳад, ки ҷараёнҳои кориро аз PR-ҳои форк иҷро кунанд (бо истифода аз GITHUB_TOKEN бо иҷозатҳои танҳо барои хондан ва бидуни дастрасӣ ба асрор). Бо интихоби ин интихоб якҷоя бо охирин ("Барои ҷараёнҳои кории PR-ҳои форк тасдиқ талаб карда мешавад”), шумо метавонед ба сиёсати монанд ба анборҳои хусусӣ (тавре ки дар боло нишон дода шудааст) бирасед. 

Тавре ки мо дар PPE аз корбари хондашуда дидем, имкон медиҳад, ки ҷараёнҳои корӣ аз чангак иҷро шаванд pull requests ноамн аст!!

Имконоти боқимонда ("Ирсоли токенҳои навиштан ба ҷараёнҳои корӣ аз чангак pull requests"Ва"Асрорҳо ва тағирёбандаҳоро ба ҷараёнҳои корӣ аз барои фиристед pull requests") паст кардани сатҳи амният ба PR-ҳои чангак татбиқ карда мешавад. 

Шумо метавонед ин сиёсати форкро ҳам дар сатҳи ташкилот ё дар сатҳи захира муайян кунед. Агар сиёсат дар сатҳи ташкилот ғайрифаъол бошад, онро дар сатҳи захира фаъол кардан мумкин нест. Аммо, агар сиёсат дар сатҳи ташкилот фаъол бошад, онро дар сатҳи захира ғайрифаъол кардан мумкин аст.

Мушкилоти OWASP

Recap

Умедворем, ки шумо оқибатҳои доштани баъзеҳоро дидаед pipeline осебпазир ба заҳролудшавӣ Pipeline Иҷро. Ин хеле осон аст commit осебпазир pipeline, ва навиштани як нусхаи бехатар душвор аст. 

Аз ин рӯ, истифодаи сканери Xygeni барои огоҳ будан аз чунин осебпазириҳо хеле арзишманд аст.

Шумо наметавонед як осебпазириро ҳал кунед, агар аз мавҷудияти он огоҳ набошед!! 

Аммо... ҳанӯз ҳам як саволи дарпешистода вуҷуд дорад... Чӣ тавр аз I-PPE канорагирӣ кардан мумкин аст? 

Ин мавзӯи пости навбатии мо хоҳад буд 🙂… Заҳролудшавии ғайримустақим Pipeline Иҷро (I-PPE) !!

Заҳролудшавии ғайримустақим Pipeline Иҷро (I-PPE)

Ғарқшавии амиқ CI/CD PipelineОсебпазириҳо (II)​

Заҳролудшавӣ бо артефакт ва ворид кардани код

Ғарқшавии амиқ CI/CD PipelineОсебпазириҳо (III)

Муҳофизат аз заҳролудшавӣ аз артефакт тавассути тасдиқи нармафзор

Ғарқшавии амиқ CI/CD PipelineОсебпазириҳо (IV)
асбобҳои sca-tools-нармафзор-таҳлили таркиб
Хатарҳои нармафзори худро афзалият диҳед, ислоҳ кунед ва бехатар созед
Ҳисоби ройгони худро дастрас кунед.
Корти кредитӣ лозим нест.

Таҳия ва интиқоли нармафзори худро таъмин кунед

бо маҷмӯи маҳсулоти Xygeni