Miksi nosuid estää VPN-avustajaa tulemasta rootiksi
Salattu kotihakemisto ja nosuid-liitos ovat eri ominaisuuksia. Avustaja tarvitsee luotetun asennuspolun ja käynnistyskontekstin, joka kunnioittaa sen etuoikeusbittiä.
Levyn salaus ja nosuid-liitos kuulostavat saman idean muunnoksilta, eikä niillä ole mitään tekemistä toistensa kanssa. Toinen suojaa levossa olevaa dataa ja toinen päättää, kunnioittaako ydin etuoikeusbittiä sinä hetkenä, kun ohjelma käynnistyy. Avustaja, joka ei saavuta odottamaansa identiteettiä, valittaa jälkimmäisestä. Oletus, että ensimmäinen on syyllinen, saa ihmiset asentamaan uudelleen asiakkaita, jotka eivät koskaan olleet rikki.
Kaksi Toisiinsa Liittymätöntä Ominaisuutta
Levyn salaus vastaa siihen, kuka voi lukea lohkot, kun kone on sammutettuna. Liitosasetus vastaa siihen, mitä ydin tekee tiedoston tilabiteille, kun joku suorittaa sen. Mikään ensimmäisessä ei rajoita toista, ja täysin salattu kannettava voi liittää tiedostojärjestelmän kaikkien rajoitusten ollessa paikallaan.
Niiden lukeminen yhtenä ominaisuutena synnyttää teorian, että salattu kotihakemisto estää root-käytön. Teoria säilyy, koska kaksi oiretta ilmaantuu samalle koneelle, ei siksi että niillä olisi yhteinen syy.
Mikä Siirtymän Todella Tukahduttaa
execve-viite kuvaa, miten set-user-ID-merkinnällä varustettu suoritettava tiedosto vaihtaa uuden prosessin tehokkaan identiteetin tiedoston omistajaksi. Samalla sivulla luetellaan ehdot, jotka tukahduttavat tämän siirtymän, ja niiden vastine ryhmätunnisteille: no_new_privs-asetus, nosuid-merkinnällä liitetty tiedostojärjestelmä ja prosessi, jota jäljitetään. Tiedoston kyvykkyydet jätetään huomiotta samoissa ehdoissa. Nämä neljä sääntöä kattavat lähes jokaisen tämänlaisen raportin.
Tämä luettelo selittää, miksi ls:n tulostama tila ei ole koskaan koko valtuutustarina. Se ei kerro, mikä ehto aiheutti tietyn virheilmoituksen, ja sovellus voi raportoida asiasta riippumatonta tunnistetietojen toimitusta samoilla sanoilla. Kirjaa tarkka ohjelma, käynnistäjä ja virhesarja ennen johtopäätöstä.
Tunnista suoritettava tiedosto, jonka tuettu paketti asensi, sen omistaja, sen todellinen polku ja sen sisältävän tiedostojärjestelmän käytäntö. Latauskansiossa oleva kopio ei ole asennettu avustaja, mitä sen tila tahansa sanoo.
Mitä Ei Kannata Tehdä
Set-user-ID-bittien asettaminen vahvistamattomaan binaariin ja sen siirtely, kunnes rajoitus katoaa, ei ole korjaus. Se korvaa käytännön, jota et ymmärtänyt, etuoikeudella, jota et voi auditoida, ja sama tekniikka avustajaan sovellettuna on tunnettu eskalaatiopolku. nosuidin poistaminen liitoksesta on pahempaa, koska se vaikuttaa jokaiseen ohjelmaan tuossa tiedostojärjestelmässä, ei vain yhteen.
Tuettu tapa on asiakkaan dokumentoitu avustajan tai palvelun asennus, jonka järjestelmänvalvoja tekee ja joka sijoittaa binaarin sinne, missä käytäntö odottaa sitä. Näin säilyy yksi etuoikeusmekanismi kahden sijaan.
Vahvista Todellinen Käynnistyskonteksti
Aja avustaja valtuutetun korjauksen jälkeen niin kuin tuote sen ajaa, älä root-kuoresta. Menestys rootina ei todista mitään siitä polusta, jonka tavallinen käyttäjä kulkee, ja näiden kahden kontekstin ero on juuri se, mistä virheessä oli kyse.
Vahvista sitten verkkotoiminto, jota varten avustaja on olemassa. Avustaja, joka käynnistyy mutta ei pysty määrittämään rajapintaa, on siirtänyt ongelman yhden vaiheen eteenpäin, ei ratkaissut sitä.
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
Kirjaa liitosasetukset ja avustajan omistus samaan muistiinpanoon. Muuten seuraava tätä debuggaava henkilö toistaa salauksen teorian alusta.