Устаўка зменных асяроддзя ў працэс зборкі — гэта standard практыка ў сучаснай CI/CD pipelineКаманды ўводзяць зменныя асяроддзя ў працэс зборкі, каб перадаваць сакрэты, токены і канфігурацыю асяроддзя выканання ў зборкі без жорсткага кадавання значэнняў. На першы погляд, гэта выглядае як просты і бяспечны шаблон.
Аднак на практыцы гэта часта становіцца адной з самых недаацэненых рызык у ланцужку паставак праграмнага забеспячэння.
Таму што, як толькі каманды ўводзяць зменныя асяроддзя ў працэс зборкі, гэтыя значэнні перастаюць быць ізаляванымі. Яны становяцца даступнымі для ўсяго, што працуе ўнутры гэтага pipelineСкрыпты зборкі, інструменты каманднага радка, дзеянні іншых распрацоўшчыкаў і нават залежнасці могуць іх чытаць.
Вось тут і пачынаецца разбурэнне.
У гэтым кіраўніцтве мы раскажам, як каманды ўводзяць зменныя асяроддзя ў працэс зборкі ў рэальных умовах. pipelineдзе насамрэч адбываюцца ўцечкі і як абараніць працэс зборкі, не запавольваючы распрацоўку.
Што азначае ўкараненне зменных асяроддзя ў працэс зборкі
Па сутнасці, увядзенне зменных асяроддзя азначае перадачу значэнняў у pipeline падчас выканання, каб заданні маглі атрымаць да іх доступ падчас выканання.
Звычайна гэтыя значэнні ўключаюць ключы API, уліковыя дадзеныя базы дадзеных, токены або канфігурацыю, спецыфічную для асяроддзя. Замест таго, каб захоўваць іх непасрэдна ў кодзе, CI/CD сістэма загружае іх дынамічна пры пачатку зборкі.
Гэта вырашае сапраўдную праблему. Гэта дапамагае захаваць код чыстым, пазбегнуць дубліравання і дазваляе рабіць тое ж самае. pipeline працаваць у асяроддзях падрыхтоўкі, тэсціравання і вытворчасці.
Аднак гэтая мадэль абапіраецца на здагадку, якая больш не адпавядае рэчаіснасці: асяроддзе зборкі кантраляванае і прадказальнае.
Moderne pipelines не з'яўляюцца ні тым, ні другім. Яны ўключаюць у сябе некалькі крокаў, знешнія інтэграцыі і залежнасці, якія дынамічна выконваюць код. У выніку, пасля ўвядзення зменнай, яна ўжо не з'яўляецца проста канфігурацыяй. Яна становіцца часткай кантэксту выканання.
Дзе ўцечка зменных асяроддзя ў працэсе зборкі
Большасць уцечак інфармацыі адбываецца не таму, што хтосьці відавочна раскрывае сакрэт. Яны адбываюцца таму, што pipelineпаводзяць сябе такім чынам, якога распрацоўшчыкі не цалкам прадбачылі.
Напрыклад, распрацоўшчык можа ўключыць падрабязную рэгістрацыю для адладкі няўдалай зборкі. Інструмент каманднага радка можа выводзіць зменныя асяроддзя як частку свайго вываду. Залежнасць можа ціха атрымліваць доступ да зменных працэсу як частку свайго выканання.
Ніводнае з гэтых дзеянняў само па сабе не выглядае падазроным. Аднак разам яны ствараюць некалькі шляхоў уцечкі.
Сакрэты могуць апынуцца ў:
- ствараць журналы, якія захоўваюцца і індэксуюцца
- вывад адладкі, агульны для ўсіх каманд
- Дзеянні старонніх неканфігурацыйных інтэрфейсаў, якія запускаюць знешні код
- залежнасці, якія выконваюцца падчас усталёўкі або выканання
- часовыя артэфакты, створаныя падчас зборкі
Пасля таго, як сакрэт з'яўляецца ў журналах, ён рэдка застаецца ў таямніцы. Журналы капіююцца, захоўваюцца і захоўваюцца ў некалькіх сістэмах. У гэты момант раскрыццё распаўсюджваецца далёка за межы арыгіналу. pipeline.
Вось чаму ўцечкі зменных асяроддзя часта выяўляюцца позна, пасля таго, як шкода ўжо нанесена.
Чаму каманды ўводзяць зменныя асяроддзя ў працэс зборкі
Нягледзячы на гэтыя рызыкі, каманды ў значнай ступені залежаць ад увядзення зменных асяроддзя. І нездарма.
гэта дазваляе pipelineзаставацца гнуткім. Адзін працоўны працэс можа адаптавацца да розных асяроддзяў, аўтэнтыфікавацца ў некалькіх сэрвісах і дынамічна змяняць паводзіны без змены кода.
У хутка развіваючыхся асяроддзях DevOps гэтая гнуткасць вельмі важная. Аднак гнуткасць заўсёды мае свае недахопы. Чым больш дынамічны pipeline чым большая колькасць даных, тым цяжэй кантраляваць тое, што адбываецца ўнутры яе. Кожны дадатковы крок, інтэграцыя або залежнасць павялічвае колькасць месцаў, дзе можна атрымаць доступ да канфідэнцыйных даных.
У выніку, увядзенне зменных асяроддзя ператвараецца з дэталі канфігурацыі ў праблему бяспекі.
Распаўсюджаныя рызыкі пры ўкараненні зменных асяроддзя ў працэс зборкі
Рызыкі не тэарэтычныя. Яны праяўляюцца ў рэальных pipelineкожны дзень.
Сакрэты прасочваюцца ў журналы
Бярвёны — адзін з найбольш распаўсюджаныя крыніцы ўздзеянняСцягі адладкі, інструменты каманднага радка і трасіроўкі стэка часта раскрываюць канфідэнцыйныя значэнні, не заўважаючы гэтага ад распрацоўшчыкаў.
Пасля таго, як гэтыя значэнні будуць выкрытыя, яны хутка распаўсюджваюцца па сістэмах.
Звышдазвольны доступ
Шмат pipelineпадвяргае ўсе зменныя ўсім задачам. Гэта стварае непатрэбную рызыку.
Калі адзін з этапаў будзе ўзламаны, ён можа атрымаць доступ да ўліковых дадзеных, якія яму насамрэч не патрэбныя.
Залежнасць і злоўжыванне дзеяннямі
Moderne pipelineмоцна залежаць ад інструментаў і інтэграцый іншых вытворцаў. Гэтыя кампаненты працуюць у тым жа асяроддзі, што і вашы сакрэты.
Калі адзін з іх паводзіць сябе зламысна, ён можа ціха атрымаць доступ да ўведзеных зменных.
па OWASPАтакі на ланцужкі паставак часта выкарыстоўваюць давераныя кампаненты ў працэсе зборкі. Зменныя асяроддзя часта становяцца найпрасцейшай мішэнню.
Сакрэты рэзервовых варыянтаў у кодзе
Калі зборкі не ўдаюцца з-за адсутнасці зменных, каманды часам дадаюць рэзервовыя значэнні, каб захаваць pipelineпрацуе.
З часам гэтыя значэнні становяцца commitвыкарыстоўваюцца або разгортваюцца, ствараючы доўгатэрміновае ўздзеянне.
Найлепшыя практыкі бяспечнага ўкаранення зменных асяроддзя ў працэс зборкі
| Катэгорыі | Лепшая практыка | Чаму гэта важна |
|---|---|---|
| Захоўванне сакрэтаў | Выкарыстоўвайце сховішча або менеджар сакрэтаў неканфігураванай інфраструктуры | Прадухіляе раскрыццё ў кодзе |
| Кантроль доступу | Абмежаваць доступ для кожнага задання | Памяншае паверхню атакі |
| Запіс | Маскіраваць адчувальныя значэнні | Прадухіляе ўцечкі |
| Аб'ём і тэрмін службы | Выкарыстоўвайце кароткатэрміновыя ўліковыя дадзеныя | Абмежаванні радыуса выбуху |
| Validation | Збой зборкі, калі адсутнічаюць зменныя | Пазбягае небяспечных адкатаў |
Чаму многія CI/CD Інструменты бяспекі Miss Env Var Leaks
Большасць інструментаў бяспекі сканцэнтраваны на сканаванні кода або залежнасцей пасля завяршэння зборкі.
Аднак падчас выканання адбываюцца ўцечкі зменных асяроддзя.
A pipeline можа правільна ўводзіць сакрэты і ўсё роўна раскрываць іх праз журналы або паводзіны падчас выканання. Да таго часу, як сканер выявіць праблему, сакрэт ужо можа быць скампраметаваны.
Гэта стварае разрыў паміж выяўленнем і прафілактыкай.
Камандам патрэбныя сродкі кантролю, якія дзейнічаюць падчас pipeline працуе, а не пасля яго завяршэння.
Як мы рэкамендуем забяспечыць укараненне зменных асяроддзя
На практыцы эфектыўная абарона зводзіцца да некалькіх паслядоўных прынцыпаў.
Захоўвайце сакрэты па-за межамі pipelineУстаўляйце іх толькі падчас выканання. Абмяжуйце доступ мінімальна неабходнай вобласцю. Выкарыстоўвайце кароткатэрміновыя ўліковыя дадзеныя, калі гэта магчыма.
Адначасова сачыце за тым, як pipelines доступ да канфідэнцыйных значэнняў. Нечаканыя схемы доступу часта сведчаць аб рызыцы, перш чым уцечка стане бачнай.
Гэты падыход пераводзіць бяспеку з рэактыўнага выяўлення на праактыўны кантроль.
Як Xygeni дапамагае абараніць CI/CD Сакрэтная ін'екцыя
Замест таго, каб спадзявацца толькі на сканаванне пасля зборкі, Xygeni аналізуе, як pipelineвыкарыстоўваюць зменныя асяроддзя падчас выканання. Гэта ўключае ў сябе тое, як сакрэты перамяшчаюцца паміж заданнямі, як этапы зборкі атрымліваюць да іх доступ і як залежнасці ўзаемадзейнічаюць з асяроддзем выканання.
Напрыклад, Xygeni можа выявіць, калі pipeline занадта шырока раскрывае зменныя, калі крок рызыкуе вывесці канфідэнцыйныя значэнні ў журналы або калі залежнасць спрабуе нечакана атрымаць доступ да ўліковых дадзеных.
Адначасова, guardrails непасрэдна ўжываць палітыку ў pipelineКаманды могуць блакаваць небяспечныя зборкі, абмяжоўваць сакрэтны доступ да пэўных заданняў і прадухіляць рызыкоўныя канфігурацыі, перш чым яны патрапяць у прадукцыйную версію.
Паколькі гэта адбываецца ўнутры CI/CD працоўны працэс, распрацоўшчыкам не трэба мяняць свой падыход да працы. Бяспека становіцца часткай pipeline, а не асобны крок.
У выніку каманды атрымліваюць уяўленне аб тым, як выкарыстоўваюцца сакрэты, кантралююць, як яны раскрываюцца, і зніжаюць рызыку ўцечак, не запавольваючы дастаўку.
Заключныя думкі
Аднак гэта таксама ўводзіць рызыку, якую часта не заўважаюць.
Праблема не ў тым, ці выкарыстоўваць зменныя асяроддзя, а ў тым, як кантраляваць іх уздзеянне падчас выканання.
У сучасных асяроддзях DevOps прадухіленне ўцечак падчас працэсу зборкі значна важнейшае, чым іх выяўленне пасля.




