Come funzionano gli ID utente reali ed efficaci?


13

Quando un utente normale desidera apportare modifiche al file passwd, all'utente verrà automaticamente impostato l'accesso utente a setuid. L'utente diventa temporaneamente root e può modificare passwd.

Tuttavia puoi solo modificare la tua password nel modo giusto, e non tutti gli altri? Tuttavia, il tuo accesso utente effettivo è root. Quindi come mai non ti è permesso cambiare altre password oltre alle tue?

Quando esegui un programma con setuid, cosa significa in realtà quando l'utente effettivo è root, ma il vero ID utente è ancora il tuo nome?

Risposte:


13

Non puoi cambiare altre password perché il programma non te lo consente. Il programma dispone delle autorizzazioni di sistema per modificare qualsiasi password desiderata, poiché è in esecuzione come root, ma il programma è stato specificamente progettato per non consentire all'utente alcun modo per farlo utilizzare.

Non è che l'utente diventi temporaneamente root, ma è che il programma attendibile viene eseguito con i permessi di root. Ovviamente, solo i programmi che sono specificamente progettati per limitare gli utenti a fare solo ciò che dovrebbero essere autorizzati a fare possono essere tranquillamente impostati.


Quindi nel caso in cui apro una shell impostando l'UID su 0 (usando setreuid), in modo che l'UID efficace sia root ma l'UID reale sono ancora io. Dal momento che non penso che la shell abbia qualcosa di specifico in cui impedirmi, vuol dire che ho accesso all'intero sistema allora?
Starcorn,

Mi chiedo nel contesto della tecnica di attacco che distrugge lo stack. Laddove un hacker malintenzionato apre una shell con un livello di superutente.
Starcorn,

@starcron: Sì. In effetti, gli attacchi possono essere dimostrati mostrando come usare quell'attacco per creare una shell root setuid.
David Schwartz,

2

È consentito modificare solo la password, nonostante abbia un ID utente effettivo di root poiché al momento della modifica della password viene verificato l'ID utente reale non l'ID utente effettivo. È possibile modificare solo l'ID utente effettivo e non l'ID utente reale.
Solo l'utente root può modificare l'ID utente reale per eseguire il programma come utente non privilegiato. L'ID utente reale non può essere modificato poiché è impostato al momento dell'inizio della sessione.
Ecco perché solo la tua password può essere modificata in quanto l'ID utente reale non viene modificato (poiché è ancora il tuo non quello di root).


0

Un hack iniziale in Unix consisteva nel creare un collegamento simbolico a uno script shell setuid e chiamare il collegamento -i. Ciò comporta lo script chiamato come il sh -iquale invece di eseguire lo script chiamato -icome previsto avvia una shell interattiva, che quindi fornisce pieni poteri. L'ID utente efficace può essere utilizzato per modificare il passwdfile per qualsiasi utente o root stesso. Il modo migliore per evitare ciò è utilizzare SELinux per impedire che script di fiducia o programmi vengano modificati al di fuori dell'area che SELinux consente loro di eseguire.

Un'altra tecnica è quella di avere un bit immutabile su file importanti che un set non può essere modificato nemmeno dall'utente root (tranne che in modalità utente singolo)

Come root puoi invitare gli utenti ad accedere al tuo sistema senza password e apparire come qualsiasi utente, ma i normali processi privilegiati fanno di tutto per impedire che ciò accada.

Se si utilizzano sistemi di archiviazione di rete di qualche tipo, l'utente root verrà trattato come nessuno nello spazio file anziché root, il che consente ai computer non attendibili di unirsi a una rete attendibile come un campus universitario.


0

Puoi modificare la password solo perché il programma set-password, sebbene abbia il potere di fare qualsiasi cosa, è programmato per cambiare solo le password. Controllerà l'ID utente reale, per decidere quale password modificare.

Poiché non è possibile modificare il proprio ID utente reale, anche chiamando un programma set-uid, il programma può utilizzarlo per implementare la sicurezza. Il sistema operativo cede la sicurezza al programma root impostato uid.

Nota: il programma set uid root potrebbe anche cambiare l'ID utente reale (ma questo non è utile in questo caso d'uso).

Attenzione: impostare uid root è considerato dannoso (molto meno che ideale). In questi giorni dovremmo usare le capacità (vedi Quali sono i diversi modi per impostare i permessi dei file ecc. Su gnu / linux e http://man7.org/linux/man-pages/man7/capabilities.7.html )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.