Vulnerabilità root locali nel toolkit di gestione dei pacchetti Snap.

Qualys ha identificato due vulnerabilità (CVE-2021-44731, CVE-2021-44730) nell'utility snap-confine, fornita con il flag SUID root e chiamata dal processo snapd per formare l'ambiente di esecuzione per le applicazioni consegnate in pacchetti autonomi nel formato snap. Le vulnerabilità consentono a un utente locale non privilegiato di eseguire codice con diritti di root nel sistema. I problemi sono stati risolti nell'aggiornamento di oggi dei pacchetti snapd per Ubuntu 21.10, 20.04 e 18.04.

La prima vulnerabilità (CVE-2021-44730) consente di eseguire un attacco tramite la manipolazione dei collegamenti fisici, ma richiede la disattivazione della protezione di sistema sui collegamenti fisici (impostando sysctl fs.protected_hardlinks a 0). Il problema è causato da una verifica errata della posizione degli eseguibili delle utility snap-update-ns e snap-discard-ns, eseguite con privilegi di root. Il percorso verso questi file veniva calcolato nella funzione sc_open_snapd_tool() sulla base del proprio percorso da /proc/self/exe, consentendo di creare un collegamento fisico a snap-confine nella propria directory e di posizionare in essa le proprie versioni delle utility snap-update-ns e snap-discard-ns. Dopo l'avvio tramite il collegamento fisico, snap-confine con privilegi di root eseguirà i file snap-update-ns e snap-discard-ns dalla directory corrente forniti dall'attaccante.

La seconda vulnerabilità è causata da una condizione di race e può essere sfruttata nella configurazione predefinita di Ubuntu Desktop. Per un exploit di successo su Ubuntu Server è necessario scegliere durante l'installazione uno dei pacchetti nella sezione "Featured Server Snaps". La condizione di race si manifesta nella funzione setup_private_mount(), chiamata durante la preparazione dello spazio dei nomi per i punti di montaggio del pacchetto snap. Questa funzione crea una cartella temporanea "/tmp/snap.$SNAP_NAME/tmp" oppure utilizza quella esistente per montare in bind le cartelle del pacchetto in formato snap.

Poiché il nome della cartella temporanea è prevedibile, un attaccante può sostituirne il contenuto con un link simbolico dopo la verifica del proprietario, ma prima della chiamata di sistema mount. Ad esempio, si può creare nella cartella /tmp/snap.lxd un link simbolico «/tmp/snap.lxd/tmp» che punta a una cartella arbitraria, e la chiamata mount() seguirà il link simbolico e monterà la cartella nello spazio dei nomi snap. In modo simile, si può montare il proprio contenuto in /var/lib e, sostituendo /var/lib/snapd/mount/snap.snap-store.user-fstab, organizzare il montaggio della propria cartella /etc nello spazio dei nomi del pacchetto snap per caricare la propria libreria con i diritti di root tramite la sostituzione di /etc/ld.so.preload.

Si segnala che la creazione di un exploit si è rivelata un compito non banale, poiché l'utilità snap-confine è scritta in Go e utilizza pratiche di programmazione sicura. Essa è dotata di protezione basata su profili AppArmor, filtra le chiamate di sistema mediante il meccanismo seccomp e applica uno spazio dei nomi per il montaggio per l'isolamento. Tuttavia, i ricercatori sono riusciti a preparare un exploit funzionante per ottenere i diritti di root nel sistema. Il codice dell'exploit sarà pubblicato tra qualche settimana, dopo che gli utenti avranno installato gli aggiornamenti forniti.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster