Docker-ում խոցելիություն, որը թույլ է տալիս փախչել կոնտեյներից

In Toolkit-ում՝ մեկուսացված Linux Docker կոնտեյներների կառավարման համար բացահայտված խոցելիություն (CVE-2018-15664- ը), որը, որոշակի հանգամանքների դեպքում, թույլ է տալիս մուտք գործել հյուրընկալող միջավայր կոնտեյներից, եթե դուք հնարավորություն ունեք գործարկել ձեր պատկերները համակարգում կամ մուտք գործելու գործող կոնտեյներ: Խնդիրը հայտնվում է Docker-ի բոլոր տարբերակներում և մնում է չշտկված (առաջարկված, բայց դեռ չընդունված, patch, որն իրականացնում է կոնտեյների կասեցումը FS-ով գործողություններ կատարելիս):

Խոցելիությունը թույլ է տալիս ֆայլերը արտահանել կոնտեյներից դեպի հյուրընկալող համակարգի ֆայլային համակարգի կամայական մաս՝ «docker cp» հրամանը կատարելիս: Ֆայլի արդյունահանումը կատարվում է արմատային իրավունքներով, ինչը հնարավորություն է տալիս կարդալ կամ գրել ցանկացած ֆայլ հոսթ միջավայրում, ինչը բավական է հյուրընկալող համակարգի վերահսկողությունը ձեռք բերելու համար (օրինակ, կարող եք վերագրել /etc/shadow):

Հարձակումը կարող է իրականացվել միայն այն ժամանակ, երբ ադմինիստրատորը կատարում է «docker cp» հրամանը՝ ֆայլերը կոնտեյներ կամ դրանցից պատճենելու համար: Այսպիսով, հարձակվողը պետք է ինչ-որ կերպ համոզի Docker-ի ադմինիստրատորին այս գործողությունը կատարելու անհրաժեշտության մասին և կանխատեսի պատճենման ժամանակ օգտագործվող ուղին: Մյուս կողմից, հարձակումը կարող է իրականացվել, օրինակ, երբ ամպային ծառայությունները տրամադրում են գործիքներ՝ կոնֆիգուրացիայի ֆայլերը կոնտեյների մեջ պատճենելու համար, որը կառուցված է «docker cp» հրամանի միջոցով:

Խնդիրն առաջացել է ֆունկցիայի կիրառման թերությունից ՀետևեքSymlinkInScope-ին, որը հաշվարկում է բացարձակ ուղին հիմնական ֆայլային համակարգում՝ հարաբերական ուղու հիման վրա՝ հաշվի առնելով կոնտեյների տեղադրումը։ «docker cp» հրամանը կատարելիս կարճաժամկետ մրցավազքի վիճակը, որի ուղին արդեն ստուգված է, բայց վիրահատությունը դեռ չի կատարվել։ Քանի որ պատճենումն իրականացվում է հյուրընկալող համակարգի հիմնական ֆայլային համակարգի համատեքստում, որոշակի ժամանակահատվածում կարող եք փոխել հղումը մեկ այլ ճանապարհով և սկսել տվյալների պատճենումը ֆայլային համակարգի կամայական վայրում, որը դուրս է գտնվում: կոնտեյներ.

Քանի որ մրցավազքի պայմանների առաջացման ժամանակային պատուհանը խիստ սահմանափակ է պատրաստված վիճակում շահագործման նախատիպը Կոնտեյներից պատճենահանման գործողություններ կատարելիս հնարավոր է եղել հաջող գրոհի հասնել դեպքերի 1%-ից պակաս դեպքում, երբ կրկնօրինակման գործողության մեջ օգտագործվող ճանապարհին ցիկլային կերպով փոխարինել է խորհրդանշական հղումը (հաջող հարձակումն իրականացվել է մոտավորապես 10 վայրկյան փորձից հետո: ֆայլը անընդհատ կրկնօրինակելու համար «docker cp» հրամանով):

Կատարելով պատճենման գործողություն կոնտեյների մեջ, դուք կարող եք հասնել կրկնվող ֆայլի վերագրանցման հարձակման հյուրընկալող համակարգի վրա ընդամենը մի քանի կրկնություններում: Հարձակման հավանականությունը պայմանավորված է նրանով, որ կոնտեյների մեջ պատճենելիս օգտագործվում է «chrootarchive» հայեցակարգը, ըստ որի archive.go պրոցեսը արխիվը հանում է ոչ թե կոնտեյների արմատի chroot, այլ chroot-ի մեջ։ թիրախային ուղու մայր գրացուցակը, որը վերահսկվում է հարձակվողի կողմից և չի դադարեցնում կոնտեյների կատարումը (chroot-ն օգտագործվում է որպես մրցավազքի պայմանները շահագործելու նշան):

Source: opennet.ru

Добавить комментарий