
これは、iTunesバージョン12.13.2.3におけるローカル権限昇格(Local Privilege Escalation)エクスプロイトであるCVE-2024–44193に関するライトアップです。
これは2024年9月12日にAppleによって修正されました。 Appleのセキュリティアドバイザリへのリンク: Appleのセキュリティアドバイザリ
iTunesバージョン12.13.2.3は、Apple Device Discovery Serviceをインストールします:
C:\Program Files\Common Files\Apple\Mobile Device Support\AppleMobileDeviceService.exe これはローカル権限昇格エクスプロイトに対して脆弱です。
またしても出来の悪い、おそらく長すぎるライトアップなど気にしないという方々への敬意と理解を込めて、短いバージョンを以下に示します:
この脆弱性は、C:\ProgramData\Apple\* パスにおけるユーザー権限の管理が不十分であるために発生します。
これにより、ローカルグループ「Users」のメンバーがそのパス内に任意のファイルを書き込むことができます。AppleMobileDeviceService.exe サービスが再起動されると(これは非特権ユーザーでもトリガーできます)、任意のフォルダ/ファイル削除プリミティブを仕掛けて、SYSTEM権限でシステム上で任意のコード実行を獲得することが可能になります。
警告! 平凡なツール解説が続きます。
すでにこれらのツールに精通している場合は、このセクションをスキップしてください。
Oplockツールは、Windowsで「opportunistic lock」(オポチュニスティック・ロック)を使用するためのツールです。このツールを使用すると、特定の要件が満たされるまでファイルをロックしてプロセスを「停止」させることができます。ただし、エクスプロイトペイロードを実行するための十分な時間を稼ぐなど、悪意のある目的でプロセスを「停止」するためにも使用できます。
FolderContentsDeleteToFolderDeleteツールは、ファイルを含むフォルダを自動的に作成することで機能します。その後、ファイルにoplockが設定され、プロセスが停止されます。プロセスが停止すると、ファイルはフォルダから移動されます。その後、フォルダは削除され、ターゲット先へのNTFSジャンクションとして再作成されます。 oplockがキャンセルされ、プロセスが続行すると、ファイル/フォルダの削除は新しく作成されたNTFSジャンクションをターゲット先まで辿り、実行を続行する前にそのファイルを削除します。
このツールはおそらくZero Day Initiativeによって説明されるのが最良なので、彼らからの説明へのリンクをここに示します:
任意のファイル削除を悪用して権限を昇格させる方法とその他の優れたトリック
AppleMobileDeviceService.exe の紹介iTunesがインストールされると、SYSTEM権限で実行されるサービス AppleMobileDeviceService.exe もインストールされます。
Windows Sysinternalsのプロセスモニター(Procmon)を使用してそのサービスを調査したところ、すぐにいくつかの憂慮すべき動作に気付きました。
そのサービスは、C:\ProgramData\Apple\Lockdown\* パス内のすべてのファイルを再帰的に調べ、そこに属さないすべてのフォルダとファイルを削除します。
ローカルテストでは、ProcessHacker2を使用してサービスを強制的に再起動し、プログラムの動作を検査しました。
観察された動作は、SYSTEMとして実行されるサービスがディレクトリとその中のすべてのサブディレクトリをクエリし、その後 Delete On Close オプションを有効にして CreateFile 操作を実行するというものでした。つまり、SYSTEMサービスが C:\ProgramData\Apple\Lockdown\* パスをクエリし、そのディレクトリ内のサブフォルダとファイルを再帰的にクエリして削除するということです。
C:\ProgramData\Apple\* における問題のあるユーザー権限Windows Sysinternals https://learn.microsoft.com/en-us/sysinternals/ の accesschk64.exe を使用して、特定のフォルダへのアクセス権を確認できます。
ローカルグループ「Users」のメンバーは C:\ProgramData\Apple\Lockdown\ フォルダ内に書き込み権限を持っており、これにより低権限ユーザーがそのフォルダ内に任意のファイルを書き込むことができます。
Lockdownパス内に任意のファイルを書き込むことができ、サービスが再起動されるとSYSTEMプロセスがそれらを削除するため、任意のファイル/フォルダ削除プリミティブを作成することが可能でした。
これを説明するために、Lockdownフォルダ内に2つのサブフォルダを作成します。
サブフォルダa、およびサブフォルダa内のサブフォルダb。
これは次のようになります: C:\ProgramData\Apple\Lockdown\a\b
サブフォルダ a 内には aa.txt というテキストファイルがあり、サブフォルダ b 内には bb.txt というテキストファイルがあります。
C:\ProgramData\Apple\Lockdown\a\aa.txt
C:\ProgramData\Apple\Lockdown\a\b\bb.txt
上のスクリーンショットでわかるように、aa.txt に対して「CreateFile」操作が「Delete On Close」オプション付きで実行され、それが削除されています。
SYSTEMプロセスが aa.txt および bb.txt に対して Delete On Close オプション付きの CreateFile 操作を実行すると、SYSTEMプロセス AppleMobileDeviceService.exe がそれらのファイルを削除します。
これで、Lockdownフォルダ内に任意のファイルを作成して削除することが可能になり、次の巧妙なトリックにつながります。
Windowsでは、NTFSジャンクションを使用してフォルダを別の場所に向けることができます。ある意味では、これはLinuxのシンボリックリンクに似ています。
これを説明するために、C:\ProgramData\Apple\Lockdown フォルダ内にデスクトップ上のフォルダを指すNTFSジャンクション(シンボリックリンク)を作成することができます。
これは、PowerShellで New-Item -Type Junction -Path whatever -Target "C:\Users\user\Desktop\AAyes" を使用するか、ZDIが提供するツールセットを使用して自分で実現できます:
次のコマンドを実行して、Lockdownフォルダ内のNTFSジャンクションをデスクトップ上の「Target」にポイントさせます。
.\FolderContentsDeleteToFolderDelete.exe /target "C:\Users\user\Desktop\AAyes" /initial "C:\ProgramData\Apple\Lockdown"
サービスが再起動されると、新しく作成されたNTFSジャンクションはデスクトップ上にある AAyes を指します。
サービスはSYSTEMとして Delete On Close オプション付きで CreateFile 操作を実行するため、ファイルは削除されます。
この操作はSYSTEM権限で実行されるため、任意のフォルダまたはファイル削除プリミティブが得られ、ホスト上でSYSTEMとしてコード実行を獲得できることを意味します。
注意:
ファイル名/フォルダ名の制限により、FolderContentsDeleteToFolderDeleteプロジェクトに特定のソースコード編集を加える必要がありました。削除が行われるためには、ファイル名/フォルダ名が非常に短くなければなりませんでした。この理由は不明であり、短い名前で問題が確実に解決されたため、調査は行われていません。
const wchar_t folder2path[] = L"C:\\d";
const wchar_t exploitFileName[] = L"e.txt";
// It was required to shorten the two consstants: “folder2path” and “exploitFileName”
// They where changed to: L"C:\\d" and L"e.txt" because it seemed that file and folder name length had a meaningful impact on exploit functionality.
[...]
// We also needed to edit the “folder1path” value to L”c” in order to shorten it.
folder1path += L"c";
サービスはジャンクション(シンボリックリンク)を再帰的に辿るため、NTFSジャンクションを辿る脆弱なAppleサービスを使用して、システム上のファイルをSYSTEMとして任意に削除できる可能性があるというのが仮説でした。この脆弱なサービスは、非特権ユーザーがWindows GUIを使用して(「アプリ -> インストール済みアプリ -> Apple Mobile Device Support -> 変更 -> 修復」のトリックを使用して)サービスを再起動できるという便利な機能を備えているため、任意のタイミングでエクスプロイトをトリガーできます。サービスが再起動されるとNTFSジャンクションを辿り、確認されたプログラムの動作に従って、ユーザーが指し示すことを選択したファイルまたはフォルダを削除します。
言い換えれば、サービスが削除するファイルまたはフォルダを決定するのはユーザーです。 SYSTEMとして実行されるため、システム上の ほぼ すべてのファイルを削除できます(TrustedInstaller権限を必要とするファイルは除く)。
つまり、次のことを行う一連のイベントを慎重に作成できます:
この概念実証は5つのステップで構成されています。
.\SetOpLock.exe C:\ProgramData\Apple\Lockdown\
サービス再起動をトリガーします アプリ -> インストール済みアプリ -> Apple Mobile Device Support -> 変更 -> 修復
MSIロールバックのトリックを準備します
.\FolderOrFileDeleteToSystem.exe
.\FolderContentsDeleteToFolderDelete.exe /target 'C:\Config.Msi' /initial "C:\ProgramData\Apple\Lockdown"
ステップ5でOplockが解放されると、FolderContentsDeleteToFolderDeleteプロセスを監視して、NTFSジャンクションが辿られ、C:\ にあるConfig.MSIが正しく削除されたことを確認します。次に、FolderOrFileDeletionToSystem.exeプロセスを監視して、レースコンディションに勝ち、変更されたロールバックスクリプトを含む「悪意のある」Config.MSIフォルダが書き込まれることを確認します。すべてがうまくいけば、CTRL+ALT+DELETEを押して、右下隅のユーザー補助(アクセシビリティ)メニューを開き、スクリーンキーボードを開きます。悪意のあるロールバックスクリプトを使用してC:\Program Files\Common Files\microsoft shared\ink\HID.DLL にある HID.DLL を上書きしたため、SYSTEMとしてCMDシェルがポップアップ表示され、エクスプロイトが完了します。

FolderContentsDeleteToFolderDelete.exeの実行と監視
FolderOrFileDeleteToSystem.exeの実行と監視
SYSTEMシェルをポップアップ表示