Zakaj nosuid prepreči pomočniku VPN, da postane root
Šifriran domači imenik in nosuid priklop sta različni lastnosti. Pomočnik potrebuje zaupanja vredno pot namestitve in zagonski kontekst, ki spoštuje njegov bit privilegijev.
Šifriranje diska in nosuid priklop zvenita kot različici iste zamisli, a nista prav nič povezana. Eno ščiti podatke v mirovanju, drugo pa odloča, ali bo jedro spoštovalo bit privilegijev v trenutku, ko se program zažene. Pomočnik, ki ne doseže pričakovane identitete, se pritožuje čez drugo. Predpostavka, da je krivo prvo, pošilja ljudi ponovno nameščat odjemalce, ki nikoli niso bili pokvarjeni.
Dve Nepovezani Lastnosti
Šifriranje diska odgovarja, kdo lahko bere bloke, ko je stroj izklopljen. Možnost priklopa odgovarja, kaj bo jedro naredilo z biti načina datoteke, ko jo nekdo izvede. Nič pri prvem ne omejuje drugega, in popolnoma šifriran prenosnik lahko priklopi datotečni sistem z vsemi omejitvami na mestu.
Branje obeh kot ene lastnosti ustvari teorijo, da šifriran domači imenik preprečuje dostop roota. Ta teorija vztraja, ker se oba simptoma pojavita na istem stroju, ne pa ker bi imela skupen vzrok.
Kaj Prehod Res Zaduši
Referenca execve opisuje, kako izvedljiva datoteka s set-user-ID spremeni dejansko identiteto novega procesa v identiteto lastnika datoteke. Ista stran našteje pogoje, ki ta prehod zadušijo, in njihov ustreznik za skupinske identifikatorje: nastavitev no_new_privs, datotečni sistem, priklopljen z nosuid, in proces, ki se spremlja. Zmogljivosti datoteke se pod enakimi pogoji prezrejo. Ta štiri pravila pokrijejo skoraj vsako poročilo te vrste.
Ta seznam pojasni, zakaj način, ki ga izpiše ls, nikoli ni cela zgodba o pooblastitvi. Ne pove, kateri pogoj je povzročil določeno sporočilo o napaki, in aplikacija lahko s podobnimi besedami poroča o nepovezani operaciji s poverilnicami. Zapišite natančen program, zaganjalnik in zaporedje napak, preden sklepate.
Prepoznajte izvedljivo datoteko, ki jo je namestil podprti paket, njenega lastnika, njeno resnično pot in politiko datotečnega sistema, ki jo vsebuje. Kopija v mapi za prenose ni nameščeni pomočnik, karkoli pravi njen način.
Česa Ne Početi
Postavljanje bitov set-user-ID na nepreverjeno binarno datoteko in njeno premikanje, dokler omejitev ne izgine, ni popravilo. Zamenja politiko, ki je niste razumeli, s privilegijem, ki ga ne morete revidirati, in ista tehnika, uporabljena pri pomočniku, je znana pot za povišanje pravic. Odstranitev nosuid s priklopa je slabša, ker prizadene vsak program v tem datotečnem sistemu, ne le enega.
Podprta pot je dokumentirana namestitev pomočnika ali storitve pri odjemalcu, ki jo izvede skrbnik in ki postavi binarno datoteko tja, kjer jo politika pričakuje. Tako ostane en mehanizem privilegijev namesto dveh.
Potrdite Resnični Zagonski Kontekst
Po dovoljenem popravku zaženite pomočnika tako, kot ga zažene izdelek, in ne iz root lupine. Uspeh kot root ne dokaže ničesar o poti običajnega uporabnika, in razlika med tema dvema kontekstoma je natanko to, za kar je šlo pri napaki.
Nato potrdite omrežno operacijo, zaradi katere pomočnik obstaja. Pomočnik, ki se zažene, a ne more nastaviti vmesnika, je premaknil težavo eno stopnjo naprej, ne pa je rešil.
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
Zapišite možnosti priklopa in lastništvo pomočnika v isto opombo. Sicer bo naslednja oseba, ki bo to razhroščevala, teorijo šifriranja ponovila od začetka.