
2.2 CREATEPROCESSWAND HOST WHITELIST BYPASS
The Game Updater component performs a whitelist check for security reasons, to
prevent games running from malicious (non withelisted) hosts. The following im-
age gives an idea of how the command line is handled by the game:
Figure 3: The whitelist check in action
The vulnerability is exploitable only on Windows XP an 2003, due to the way the
CreateProcessW API works for these versions. The CreateProcess function is defined
as follows:
BOOL WI NAPI Cr eat ePr oce ss (
_In_opt_ LPCTSTR lpApplicationName ,
_Inout_opt_ LP TSTR lpCommandL ine ,
_In_opt_ LPS ECUR ITY_ ATT R IBU TES lp Pro cessAttr ibutes ,
_In_opt_ LPS ECUR ITY_ ATT R IBU TES lp ThreadAt tributes ,
_In_ BOOL bInheri tHand les ,
_In_ DW ORD dw Creatio nFlag s ,
_In_opt_ LPVOID lpE nv ironment ,
_In_opt_ LPCT STR lpC urrentDi rectory ,
_In_ LPSTART UPI NFO l pStartupI nf o ,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
Consider function parameter LPTSTR lpCommandLine. The CreateProcessW (not
CreateProcessA) function handles this parameter differently depending on the ver-
sion of Windows in use on the system. Specifically, prior to Windows Vista, if
lpCommandLine is longer than 32kb, CreateProcessW truncates lpCommandLine to
32kb, and executes the command. For Windows Vista and later versions, it termi-
nates. The following image shows a tricky way to bypass the whiltelist check:
Figure 4: Bypass the whitelist check by padding out the real host
ReVuln - http://revuln.com page 3 of 8