
Prova de conceito de exploit para CVE-2022-46689 (MacDirtyCow), uma vulnerabilidade de escalonamento de privilégios no kernel XNU do macOS que explora uma condição de corrida em copy-on-write para modificar arquivos raiz somente leitura.
Exemplo do CVE-2022-46689, também conhecido como MacDirtyCow.
MacDirtyCow é uma vulnerabilidade de escalada de privilégios no macOS, semelhante à vulnerabilidade Dirty COW no Linux. A vulnerabilidade reside no mecanismo de cópia em gravação (COW) utilizado pelo kernel XNU do macOS. A vulnerabilidade permite que um invasor modifique arquivos raiz somente leitura, o que pode levar à obtenção de privilégios de root no sistema afetado.
A vulnerabilidade é causada por uma condição de corrida na forma como o kernel XNU do macOS lida com operações de cópia em gravação (COW) em páginas de memória. Quando uma página de memória é marcada como somente leitura, mas também marcada como cópia em gravação, o kernel cria uma nova cópia da página quando uma operação de gravação é realizada nela. No entanto, existe uma pequena janela de tempo entre a verificação da página somente leitura e a criação da nova cópia, na qual um invasor pode modificar a página na memória, contornando efetivamente a restrição de somente leitura.
Este código (poc.c) abre um ficheiro especificado como argumento de linha de comando e mapeia-o na memória usando mmap(). Em seguida, cria uma cópia do ficheiro e modifica a cópia mapeada na memória preenchendo-a com o caractere 'A'. Por fim, o ficheiro original é substituído pela cópia modificada do ficheiro.