Шифроването на диска и монтирането с 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

Запишете опциите за монтиране и собствеността на помощника в една и съща бележка. Иначе следващият човек, който ще отстранява това, ще започне отначало теорията за шифроването.

Подобни статии