Nell'utility , utilizzata per gestire l'esecuzione di comandi per conto di altri utenti, (), che consente di eseguire comandi con diritti root, in presenza di configurazioni sudoers che, nella sezione di verifica dell'identificatore utente, dopo la parola chiave consentente "ALL", prevedono un divieto esplicito di esecuzione con diritti root ("… (ALL, !root) …"). Nelle configurazioni predefinite delle distribuzioni, la vulnerabilità non si manifesta.
In presenza di regole sudoers ammissibili, ma estremamente rare in pratica, che consentono l'esecuzione di un certo comando con un identificatore UID di qualsiasi utente tranne root, un attaccante con i diritti per eseguire tale comando può aggirare il vincolo imposto ed eseguire il comando con diritti root. Per aggirare il vincolo è sufficiente tentare di eseguire il comando specificato nelle impostazioni con UID "-1" o "4294967295", il che porterà alla sua esecuzione con UID 0.
Ad esempio, se nelle impostazioni c'è una regola che consente a qualsiasi utente di eseguire il programma /usr/bin/id con qualsiasi UID:
myhost ALL = (ALL, !root) /usr/bin/id
o una variante che consente l'esecuzione solo all'utente specifico bob:
myhost bob = (ALL, !root) /usr/bin/id
L'utente può eseguire "sudo -u ‘#-1’ id" e l'utility /usr/bin/id verrà avviata con diritti root, nonostante il divieto esplicito nelle impostazioni. Il problema è causato da un'inattenzione riguardo ai valori speciali "-1" o "4294967295", che non portano a un cambio di UID, ma poiché sudo stesso viene già eseguito come root, anche il comando di destinazione viene avviato con diritti root senza cambiare UID.
Nelle distribuzioni di SUSE e openSUSE, senza la specifica nella regola "NOPASSWD", la vulnerabilità , poiché in sudoers per impostazione predefinita è attivata la modalità "Defaults targetpw" in cui viene effettuato un controllo dell'UID rispetto al database delle password, con l'invio della richiesta di inserimento della password dell'utente target. Per tali sistemi, l'attacco può essere effettuato solo in presenza di regole del tipo:
myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id
Il problema è stato risolto nella versione . La correzione è disponibile anche sotto forma di . Nelle distribuzioni la vulnerabilità è già stata risolta in , , , , e . Al momento della scrittura dell'articolo, il problema rimane non risolto in e . La vulnerabilità è stata identificata dai ricercatori di sicurezza della Apple.
Fonte: opennet.ru
