Root-уразлівасць у sudo, якая закранае Linux Mint і Elementary OS

Ва ўтыліце Sudo, якая выкарыстоўваецца для арганізацыі выканання каманд ад імя іншых карыстальнікаў, выяўлена уразлівасць (CVE-2019-18634), якая дазваляе павысіць свае прывілеі ў сістэме да карыстальніка root. Праблема выяўляецца пачынальна з выпуску sudo 1.7.1 толькі пры выкарыстанні ў файле /etc/sudoers опцыі "pwfeedback", якая адключаная па змаўчанні, але актываваная ў некаторых дыстрыбутывах, такіх як Linux Mint і Elementary OS. Праблема ўхіленая ў выпуску судо 1.8.31, апублікаваным некалькі гадзін таму. У дыстрыбутывах уразлівасць пакуль застаецца нявыпраўленай.

Опцыя "pwfeedback" уключае адлюстраванне сімвала "*" пасля кожнага ўведзенага сімвала пры ўводзе пароля. З-за памылкі у рэалізацыі функцыі getln(), вызначанай у файле tgetpass.c, перададзеная праз стандартны ўваходны струмень (stdin) занадта вялікі радок з паролем пры вызначаных умовах можа не змясціцца ў вылучаны буфер і перапісаць іншыя дадзеныя ў стэку. Перапаўненне ўзнікае падчас выканання кода sudo з правамі root.

Іста праблемы ў тым, што пры выкарыстанні падчас уводу спецзнака ^U (ачыстка радка) і пры збоі аперацыі запісу, код, які адказвае за ачыстку выведзеных знакаў «*», скідае дадзеныя аб даступным памеры буфера, але не вяртае ў зыходнае значэнне паказальнік на бягучую пазіцыю ў буферы. Іншым фактарам, якія спрыяюць эксплуатацыі, з'яўляецца адсутнасць аўтаматычнага адключэння рэжыму «pwfeedback» пры паступленні дадзеных не з тэрмінала, а праз уваходны струмень (дадзеная недапрацоўка дазваляе стварыць умовы для ўзнікнення памылкі запісу, напрыклад, на сістэмах з аднанакіраванымі) неназванымі каналамі памылка ўзнікае пры спробе запісу за канец канала для чытання).

Бо атакавалы можа цалкам кантраляваць перазапіс дадзеных у стэку, не ўяўляе цяжкасці стварэнне эксплоіта, які дазваляе падвысіць свае прывілеі да карыстача root. Праблема можа быць эксплуатаваная любым карыстальнікам, незалежна ад правоў на выкарыстанне sudo і наяўнасці спецыфічных для карыстальніка настроек у sudoers. Для блакавання праблемы варта пераканацца ў адсутнасці ў /etc/sudoers налады "pwfeedback" і пры неабходнасці адключыць яе ("Defaults !pwfeedback"). Для праверкі наяўнасці праблемы можна выканаць код:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Password: Segmentation fault

Крыніца: opennet.ru

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