Уразлівасць у Docker, якая дазваляе абрацца з кантэйнера

У інструментары для кіравання ізаляванымі Linux-кантэйнерамі Docker выяўлена уразлівасць (CVE-2018-15664), якая пры пэўным збегу абставін дазваляе атрымаць доступ да хост-акружэнні з кантэйнера пры наяўнасці магчымасці запуску сваіх вобразаў у сістэме або пры доступе да выкананага кантэйнера. Праблема выяўляецца ва ўсіх версіях Docker і застаецца нявыпраўленай (прапанаваны, але пакуль не прыняты, патч, Які рэалізуе прыпыненне працы кантэйнера на час выканання аперацый з ФС).

Уразлівасць дазваляе выняць файлы з кантэйнера ў адвольную частку ФС хост-сістэмы пры выкананні каманды "docker cp". Выманне файлаў выконваецца з правамі root, што дае магчымасць прачытаць ці запісаць любыя файлы ў хост-акружэнні, чаго дастаткова для атрымання кантролю за хост-сістэмай (напрыклад, можна перапісаць /etc/shadow).

Атака можа быць здзейснена толькі ў момант выканання адміністратарам каманды "docker cp" для капіявання файлаў у кантэйнер або з яго. Такім чынам атакаваламу неабходна нейкім чынам пераканаць адміністратара Docker у неабходнасці выканання гэтай аперацыі і прадбачыць які выкарыстоўваецца пры капіяванні шлях. З іншага боку напад можа быць здзейснена, напрыклад, пры падаванні хмарнымі сэрвісамі сродкаў для капіявання файлаў канфігурацыі ў кантэйнер, пабудаваных з выкарыстаннем каманды "docker cp".

Праблема выклікана недапрацоўкай ва ўжыванні функцыі FollowSymlinkInScope, Якая вылічае абсалютны шлях у асноўны ФС на падставе адноснага шляху, які ўлічвае размяшчэнне кантэйнера. У працэсе выканання каманды "docker cp" узнікае кароткачасовае. стан гонкі, пры якім шлях ужо правераны, але аперацыя яшчэ не выканана. Бо капіяванне вырабляецца ў кантэксце асноўнай ФС хост-сістэмы ў паказаны прамежак часу можна паспець падмяніць спасылку на іншы шлях і ініцыяваць капіяванне дадзеных у адвольнае месца файлавай сістэмы па-за кантэйнерам.

Бо часавае акно праявы стану гонкі моцна абмежавана ў падрыхтаваным. прататыпе эксплоіта пры выкананні аперацый капіявання з кантэйнера атрымалася дамагчыся правядзенні паспяховага нападу ў меней 1% выпадкаў пры цыклічнай падмене сімвалічнай спасылкі ў шляхі, выкарыстоўваным у аперацыі капіявання (паспяховая атака была здзейснена пасля прыкладна 10 секунд спроб бесперапынна ў цыкле скапіяваць файл камандай «docker cp»).

Пры выкананні аперацыі капіявання ў кантэйнер можна дамагчыся паўтаранага нападу па перазапісе файла ў хост-сістэме ўсяго ў некалькі ітэрацый. Магчымасць нападу злучана з тым, што пры капіяванні ў кантэйнер ужываецца канцэпцыя «chrootarchive», у адпаведнасці з якой працэс archive.go здабывае архіў не ў chroot кораня кантэйнера, а ў chroot бацькоўскага каталога мэтавага шляху, падкантрольнага атакаваламу і не спыняе пры гэтым выкананне кантэйнера (chroot выкарыстоўваецца як прыкмета).

Крыніца: opennet.ru

Дадаць каментар