Problemi con la conservazione di $ HOME su sudo

10

Su Ubuntu, il comportamento predefinito con sudo è di preservare la variabile d'ambiente $ HOME dell'utente, il che significa che sudo sarà in grado di leggere i file di punti nella home directory dell'utente. Mi piace soprattutto perché, quando ho bisogno di modificare un file di testo, sudo vim leggerà il mio vimrc.

Su alcuni altri sistemi, il file sudoers ha Defaults always_set_home , che imposta la home su / root, quindi non usa il mio vimrc. Potrei disabilitare questo, ma dal momento che tale opzione è, presumibilmente, impostata per ragioni di sicurezza, mi chiedevo quanto fossero seri e se dovessi o meno occuparmi semplicemente del fastidio della home being / root.

L'unica vulnerabilità alla sicurezza che posso pensare a questa introduzione è se eseguo un eseguibile o uno script non attendibile che modifica uno dei miei script di avvio. Quindi, la prossima volta che sudo, quello script potrebbe ottenere il controllo. Tuttavia, se supponiamo che il mio account sia stato compromesso a mia insaputa, lo script dannoso potrebbe aver cambiato il mio percorso in modo da puntare comunque a un comando sudo fasullo, quindi questa non sembra una vulnerabilità aggiuntiva.

Quali vulnerabilità della sicurezza preservano $ HOME in sudo?

Modifica: mi rendo conto ora che sudoedit risolve il mio caso d'uso principale, ma mi chiedo comunque il problema di sicurezza.

    
posta Sam King 09.08.2012 - 17:19
fonte

2 risposte

8

Per un utente che può eseguire comandi arbitrari con sudo , la modifica delle variabili di ambiente non è un problema di sicurezza diretto. Se lo desideri, puoi eseguire tmp=$(mktemp); export >$tmp; sudo bash -c ". $tmp; exec bash" - in altre parole, salvare l'ambiente e ripristinarlo all'interno della shell di root.

Come si nota, un trojan in un file di configurazione non è un problema, dal momento che il trojan potrebbe mettere un wrapper attorno a sudo in ogni caso (e prendere la password mentre è a esso).

L'argomento è apparso più volte nelle mailing list di Ubuntu ( 1 2 ). Ubuntu non ripristina HOME . Gli argomenti di David Mandelberg coprono la maggior parte dei casi per reimpostare HOME .

Il ripristino di HOME protegge dallo sfruttamento degli errori che potresti commettere. Ad esempio, uno dei file di configurazione potrebbe contenere una vulnerabilità di file temporanea che potrebbe essere sfruttata per accedere all'account root. Questo esempio è, come prima, non una preoccupazione, poiché l'exploit potrebbe influire in modo analogo sul tuo account e quindi agganciare alla tua chiamata di sudo .

Il reset di HOME protegge anche dagli errori che potresti commettere, ed è qui che il caso per farlo ha un punto - ma non molto convincente.

  • C'è una vista estrema che dice che dovresti mantenere la configurazione di default come root. In questo modo, qualsiasi cosa fatta come root è facilmente distinguibile da cosa fare sotto il tuo account personalizzato, quindi non dimenticherai che stai agendo come root. Anche fare cose come root è doloroso, quindi è necessario usare l'account root il meno possibile. Non lo compro: fare le cose "nel modo più duro" invece del modo in cui ti senti a tuo agio, rende più probabile che commetta errori, non di meno. Normalmente è abbastanza facile sapere se stai agendo come root: se stai modificando un file sotto /etc , sei root¹. Se stai eseguendo una shell e il prompt termina con # anziché $ o % (seguendo la consueta convenzione), sei root - e puoi usare cose come i colori per rendere più visibile la distinzione. Se stai eseguendo un programma di gestione dei pacchetti, sei root.
  • Puoi erroneamente lasciare un file confidenziale in una posizione leggibile pubblicamente nella tua home directory, ritenendo che sia in /root . Oppure potresti lasciarlo in /tmp ... Questo argomento mi sembra davvero inverosimile. Certo, è un errore che potresti commettere, ma non è più probabile che, ad esempio, aggiunga erroneamente una regola del firewall che lascia tutto aperto o che rende /bin/* scrivibile in tutto il mondo.
  • Uno dei tuoi file di configurazione potrebbe far apparire le informazioni riservate nella tua home directory. Questo è plausibile - potrebbe essere un file di cronologia o un file di salvataggio automatico - ma questi file dovrebbero essere presumibilmente in una posizione privata comunque, altrimenti le persone potrebbero curiosare su di te.
  • Le applicazioni che salvano automaticamente la loro configurazione potrebbero scrivere nella tua home directory. Questo non è tanto un problema di sicurezza come una questione di convenienza per te, ed è più che compensato dalla comodità di avere la tua configurazione abituale quando agisci da root.
  • Potresti erroneamente modificare i file sotto ~ , pensando che questa sia la home directory di root quando è effettivamente la tua home directory. Sì, ma se $HOME è la tua home directory, avrai anche la tua configurazione abituale, quindi è meno probabile che tu stia funzionando come utente root e più probabile che pensi di essere in esecuzione una modalità privilegiata. Questo argomento è sollevato dal proprio petardo.

Scott James Remnant ha detto così:

"sudo -s" is for lazy people who don't want to duplicate config files, "sudo -i" is for forgetful people.

Ma sudo -i (esegui una shell di root) sembra una cattiva idea per le persone dimentiche. E duplicare i file di configurazione come root è possibile solo su un computer con un solo utente, nel qual caso il primo come root non è un grosso problema.

Conclusione: no, non ci sono gravi problemi di sicurezza, e il caso di reimpostare HOME è piuttosto debole. Lo scopo di always_set_home è proteggerti contro te stesso, ma protegge così poco che non ne vale la pena.

¹ Tranne che non dovresti eseguire un editor come root: usa sudoedit o Emacs (Tramp) per il metodo sudo per eseguire l'editor come utente normale.

    
risposta data 09.08.2012 - 19:24
fonte
2

Un'altra preoccupazione è che quando si esegue solo sudo command che sta utilizzando potrebbe essere l'ambiente che è stato impostato dall'utente che lo ha eseguito, incluso il percorso.

Questo è personalizzabile nel file di configurazione o tramite flag, ma per impostazione predefinita molti sistemi preservano l'ambiente degli utenti iniziali.

Questo comportamento può essere modificato dal seguente

  • Modifica dell'opzione env_reset nel file sudoers.
  • invocando sudo -i che simula il login iniziale dell'utente il comando verrà eseguito come
risposta data 09.08.2012 - 18:14
fonte

Leggi altre domande sui tag