CVE-2023-38817
echo anti_cheat_tool Improper Privilege Management
Record summary
CVE-2023-38817 has a selected CVSS score of 7.8 (high); EIP currently links 2 repository PoCs.
Description
An issue in Inspect Element Ltd Echo.ac v.5.2.1.0 allows a local attacker to gain privileges via a crafted command to the echo_driver.sys component. NOTE: the vendor's position is that the reported ability for user-mode applications to execute code as NT AUTHORITY\SYSTEM was "deactivated by Microsoft itself."
Exploitation context
Known exploitation
- VulnCheck KEV
- Listed · Sep 10, 2024 · VulnCheck
- Reported exploitation
- Observed · VulnCheck
Available material
- Repository PoCs
- 2
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Jul 9, 2024 · Source: CVE List
Affected products and versions
1| Product | Source | Version range | Status |
|---|---|---|---|
anti_cheat_toolBrowse echo / anti_cheat_tool | VulnCheck | Version data not supplied | |
Proofs of concept
2Repository PoCs
GitHubSecSecBurger/CVE-2023-38817Repository PoCby SecSecBurgerStars: 0Exploit2 files
Analysis
Technical assessment
A local privilege escalation exploit for CVE-2023-38817 targeting the Echo.ac anti-cheat driver (echo_driver.sys). The code opens the device, uses IOCTLs to obtain an arbitrary kernel read/write primitive, reads the SYSTEM process token, overwrites the current process token with it, and then spawns a SYSTEM-privileged command prompt. It also unlinks the spawned process from the active process list to hide it.
Backdoor review
No backdoor observed in reviewed code
The supplied main.c implements a local privilege escalation (LPE) proof-of-concept for CVE-2023-38817. It interacts with the EchoDrv device via DeviceIoControl to obtain an arbitrary kernel read/write primitive, then overwrites its own process token with the SYSTEM token and spawns cmd.exe. The code also unlinks the spawned cmd.exe from the EPROCESS active process list to hide it. All operations are consistent with a standard Windows kernel exploitation technique (token stealing) and do not exhibit concealed backdoor behavior, credential exfiltration, persistence, or unrelated payload delivery.
Classification basis and observed behavior
Classification basis
The code actively exploits a driver vulnerability to escalate privileges and spawn a SYSTEM shell. It uses IOCTLs to achieve arbitrary kernel read/write, steals the SYSTEM token, and applies it to the current process. This is a full exploit, not a scanner or writeup.
main.c:72-81main.c:190-228main.c:230-243Requirements
- Local user-mode code execution on a Windows system with the vulnerable Echo.ac driver loaded.
main.c:126-143 - The vulnerable driver device 'payload withheld' must be accessible.
main.c:135-143
Observed behavior
- Opens a handle to the EchoDrv device.
main.c:135-143 - Sends IOCTL payload withheld to the driver, likely to initialize or enable the exploit primitive.
main.c:153-159 - Sends IOCTL payload withheld to obtain a handle to the current process with GENERIC_ALL access.
main.c:163-184 - Uses IOCTL payload withheld to perform arbitrary kernel memory read and write operations.
main.c:72-81 - Reads the SYSTEM process token from kernel memory.
main.c:190-211 - Overwrites the current process token with the SYSTEM token to achieve privilege escalation.
main.c:220-228 - Spawns a new cmd.exe process, which inherits the elevated SYSTEM token.
main.c:230-243 - Unlinks the spawned cmd.exe process from the kernel's active process list to hide it.
main.c:245-286
Behaviors behind the backdoor verdict
Observables
- Device Handle
- Payload withheldTarget device for the CVE-2023-38817 exploit; opened with GENERIC_READ | GENERIC_WRITE.
main.c:135-143 - Ioctl Code
- Payload withheldIOCTL used for arbitrary kernel read/write via mmCopy_params structure.
main.c:79 - Ioctl Code
- Payload withheldFirst IOCTL sent to the driver; purpose not explicitly documented but part of the exploit chain.
main.c:154 - Ioctl Code
- Payload withheldSecond IOCTL used to obtain a process handle with GENERIC_ALL access for the current process.
main.c:172 - Process Creation
- Payload withheldSpawns a SYSTEM-privileged command prompt after token theft; standard LPE demonstration.
main.c:232-243 - Process Hiding
- Payload withheldHides the spawned cmd.exe from process enumeration tools by manipulating the kernel's doubly-linked list of active processes.
main.c:245-286
What the analysis did not establish
- Only one source file (main.c) is provided; the header 'DriverTypes.h' is referenced but not included in the evidence.
- The evidence does not include the compiled binary or any runtime output, so the exploit's effectiveness cannot be verified from the provided text alone.
- Only one text file (main.c) was supplied; the repository contains one additional file (DriverTypes.h) that was not included in the text evidence. Its absence does not indicate concealment, but its content was not reviewed.
- Binary files were flagged as metadata-only and not analyzed; no binary content was inspected.
- The review is limited to static analysis of the provided source code; no dynamic execution or behavioral analysis was performed.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.