Questo è estremamente insicuro. Sono felice che tu abbia chiesto altrove prima di eseguire questa configurazione da solo! Spero che quelle oltre 3000 persone su AskUbuntu siano state altrettanto caute. Quindi, perché questo è insicuro? Cosa può fare un aggressore se li metti nel gruppo? Quel gruppo sarà in grado di elevare i privilegi di root. Il motivo è semplice: VeraCrypt consente di montare un volume crittografato di permessi arbitrari sui file, utilizzando un filesystem arbitrario con flag di mount arbitrari. Considera il seguente scenario:
-
Un utente malvagio viene inserito nel tuo gruppo speciale, consentendo loro di eseguire VeraCrypt come root senza una password. Questo utente desidera sfruttare la configurazione per ottenere una shell di root, consentendo loro di eseguire comandi diversi da /usr/bin/veracrypt
come root. Il loro obiettivo finale è semplice: aggirare le restrizioni che hai in atto ed eseguire comandi arbitrari come root.
-
Un volume crittografato viene creato, posseduto e scritto dall'utente malvagio. È formattato e un bash
binario viene copiato nel filesystem. Poiché il volume è scrivibile direttamente, il bit setuid può essere impostato sul file binario. Normalmente questo è impossibile, ma il nostro aggressore può modificare il volume.
-
L'utente malvagio esegue VeraCrypt come root e monta il volume su /mnt
(un'operazione normalmente privilegiata). Eseguono /mnt/bash
e ottengono una shell di root, dalla quale sono in grado di eseguire qualsiasi comando come utente privilegiato. Hanno la loro shell di root e possono eseguire tutto ciò che vogliono.
Normalmente, un filesystem montabile dall'utente avrà diverse restrizioni sul posto. Tali filesystem sono in genere configurati montando con il flag user
. In base alla mount(8)
manpage:
user
Allow an ordinary user to mount the filesystem. The name of the mounting
user is written to mtab so that he can unmount the filesystem again. This
option implies the options noexec, nosuid, and nodev (unless overridden
by subsequent options, as in the option line user,exec,dev,suid).
Quando un filesystem viene montato da un utente non privilegiato in questo modo, nonostante possano creare un filesystem con un eseguibile setuid, il sistema non onorerà il bit setuid quando viene montato il filesystem. VeraCrypt non ha modo di sapere tutto ciò e installa felicemente il filesystem scrivibile come root, con pieno supporto per i binari setuid. Questa salvaguardia viene aggirata, e gli aggressori diventano root, nonostante tu autorizzi un solo comando "sicuro" tramite sudoers.
Sono sicuro che ci sono anche altri possibili attacchi. Il tuo filesystem ha dei mount mount che, da soli, possono dare una root di attacker? È possibile scrivere file chiave o nuovi volumi in posizioni arbitrarie? In tal caso, il loro contenuto può essere scelto dall'utente? Quando elimini un'importante salvaguardia, devi improvvisamente affidarti ai designer di VeraCrypt per scrivere il programma in modo tale da proteggerlo da un modello di minaccia che non hanno mai considerato. A differenza del programma mount
, progettato sin dall'inizio per essere sicuro anche quando eseguito come root da un utente non privilegiato, VeraCrypt non aveva tali obiettivi. Le stesse considerazioni dovrebbero applicarsi a qualsiasi cosa prima di eseguirlo come root.