È sicuro montare Veracrypt senza la password sudo in questo modo

8

questo modo ha qualche problemi di sicurezza diversi da quelli menzionati in quel post?

Per riferimento:

Create a new group called say veracryptusers and give it the necessary permissions to use VeraCrypt without root password. Any user that belongs to that group will be able to use VeraCrypt. Note: this slightly increases attack surface for user rights elevation, so be sure to add only trusted users to this group.

$ groupadd veracryptusers

Now let's give this group sudo permissions limited to VeraCrypt:

$ sudo visudo -f /etc/sudoers.d/veracrypt
GNU nano 2.5.3        File: /etc/sudoers.d/veracrypt.tmp                      

Users in the veracryptusers group are allowed to run veracrypt as root.

%veracryptusers ALL=(root) NOPASSWD:/usr/bin/veracrypt

Also please make sure that veracrypt and /usr/bin have the proper permissions and are NOT writable by groups nor others:

$ ls -al /usr/bin/vera*
-rwxr-xr-x 1 root root 6341016 paź 17  2016 /usr/bin/veracrypt
$ ls -ald /usr/bin
drwxr-xr-x 2 root root 69632 lip 25 10:09 /usr/bin

Otherwise a malicious user may replace the executable and gain total root right at his wish.

Now reboot (or relogin) to have groups membership revaluated and voilà - you can mount and unmount your favourite volumes.

    
posta forest 28.01.2018 - 10:17
fonte

1 risposta

11

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:

  1. 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.

  2. 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.

  3. 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.

    
risposta data 28.01.2018 - 22:20
fonte

Leggi altre domande sui tag