
Esempio di CVE-2022-46689 aka MacDirtyCow.
Esempio di CVE-2022-46689, noto anche come MacDirtyCow.
MacDirtyCow è una vulnerabilità di escalation dei privilegi in macOS, simile alla vulnerabilità Dirty COW in Linux. La vulnerabilità risiede nel meccanismo copy-on-write (COW) utilizzato dal kernel XNU di macOS. La vulnerabilità consente a un attaccante di modificare file di sola lettura di proprietà di root, il che potrebbe portare un attaccante a ottenere privilegi di root sul sistema interessato.
La vulnerabilità è causata da una race condition nel modo in cui il kernel XNU di macOS gestisce le operazioni copy-on-write (COW) sulle pagine di memoria. Quando una pagina di memoria è marcata come sola lettura, ma anche marcata come copy-on-write, il kernel crea una nuova copia della pagina quando viene eseguita un'operazione di scrittura sulla pagina. Tuttavia, c'è una piccola finestra di tempo tra il controllo della pagina di sola lettura e la creazione della nuova copia in cui un attaccante potrebbe modificare la pagina in memoria, bypassando efficacemente la restrizione di sola lettura.
Questo codice (poc.c) apre un file specificato come argomento della riga di comando e lo mappa in memoria usando mmap(). Quindi crea una copia del file e modifica la copia mappata in memoria del file riempiendola con il carattere 'A'. Infine, il file originale viene sovrascritto con la copia modificata del file.