Unix Privilege Escalation: "sudo deve essere posseduto da uid 0 e avere il bit setuid impostato"

5

Sembra che le protezioni siano codificate in sudo che impediscono all'esecuzione di binari come utente con privilegi ridotti. L'esecuzione in Ubuntu come utente normale restituisce il seguente errore:

"sudo must be owned by uid 0 and have the setuid bit set"

Forse questa è una domanda incredibilmente stupida: ma cosa impedisce a un utente malintenzionato di compilare il proprio binario sudo personalizzato che gli consente di eseguire con qualsiasi UID?

    
posta user188691 12.10.2018 - 00:18
fonte

5 risposte

5

what's to stop an attacker from compiling their own custom sudo binary that allows it to execute with any uid?

C'è un malinteso di base in corso qui. Il programma si esegue, si ferma solo quando si accorge che non è in esecuzione come utente root. Ricompilare il programma per rimuovere il controllo consentirebbe solo di eseguire l'attività come utente che ha eseguito sudo, non root. In altre parole, il controllo per l'esecuzione come root in sudo è solo un controllo degli errori e una diagnostica, non una funzionalità di sicurezza.

L'equivoco è che i programmi non hanno alcuna abilità speciale da eseguire come un altro utente, il privilegio extra è una proprietà dei permessi del file sul file. Qualsiasi programma con setuid bit set verrà eseguito come proprietario del file. Se dovessi compilare il tuo programma, il file sarà di tua proprietà. Mentre è consentito impostare il bit setuid sul proprio file, non è possibile modificare la proprietà del file senza privilegi extra. Quindi impostare il bit setuid consentirebbe ad altri di eseguire il tuo programma come se stessi.

    
risposta data 15.10.2018 - 23:52
fonte
3

Per essere eseguito come un altro utente, un file deve avere il setuid set di bit di autorizzazione e deve essere di proprietà di quell'utente di destinazione (in questo caso, root ).

what's to stop an attacker from compiling their own custom sudo binary that allows it to execute with any uid?

I bit di autorizzazione sono attributi di un file (che sono memorizzati nel filesystem, nell'inode del file), non sono contenuti nel file stesso. E il tuo kernel semplicemente impedirà a un utente non privilegiato di cambiare il proprietario del file del suo% personalizzatosudo binario a root.

    
risposta data 12.10.2018 - 00:39
fonte
3

Penso che l'OP abbia frainteso l'intenzione di questo controllo. Non è pensato per proteggere sudo da malintenzionati, ma piuttosto una semplice precondizione per il suo funzionamento: se non è impostato da root, non può eseguire un comando come un altro utente ed è quindi inutile.

    
risposta data 15.10.2018 - 22:28
fonte
2

Perché (eccetto per root) un utente può solo creare un binario che verrà impostato come proprio uid. Solo root può cambiare il suo uid.

    
risposta data 12.10.2018 - 00:38
fonte
0

Qualsiasi utente locale può compilare il proprio binario sudo senza questo controllo. Ma quando la loro copia di sudo cerca di fare il suo lavoro di concessione dei privilegi, riceverà un errore dal kernel, perché non ha privilegi speciali. Se sudo non è in esecuzione come root, non può fornire alcun privilegio.

Il punto del controllo è che se sudo non è stato installato correttamente, si ottiene presto un messaggio di errore comprensibile invece di ottenere un messaggio di errore incomprensibile dopo che sudo ha eseguito un po 'più di elaborazione. È un aiuto diagnostico, non un controllo di sicurezza.

    
risposta data 16.10.2018 - 23:03
fonte

Leggi altre domande sui tag