Nel kernel di Linux, nell'implementazione del file system OverlayFS, è stata individuata una vulnerabilità (CVE-2023-0386) che può essere sfruttata per ottenere l'accesso root su sistemi in cui è installato il sottosistema FUSE e dove è consentito il montaggio di partizioni OverlayFS da parte di un utente non privilegiato (a partire dal kernel Linux 5.11 con l'inclusione di spazi dei nomi utente non privilegiati). Il problema è stato risolto nel ramo del kernel 6.2. È possibile rintracciare la pubblicazione degli aggiornamenti dei pacchetti nelle distribuzioni alle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
L'attacco viene effettuato tramite la copia di file con flag setgid/setuid da una partizione montata in modalità nosuid, in una partizione OverlayFS con uno strato collegato a una partizione che consente l'esecuzione di file suid. La vulnerabilità è simile alla problematica CVE-2021-3847, emersa nel 2021, ma presenta requisiti di sfruttamento più bassi: nella vecchia vulnerabilità erano necessarie manovre con gli xattrs, che sono limitati nell'uso degli spazi dei nomi degli identificatori utente (user namespace), mentre nel nuovo problema sono utilizzati i bit setgid/setuid, che non vengono gestiti specificamente nel user namespace.
L'algoritmo per effettuare l'attacco:
- Attraverso il sottosistema FUSE, viene montato un FS che contiene un file eseguibile appartenente all'utente root, con i flag setuid/setgid, accessibile a tutti gli utenti in scrittura. Durante il montaggio, FUSE imposta la modalità "nosuid".
- Vengono annullati (unshare) gli spazi dei nomi degli utenti e dei punti di montaggio (user/mount namespace).
- Viene montato OverlayFS specificando come strato inferiore l'FS creato in FUSE e uno strato superiore basato su una directory che consente la scrittura. La directory dello strato superiore deve trovarsi in un FS in cui, durante il montaggio, non viene utilizzato il flag "nosuid".
- Per il file suid nella partizione FUSE, l'utilità touch modifica il timestamp di modifica, portando alla sua copia nello strato superiore di OverlayFS.
- Durante la copia, il kernel non rimuove i flag setgid/setuid, il che porta al fatto che il file appare in una partizione che consente la gestione dei setgid/setuid.
- Per ottenere i diritti root è sufficiente eseguire il file con i flag setgid/setuid dalla directory collegata allo strato superiore di OverlayFS.
Inoltre, si segnala la divulgazione da parte dei ricercatori del Google Project Zero di tre vulnerabilità che sono state corrette nel ramo principale del kernel Linux 5.15, ma non sono state trasferite nei pacchetti del kernel di RHEL 8.x/9.x e CentOS Stream 9.
- CVE-2023-1252 — accesso a un'area di memoria già liberata nella struttura ovl_aio_req durante l'esecuzione simultanea di più operazioni in OverlayFS, distribuito sopra il filesystem Ext4. Potenzialmente, la vulnerabilità consente di elevare i propri privilegi nel sistema.
- CVE-2023-0590 — accesso a un'area di memoria già liberata nella funzione qdisc_graft(). Si presume che lo sfruttamento sia limitato a crash.
- CVE-2023-1249 — accesso a un'area di memoria già liberata nel codice di scrittura del coredump, che si verifica a causa di una chiamata mmap_lock mancante in file_files_note. Si presume che lo sfruttamento sia limitato a crash.
Fonte: opennet.ru
