
CVE-2022-46689 (別名 MacDirtyCow) の例。
CVE-2022-46689、別名MacDirtyCowの例。
MacDirtyCowは、LinuxのDirty COW脆弱性と同様の、macOSにおける権限昇格脆弱性です。この脆弱性は、macOSのXNUカーネルで使用されるコピーオンライト(COW)メカニズムに存在します。この脆弱性により、攻撃者は読み取り専用のroot所有ファイルを変更でき、影響を受けるシステム上でroot権限を獲得する可能性があります。
この脆弱性は、macOSのXNUカーネルがメモリページ上のコピーオンライト(COW)操作を処理する方法における競合状態によって引き起こされます。メモリページが読み取り専用とマークされ、同時にコピーオンライトとしてもマークされている場合、カーネルはページへの書き込み操作が実行されると新しいページのコピーを作成します。しかし、読み取り専用ページがチェックされてから新しいコピーが作成されるまでの間にわずかな時間枠があり、攻撃者はその間にメモリ内のページを変更でき、実質的に読み取り専用の制限を回避できます。
このコード(poc.c)は、コマンドライン引数で指定されたファイルを開き、mmap()を使ってメモリにマッピングします。その後、ファイルのコピーを作成し、メモリマッピングされたファイルのコピーを文字'A'で埋めることで変更します。最後に、元のファイルは変更されたファイルのコピーで上書きされます。