Shifty
Member
Some information recently surfaced on Imgur that suggests the Epic Games Launcher may be gathering data from PCs it's installed on.
The evidence consists of an image with various screenshots of SysInternals Process Monitor and Fiddler (a network monitor) showing some potentially questionable activity from the Epic Games Launcher executable.
So far internet punditry seems to be addressing it at (somewhat non-technical) face value:
Kadayi sent it my way and suggested I break it down from a programmer's perspective. Since we've had a rush on Daily Mail-style thread titles lately I figured it'd be good to buck the trend and pick it apart, see if there's actually anything to this idea.
The image has a pretty heavy bias, so for the sake of mitigating outrage and hot takes I'll include it at the bottom. Any non-bulleted stuff is speculation, so I welcome fellow technically-minded gaffers to correct me if there are known harmless behaviours going on here.
Allegations thus far
System certificate file reading
Root certificate registry reading
Internet Explorer registry key reading
Third-party program scraping
DLL file creation
Since the only documented functionality in shcore.dll is per-monitor DPI awareness, this looks very suspect. EGL has no reason to modify the way other applications handle their DPI scaling, and if it were intended as a solution to in-game overlays it would be hooking a DirectX DLL instead.
If anything, this looks like an attempt to add a common entry-point to existing applications in order to execute some unknown code.
Accessing Windows' built-in Network Location Awareness service
User tracking via web domains and scripts
It's worth noting that pre-Epic Store, the Epic Launcher had an option to disable analytics. I'm not sure if this is the case now.
The evidence consists of an image with various screenshots of SysInternals Process Monitor and Fiddler (a network monitor) showing some potentially questionable activity from the Epic Games Launcher executable.
So far internet punditry seems to be addressing it at (somewhat non-technical) face value:
Kadayi sent it my way and suggested I break it down from a programmer's perspective. Since we've had a rush on Daily Mail-style thread titles lately I figured it'd be good to buck the trend and pick it apart, see if there's actually anything to this idea.
The image has a pretty heavy bias, so for the sake of mitigating outrage and hot takes I'll include it at the bottom. Any non-bulleted stuff is speculation, so I welcome fellow technically-minded gaffers to correct me if there are known harmless behaviours going on here.
Allegations thus far
- System certificate file reading
- Root certificate registry reading
- Internet Explorer registry key reading
- Scraping of third-party processes and their install directories
- DLL creation in third-party program directories
- Accessing Windows' built-in Location Awareness service
- User tracking via web domains and scripts
System certificate file reading
- EGL is accessing certificates, certificate revocation lists and certificate trust lists
- (Stored in %AppData%\Roaming\Microsoft\SystemCertificates\My\)
- These are the user's personal certificates, created either manually by developers or automatically on behalf of the user by software, and used for various security-related things such as accessing remote services and signing code, among other things
- Based on the image, it...
- Executes a CreateFile request to make sure the directory exists (common error-checking practice)
- Executes two QueryDirectory calls
- One to get any files in the directory
- One to get any subdirectories in the directory
- Iterates over the found files and directories and executes...
- QueryStandardInformationFile to get details such as its size and filesystem state
- ReadFile to read data from the file into memory
- CloseFile to close the file and release its read handle
Root certificate registry reading
- EGL then goes on to access the equivalent system certificates
- (Stored in the registry at HKLM\SOFTWARE\Microsoft\SystemCertificates\Root)
- These are built-in certificates that ship with windows and are provided by Microsoft, or in some cases by companies that deploy their own Windows installations internally
- Based on the image, it executes...
- RegQueryKey on HKLM (HKEY_LOCAL_MACHINE) to make sure it exists
- RegOpenKey on HKLM\Software\Microsoft\SystemCertificates\Root to determine its contents
- A series of RegQueryKey and RegEnumKey on HKLM\Software\Microsoft\SystemCertificates\Root\Certificates to determine its contents
- A series of RegOpenKey, RegQueryValue, RegCloseKey on any found certificates to open them, read their contents into memory, and close them
Internet Explorer registry key reading
- EGL accesses and reads from the registry key at HKCR\CLSID\{06eee834-461c-42c2-8dcf-1502b527b1f9}\Instance\PropertySetStorage
- This contains various settings pertaining to "URL Shortcut PropSetStorage Mapping" for ieframe.dll, a.k.a. Internet Explorer Frame - the embedded IE used when certain programs need to render web content inline without using a third-party solution like Chromium
Third-party program scraping
- EGL queries the Windows API for running processes, then locates their install directories
- It then executes QueryNameInfo on their .exe, presumably to read a sanitized file path into memory
DLL file creation
- Based on the image, EGL creates a file called shcore.dll in one of the directories found while scraping the filesystem for third-party programs. The program in question is Fiddler - a network monitor unaffiliated with EGL that does not ship with a copy of shcore.dll
- shcore.dll (a.k.a. "Shell Core") is a built-in windows DLL that appears to contain parts of Windows' UI functionality, such as per-monitor DPI scaling.
Since the only documented functionality in shcore.dll is per-monitor DPI awareness, this looks very suspect. EGL has no reason to modify the way other applications handle their DPI scaling, and if it were intended as a solution to in-game overlays it would be hooking a DirectX DLL instead.
If anything, this looks like an attempt to add a common entry-point to existing applications in order to execute some unknown code.
Accessing Windows' built-in Network Location Awareness service
- EGL uses RegCreateKey to access HKCU\OFTWARE\Microsoft\Windows NT\CurrentVersion\Network\Location Awareness
- This service assigns a security profile based on whether the device is connected to a public or private network
- Other interactions with this registry key aren't shown in the image
User tracking via web domains and scripts
- The author of the image used Fiddler to monitor EGL's network traffic, and found that it accesses two tracking URLs - tracking.epicgames.com, and tracking.unrealengine.com
- Both of these domains serve tracking scripts to EGL in JavaScript format
It's worth noting that pre-Epic Store, the Epic Launcher had an option to disable analytics. I'm not sure if this is the case now.
Evidence said:
Last edited: