KB5039884: Cumulative update for .NET Framework, versions 3.5 and 4.8, on Windows 10 21H2/22H2, July 2024. Addresses elevation flaw; temp paths change where GetTempPath2 exists
In short
The update addresses CVE-2024-38081 and a WinForms memory-leak issue. On Windows versions that expose the GetTempPath2 API, System.IO.Path.GetTempPath uses that API and returns its resolved path.
Does it affect you? Applies to: Devices running Windows 10 version 21H2 or 22H2 with .NET Framework 3.5 or 4.8 installed.
Review notes Additional details from the official release notes (2) Read notes
- What changes On Windows versions that expose GetTempPath2, .NET Framework’s Path.GetTempPath behavior changes. Affected applications are expected to adapt their code.
- Known issues The update changes Path.GetTempPath behavior on Windows versions that expose GetTempPath2; affected applications are expected to adapt. Microsoft warns that opting out disables the CVE-2024-38081 security fix and does not recommend the workaround.
The official sources are linked at the end of the page.
What changes
Fixes 2 changes
.NET Framework
-
The update addresses a security vulnerability in .NET Framework.1
CVE-2024-38081 is an elevation-of-privilege vulnerability; the page also describes it as a remote code execution vulnerability.
Winforms
-
Memory leaks linked to WinForms accessibility objects are addressed.2
Addresses memory leaks associated with
AccessibleObjectsheld in memory due to reference counting.
Improvement 1 change
System.IO.Path.GetTempPath
-
On Windows versions that expose GetTempPath2, apps using System.IO.Path.GetTempPath receive the path resolved by that API. For SYSTEM processes, this is
%WINDIR%\SystemTemp, which non-SYSTEM processes cannot access.3WhenGetTempPath2is exposed,System.IO.Path.GetTempPathinvokes it. The changed behavior is by design; affected applications are expected to adapt.
Technical details
Data sheet · Security · Downloads · Components Click to collapse or expand
Data sheet
- Released
- 2024-07-09
- Classification
- Security Updates
- Type
- Cumulative update
- Restart
- Required
- Replaces
- KB5037592, KB5036608
- Replaced by
- KB5044020
| Version | File version | Channel |
|---|---|---|
| 3.5 | 2.0.50727.9177 | General availability |
| 4.8 | 4.8.4739.0 | General availability |
Security
| Vulnerability | Severity | CVSS |
|---|---|---|
|
.NET, .NET Framework, and Visual Studio Elevation of Privilege Vulnerability
|
Not rated | — |
Downloads (Microsoft Update Catalog)
x64
Windows 10 Enterprise LTSC 2021 / Windows 10, version 22H2
75.9 MB
Arm64
Windows 10 Enterprise LTSC 2021 / Windows 10, version 22H2
47.5 MB
x86
Windows 10 Enterprise LTSC 2021 / Windows 10, version 22H2
47.5 MB
Updated components
157 files changed since the previous update for the same versions.
| Top changed components | Files |
|---|---|
| WPF | 42 |
| .NET runtime (CLR) | 21 |
| WCF | 18 |
| ASP.NET | 9 |
| Windows Forms | 3 |
Sources
Updated
Cited passages from Microsoft's official notes (3)
-
1.
This security update addresses a remote code execution vulnerability detailed in CVE-2024-38081.
support.microsoft.com -
2.
Addresses an issue with the size of memory leaks associated with AccessibleObjects held in memory due to ref-counting.
support.microsoft.com -
3.
If windows version exposes the GetTempPath2 Win32 API, this method invokes that API and returns the resolved path.
support.microsoft.com
Checked automatically: 7 of 8 checks passed, 3 quoted passages · compared with Microsoft's page on Oct 20, 2026
- Quotes found in the official pages: passed
- Numbers found in the sources: passed
- Vulnerabilities from the dossier only: passed
- Links to allowed domains only: passed
- Every official change covered: passed
- Readable plain text: passed
- Changes confirmed by the file list: passed
- Sources agree: not passed
A second AI read the text against the sources: correctness 4/5, clarity 4/5, completeness 3/5. How we work
Published by The Update Bureau. Written with AI from Microsoft's own documents, checked by rules and a second AI. How we work · Report a mistake