CVE-2024-30051
Windows DWM Core Library Elevation of Privilege Vulnerability
Record summary
CVE-2024-30051 has a selected CVSS score of 7.8 (high); EIP currently links 1 repository PoC. CISA lists CVE-2024-30051 in KEV and reports its use in known ransomware campaigns.
Description
Windows DWM Core Library Elevation of Privilege Vulnerability
Exploitation context
Known exploitation
- CISA KEV
- Listed · May 14, 2024 · CISA
- VulnCheck KEV
- Listed · May 14, 2024 · VulnCheck
- Reported exploitation
- Observed · VulnCheck
- Ransomware use
- Observed · CISA
Available material
- Repository PoCs
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated May 15, 2024 · Source: CVE List
Affected products and versions
Showing 12 of 15| Product | Source | Version range | Status |
|---|---|---|---|
DWM Core LibraryBrowse Microsoft / DWM Core Library | CISA | Version data not supplied | |
Windows 10 Version 1507Browse Microsoft / Windows 10 Version 1507 | CVE List | 10.0.10240.0 to < 10.0.10240.20651 | affected |
Windows 10 Version 1607Browse Microsoft / Windows 10 Version 1607 | CVE List | 10.0.14393.0 to < 10.0.14393.6981 | affected |
Windows 10 Version 1809Browse Microsoft / Windows 10 Version 1809 | CVE List | 10.0.17763.0 to < 10.0.17763.5820 | affected |
| 10.0.0 to < 10.0.17763.5820 | affected | ||
Windows 10 Version 21H2Browse Microsoft / Windows 10 Version 21H2 | CVE List | 10.0.19043.0 to < 10.0.19044.4412 | affected |
Windows 10 Version 22H2Browse Microsoft / Windows 10 Version 22H2 | CVE List | 10.0.19045.0 to < 10.0.19045.4412 | affected |
Windows 11 Version 23H2Browse Microsoft / Windows 11 Version 23H2 | CVE List | 10.0.22631.0 to < 10.0.22631.3593 | affected |
Windows 11 version 21H2Browse Microsoft / Windows 11 version 21H2 | CVE List | 10.0.0 to < 10.0.22000.2960 | affected |
Windows 11 version 22H2Browse Microsoft / Windows 11 version 22H2 | CVE List | 10.0.22621.0 to < 10.0.22621.3593 | affected |
Windows 11 version 22H3Browse Microsoft / Windows 11 version 22H3 | CVE List | 10.0.22631.0 to < 10.0.22631.3593 | affected |
Windows Server 2016Browse Microsoft / Windows Server 2016 | CVE List | 10.0.14393.0 to < 10.0.14393.6981 | affected |
Windows Server 2016 (Server Core installation)Browse Microsoft / Windows Server 2016 (Server Core installation) | CVE List | 10.0.14393.0 to < 10.0.14393.6981 | affected |
Proofs of concept
1Repository PoCs
GitHubdevianntsec/CVE-2024-30051Repository PoCby devianntsecStars: 1Exploit45 files
Analysis
Technical assessment
The artifact is a complete exploit for CVE-2024-30051, a heap-based buffer overflow in Windows DWM Core Library. It includes C++ source code that performs API hooking, heap spraying, and memory corruption to achieve local privilege escalation to SYSTEM integrity level.
Backdoor review
No backdoor observed in reviewed code
The repository contains a proof-of-concept exploit for CVE-2024-30051, a Windows DWM heap overflow elevation of privilege. The exploit code (main.cpp) performs heap spraying, API hooking, and memory corruption to load a payload DLL (dllmain.cpp) into the DWM process. The payload DLL spawns a SYSTEM-level command prompt and performs self-cleanup. All observed behavior is consistent with the stated exploit objective; no concealed backdoor, unrelated remote access, persistence mechanism, or credential theft was found in the reviewed source code.
Classification basis and observed behavior
Classification basis
The artifact contains complete C++ source code that actively exploits CVE-2024-30051 by hooking system APIs, corrupting heap memory, and injecting a payload to achieve code execution as SYSTEM. The README explicitly describes it as an exploit and provides step-by-step instructions for building and running it to gain elevated privileges.
README.md:9-10README.md:97-105exploit/exploit_src/main.cpp:1-1203Requirements
- Windows 11 22H2 build 22621.3447 without patch KB5037771
README.md:11README.md:77 - Visual Studio 2022 with C++ Desktop workload to build the exploit and payload DLL
README.md:78 - Payload DLL (s11.dll) must be placed at payload withheld before running the exploit
README.md:87-91
Observed behavior
- Installs inline hooks on RtlAllocateHeap, RtlCreateHeap, NtDCompositionCreateChannel, and NtDCompositionCommitChannel to intercept DWM heap operations and DirectComposition channel creation
exploit/exploit_src/main.cpp:411-480exploit/exploit_src/main.cpp:769-787 - Modifies the size field in a DWM heap chunk from 0x120 to 0x23F to trigger a 0x8F-byte heap overflow during memcpy
exploit/exploit_src/main.cpp:574-602 - Performs a heap spray of 0x10000 CHolographicInteropTexture objects and frees holes to control heap layout for the overflow
exploit/exploit_src/main.cpp:943-1014 - Writes a payload into the overflow buffer that overwrites KernelCallbackTable+0x388 with a pointer to LoadLibraryA and the path to the attacker-controlled DLL
exploit/exploit_src/main.cpp:367-397 - Releases all spray objects to trigger the overflow in dwm.exe, causing it to load the payload DLL and execute code as SYSTEM
exploit/exploit_src/main.cpp:1039-1061 - Payload DLL spawns a cmd.exe process under the DWM process with SYSTEM integrity level and performs self-cleanup
exploit/payload/dllmain.cpp:78-127
Behaviors behind the backdoor verdict
Observables
- Exploit Behavior
- Payload withheldThis is the core exploit mechanism for CVE-2024-30051, matching the repository's stated purpose.
exploit/exploit_src/main.cpp:158-169exploit/exploit_src/main.cpp:486-668exploit/exploit_src/main.cpp:943-1067 - Payload Behavior
- Payload withheldThe payload DLL's behavior is exactly what is described in the README and comments: it provides an interactive SYSTEM shell and cleans up after itself. No persistence or unrelated actions are taken.
exploit/payload/dllmain.cpp:78-127exploit/payload/dllmain.cpp:23-75 - File Path
- Payload withheldHardcoded payload DLL path used by the exploit and the setup script. This is a standard location for temporary files and is consistent with the exploit's need to place a DLL for DWM to load.
exploit/exploit_src/main.cpp:42README.md:87-88 - Log File
- Payload withheldThe exploit writes a detailed session log for debugging and academic purposes. This is a local log file, not an exfiltration channel.
exploit/exploit_src/main.cpp:60-85
What the analysis did not establish
- Evidence includes only 6 of 45 total files; 29 non-text media files and 10 unclassified files are not analyzed.
- The exploit binary is not provided; only source code is available.
- The payload DLL source is provided but the compiled DLL is not included in the evidence.
- Only the six text files included in the evidence packet were reviewed. The repository contains 39 other files (including 29 non-text media files and 10 unclassified files) that were not inspected. The review does not cover precompiled binaries, project files, or documentation images.
- The payload DLL's self-deletion behavior could be used to hide evidence of exploitation, but this is a common feature of post-exploitation tools and is not itself a backdoor.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.