
Analisi tecnica ed exploit per CVE-2021-3493, una vulnerabilità di OverlayFS che consente l'escalation dei privilegi locali su sistemi Ubuntu tramite mount non privilegiati.
TL;DR
Scopri come una vulnerabilità in OverlayFS consente agli utenti locali su Ubuntu di ottenere privilegi di root.
Riepilogo della vulnerabilità
Un problema specifico di Ubuntu nel filesystem overlayfs del kernel Linux, dove non convalidava correttamente l'applicazione delle capacità del filesystem rispetto agli user namespaces. Un attaccante locale potrebbe utilizzarlo per ottenere privilegi elevati, a causa di una patch applicata in Ubuntu per consentire mount overlayfs non privilegiati.
CVE-2021-3493
Crediti
Un ricercatore di sicurezza indipendente ha segnalato questa vulnerabilità al programma SSD Secure Disclosure.
Versioni interessate
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
Risposta del fornitore
“Abbiamo pubblicato avvisi di sicurezza per questo problema oggi in
https://ubuntu.com/security/notices/USN-4915-1 https://ubuntu.com/security/notices/USN-4916-1 https://ubuntu.com/security/notices/USN-4917-1
così come rendendo pubblico il problema nel nostro tracker CVE:
https://ubuntu.com/security/CVE-2021-3493
Quello che segue è il contenuto del messaggio inviato alla lista oss-security: https://www.openwall.com/lists/oss-security/2021/04/16/1
Analisi della vulnerabilità
Linux supporta le capacità dei file memorizzate negli attributi estesi dei file che funzionano in modo simile al setuid-bit, ma possono essere più granulari. Una procedura semplificata per impostare le capacità dei file in pseudo-codice è la seguente: setxattr(...): if cap_convert_nscap(...) is not OK: then fail vfs_setxattr(...)
La chiamata importante è cap_convert_nscap, che controlla i permessi rispetto ai namespace.
Se impostiamo le capacità dei file dal nostro namespace e sul nostro mount, non c'è problema e abbiamo il permesso di farlo. Il problema è che quando OverlayFS inoltra questa operazione al filesystem sottostante, chiama solo vfs_setxattr e salta i controlli in cap_convert_nscap.
Ciò consente di impostare capacità arbitrarie su file in namespace/mount esterni, dove verranno anche applicate durante l'esecuzione.
In Linux 5.11 la chiamata a cap_convert_nscap è stata spostata in vfs_setxattr, quindi non è più vulnerabile.