AOH :: HP Unsorted I :: BX6026.HTM

Elevation of Privilege Vulnerability in iTunes for Windows

Elevation of Privilege Vulnerability in iTunes for Windows
Elevation of Privilege Vulnerability in iTunes for Windows

Elevation of Privilege Vulnerability in iTunes for Windows=0D
March 31th, 2010=0D
Name: Elevation of Privilege Vulnerability in iTunes for Windows=0D
Release Date: March 31th, 2010=0D
Discoverer: Jason Geffner=0D
Vendor: Apple Inc.=0D
Systems Affected: iTunes 9.0.0, iTunes 9.0.1, iTunes 9.0.2, iTunes 9.0.3=0D
                  (version previous to iTunes 9.0.0 not tested)=0D
Risk: High=0D
Apple Security Advisory ID: APPLE-SA-2010-03-30-2 [1]=0D
Apple Knowledge Base Article: HT4105 [2]=0D
CVE-ID: CVE-2010-0532=0D
Status: Published=0D
This paper discusses how an unprivileged local attacker can elevate their=0D
privileges during an initial installation or update of iTunes for Windows. This=0D
vulnerability was responsibly disclosed to Apple Inc. and this advisory was not=0D
released until a fixed build of iTunes was released.=0D
"iTunes is a proprietary digital media player application, used for playing and=0D
organizing digital music and video files. The program is also an interface to=0D
manage the contents on Apple's popular iPod and other digital media players=0D
such as the iPhone and iPad. Additionally, iTunes can connect to the iTunes=0D
Store via the Internet to purchase and download music, music videos, television=0D
shows, applications, iPod games, audiobooks, podcasts, feature length films and=0D
movie rentals (not available in all countries), and ringtones (only used for=0D
iPhone). It is also used to download applications for the iPhone and iPod touch=0D
running iPhone OS 2.0 or later." [3]=0D
09/22/09 iTunes 9.0.1 released=0D
10/22/09 Elevation of privilege vulnerability discovered in iTunes 9.0.1=0D
10/22/09 Detailed vulnerability report responsibly disclosed to Apple Inc.=0D
10/22/09 Automated response received from Apple Inc.=0D
10/28/09 Automated response received from Apple Inc.=0D
10/29/09 iTunes 9.0.2 released=0D
12/23/09 Status request sent to Apple Inc.=0D
01/06/10 First personal response formally received from Apple Inc.=0D
02/01/10 iTunes 9.0.3 released=0D
03/30/10 iTunes 9.1.0 released, fixing elevation of privilege vulnerability=0D
03/31/10 Advisory released=0D
Upon first-time installation, iTunes installs GEAR Software ASPI driver=0D
components and Microsoft Driver Install Frameworks API components in =0D
"%ALLUSERSPROFILE%\Application Data\{755AC846-7372-4AC8-8550-C52491DAA8BD}\x86"=0D
for 32-bit installations and in "%ALLUSERSPROFILE%\Application Data\=0D
{0DD0EEEE-2A7C-411C-9243-1AE62F445FC3}\x64" for 64-bit installations. The=0D
installer installs in this directory DifXInstall32.exe or DifXInstall64.exe for=0D
32-bit or 64-bit installations, respectively, along with DIFxAPI.dll and other=0D
files. After the installer writes these files to the directory, it will execute=0D
DifXInstall32.exe or DifXInstall64.exe in the context of Local System, a=0D
privileged user.=0D
On a standard Windows installation, unprivileged users have write-access to=0D
"%ALLUSERSPROFILE%\Application Data". As such, prior to a first-time iTunes=0D
installation, an unprivileged attacker can create these directories and place a=0D
malicious executable at "%ALLUSERSPROFILE%\Application Data\=0D
{755AC846-7372-4AC8-8550-C52491DAA8BD}\x86\DifXInstall32.exe" or=0D
"%ALLUSERSPROFILE%\Application Data\{0DD0EEEE-2A7C-411C-9243-1AE62F445FC3}\x64\=0D
DifXInstall64.exe", which could for example add the unprivileged attacker to=0D
the Administrators group in Windows when DifXInstall32.exe or DifXInstall64.exe=0D
is executed by a privileged user. During installation, the installer won't=0D
overwrite an existing DifXInstall32.exe or DifXInstall64.exe; it will execute=0D
the existing program in the context of Local System.=0D
On the other hand, if iTunes is already installed on the system, an=0D
unprivileged attacker won't have access to overwrite DifXInstall32.exe,=0D
DifXInstall64.exe, or DIFxAPI.dll. However, unprivileged attackers still have=0D
write-access to create new files in "%ALLUSERSPROFILE%\Application Data\=0D
{755AC846-7372-4AC8-8550-C52491DAA8BD}\x86" or "%ALLUSERSPROFILE%\=0D
Application Data\{0DD0EEEE-2A7C-411C-9243-1AE62F445FC3}\x64". Therefore, an=0D
unprivileged attacker could place into the directory a malicious DLL that=0D
DifXInstall32.exe, DifXInstall64.exe, or DIFxAPI.dll depends on. For example,=0D
DIFxAPI.dll imports setupapi.dll; an unprivileged attacker could place a=0D
malicious setupapi.dll file into that directory such that when=0D
DifXInstall32.exe or DifXInstall64.exe is executed, it loads DIFxAPI.dll, which=0D
in turn loads the malicious setupapi.dll, which could for example add the=0D
unprivileged attacker to the Administrators group in Windows when=0D
DifXInstall32.exe or DifXInstall64.exe is executed by a privileged user. When=0D
an existing iTunes installation is updated to a newer version, the update=0D
installer will execute DifXInstall32.exe or DifXInstall64.exe in the context of=0D
Local System.=0D
Ideally, the attacker's DLL should have all the functionality of the DLL that=0D
the application expected to load, including the same exported functions. An=0D
attacker can patch the original DLL so that the attacker's code runs before the=0D
DLL's original DllMain code is executed, after which the original DllMain code=0D
is called. This allows the DLL to continue to operate as normal.=0D
The program at [4] can be=0D 
used to redirect a given DLL's entrypoint (which originally pointed to DllMain)=0D
to point to code that has been patched into the DLL. This patched-in code will=0D
add a given user to the Administrators group in Windows (assuming that it's=0D
being run in the context of a privileged user), after which it will transfer=0D
control back to the DLL's original DllMain. The patcher also updates the Import=0D
Table for the DLL since the patched-in code relies on the function=0D
NetLocalGroupAddMembers(...) from netapi32.dll. The only other side effect of=0D
the patcher is that it clears the Bound Imports for the DLL; the only adverse=0D
side effect of this is that this may cause the DLL to take a few extra=0D
milliseconds to load.=0D
The patcher is compatible with both 32-bit and 64-bit DLLs and displays usage=0D
instructions when executed without command line arguments.=0D
As an example, an attacker could use this patcher as follows to patch=0D
setupapi.dll so that it will add unprivileged user MyComputer\Jason to the=0D
Administrators group when the DLL is loaded by a privileged user:=0D
DllPatcher.exe %WINDIR%\system32\setupapi.dll "%ALLUSERSPROFILE%\Application =0D
Data\{755AC846-7372-4AC8-8550-C52491DAA8BD}\x86\setupapi.dll" MyComputer\Jason=0D
Proper ACLs should be used to prevent such elevation of privilege attacks and=0D
great care should be taken when choosing which directories to use for=0D
executable files.=0D
NGSSoftware would like to thank Alex Ionescu for his assistance in=0D
communications with the Apple Product Security Team.=0D
Fix Information=0D
This issue has now been resolved. iTunes 9.1.0 can be downloaded from:=0D 
NGSSoftware Insight Security Research=0D 
+44(0)208 401 0070

The entire AOH site is optimized to look best in Firefox® 3 on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2014 AOH
We do not send spam. If you have received spam bearing an email address, please forward it with full headers to