Prečo nosuid bráni pomocníkovi VPN stať sa rootom
Šifrovaný domovský adresár a pripojenie s nosuid sú rôzne vlastnosti. Pomocník potrebuje dôveryhodnú cestu inštalácie a kontext spustenia, ktorý rešpektuje jeho bit privilégií.
Šifrovanie disku a pripojenie s nosuid znejú ako varianty tej istej myšlienky a vôbec nesúvisia. Jedno chráni dáta v pokoji, druhé rozhoduje, či jadro bude rešpektovať bit privilégií v okamihu, keď sa program spúšťa. Pomocník, ktorý nedosiahne očakávanú identitu, sa sťažuje na to druhé. Predpoklad, že na vine je prvé, vedie ľudí k preinštalovaniu klientov, ktorí nikdy neboli pokazené.
Dve nesúvisiace vlastnosti
Šifrovanie disku odpovedá na otázku, kto môže čítať bloky, keď je stroj vypnutý. Voľba pripojenia odpovedá na to, čo jadro urobí s bitmi režimu súboru, keď ho niekto spustí. Nič v prvom neobmedzuje druhé a plne zašifrovaný notebook môže pripojiť súborový systém so všetkými obmedzeniami na mieste.
Čítanie oboch ako jednej vlastnosti vytvára teóriu, že šifrovaný domovský adresár znemožňuje prístup používateľa root. Tá teória prežíva preto, že sa oba príznaky objavujú na tom istom stroji, nie preto, že by mali spoločnú príčinu.
Čo prechod skutočne potláča
Referenčná stránka execve opisuje, ako spustiteľný súbor so set-user-ID mení efektívnu identitu nového procesu na identitu vlastníka súboru. Tá istá stránka uvádza podmienky, ktoré tento prechod potláčajú, a ich ekvivalent pre identifikátory skupín: nastavenie no_new_privs, súborový systém pripojený s nosuid a proces, ktorý sa sleduje. Schopnosti súboru sa za rovnakých podmienok ignorujú. Tieto štyri pravidlá pokrývajú takmer každé hlásenie tohto druhu.
Tento zoznam vysvetľuje, prečo režim vypísaný nástrojom ls nikdy nie je celý príbeh autorizácie. Nehovorí, ktorá podmienka spôsobila konkrétnu chybovú správu, a aplikácia môže rovnakými slovami hlásiť nesúvisiacu operáciu s prihlasovacími údajmi. Poznamenajte si presný program, spúšťač a sled chýb, kým urobíte záver.
Identifikujte spustiteľný súbor, ktorý nainštaloval podporovaný balík, jeho vlastníka, jeho skutočnú cestu a politiku súborového systému, ktorý ho obsahuje. Kópia v priečinku stiahnutých súborov nie je nainštalovaný pomocník, nech jej režim hovorí čokoľvek.
Čo s tým nerobiť
Nastavovať bity set-user-ID na neoverený binárny súbor a presúvať ho, kým obmedzenie nezmizne, nie je oprava. Nahrádza politiku, ktorú ste nechápali, privilégiom, ktoré nedokážete auditovať, a tá istá technika použitá na pomocníka je známa cesta eskalácie. Odstránenie nosuid z pripojenia je horšie, pretože ovplyvní každý program v tomto súborovom systéme, nie iba jeden.
Podporovaná cesta je dokumentovaná inštalácia pomocníka alebo služby zo strany klienta, ktorú vykonáva správca a ktorá umiestni binárny súbor tam, kde ho politika očakáva. Tak zostáva jeden mechanizmus privilégií namiesto dvoch.
Overte skutočný kontext spustenia
Po povolenej oprave spustite pomocníka tak, ako ho spúšťa produkt, a nie z root shellu. Úspech ako root nič nedokazuje o ceste bežného používateľa a rozdiel medzi týmito dvoma kontextmi je presne to, o čo pri zlyhaní išlo.
Potom overte sieťovú operáciu, pre ktorú pomocník existuje. Pomocník, ktorý sa spustí, ale nedokáže nakonfigurovať rozhranie, posunul problém o jednu fázu ďalej, nevyriešil ho.
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
Zapíšte voľby pripojenia a vlastníctvo pomocníka do tej istej poznámky. Inak ďalší človek, ktorý to bude ladiť, začne teóriu šifrovania odznova.