Шыфраванне дыска і мантаванне з nosuid гучаць як варыяцыі адной ідэі, але яны зусім не звязаныя. Адно абараняе даныя ў стане спакою, а другое вырашае, ці будзе ядро паважаць біт прывілеяў у момант запуску праграмы. Памочнік, які не можа дасягнуць чаканай ідэнтычнасці, скардзіцца менавіта на другое. Здагадка, што вінаватае першае, прымушае людзей пераўсталёўваць кліентаў, якія ніколі не былі зламаныя.

Дзве незвязаныя ўласцівасці

Шыфраванне дыска адказвае на пытанне, хто можа чытаць блокі, калі машына выключана. Опцыя мантавання адказвае на пытанне, што ядро зробіць з бітамі рэжыму файла, калі нехта яго выканае. Нішто ў першым не абмяжоўвае другое, і поўнасцю зашыфраваны ноўтбук можа змантаваць файлавую сістэму з усімі абмежаваннямі на месцы.

Чытанне іх як адной уласцівасці і спараджае тэорыю, што зашыфраваны хатні каталог перашкаджае доступу root. Гэтая тэорыя трымаецца таму, што абодва сімптомы з'яўляюцца на адной машыне, а не таму, што яны маюць агульную прычыну.

Што насамрэч блакуе пераход

Даведка па execve апісвае, як выканальны файл з set-user-ID змяняе эфектыўную ідэнтычнасць новага працэсу на ўладальніка файла. Тая ж старонка пералічвае ўмовы, якія блакуюць гэты пераход, і эквівалент для ідэнтыфікатараў груп: налада no_new_privs, файлавая сістэма, змантаваная з nosuid, і працэс, які трасуецца. Магчымасці файла ігнаруюцца пры тых жа ўмовах. Гэтыя чатыры правілы пакрываюць амаль кожную падобную справаздачу.

Гэты спіс тлумачыць, чаму рэжым, які друкуе ls, ніколі не з'яўляецца ўсім апавяданнем пра аўтарызацыю. Ён не кажа, якая ўмова выклікала пэўнае паведамленне пра памылку, і праграма можа паведамляць пра несвязаную аперацыю з уліковымі данымі тымі ж словамі. Запішыце дакладную праграму, запускальнік і паслядоўнасць памылак, перш чым рабіць выснову.

Вызначце выканальны файл, які ўсталяваў падтрыманы пакет, яго ўладальніка, рэальны шлях і палітыку файлавай сістэмы, дзе ён знаходзіцца. Копія ў каталогу загрузак не з'яўляецца ўсталяваным памочнікам, што б ні казаў яе рэжым.

Чаго не варта рабіць

Ставіць біты set-user-ID на неправераны бінарнік і пераносіць яго з месца на месца, пакуль абмежаванне не знікне, — гэта не рамонт. Гэта замяняе палітыку, якую вы не разумелі, прывілеем, які вы не можаце аўдытаваць, і той жа прыём, ужыты да памочніка, — вядомы шлях эскалацыі. Выдаленне nosuid з мантавання горш, бо яно закранае кожную праграму ў гэтай файлавай сістэме, а не адну.

Падтрыманы шлях — гэта дакументаванае ўсталяванне памочніка або службы кліента, выкананае адміністратарам, якое змяшчае бінарнік туды, дзе чакае палітыка. Так застаецца адзін механізм прывілеяў замест двух.

Пацвердзіце рэальны кантэкст запуску

Пасля дазволенага выпраўлення запусціце памочнік так, як яго запускае прадукт, а не з root-абалонкі. Поспех ад імя root нічога не даказвае пра шлях звычайнага карыстальніка, і розніца паміж гэтымі двума кантэкстамі — менавіта тое, пра што была памылка.

Затым пацвердзіце сеткавую аперацыю, дзеля якой існуе памочнік. Памочнік, які запускаецца, але не можа наладзіць інтэрфейс, перасунуў праблему на крок далей, а не вырашыў яе.

findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper

Запішыце опцыі мантавання і ўласніка памочніка ў адной нататцы. Інакш наступны чалавек, які будзе гэта адладжваць, пачне тэорыю шыфравання спачатку.

Падобныя артыкулы