CVE-2024-43498
Critical · 9.8.NET Remote Code Execution Vulnerability
CVSS
9.8
EPSS
3.6%
Published
Nov 12, 2024
CISA due date
—
Cloudanix analysis
A flaw in some .NET applications lets attackers run their own code on servers by sending bad data, which could let them steal information or disrupt services.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Deserialization
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Unsafe deserialization in .NET 9.0 allows remote unauthenticated attackers to execute arbitrary code by processing specially crafted requests or files that instantiate malicious objects during deserialization.
Why it matters to the business
Attackers can fully compromise affected applications, resulting in unauthorized access to sensitive data, system takeover, and operational disruption; urgency is moderate given low EPSS and lack of KEV listing despite high CVSS.
How an attack unfolds
An attacker identifies a vulnerable .NET web application, crafts a malicious serialized payload, and delivers it via HTTP request or file upload; the application deserializes the payload without validation, triggering code execution on the server.
How to fix it
Upgrade affected .NET 9.0 applications to the latest patched version that resolves the deserialization issue; apply vendor updates promptly.
How to confirm the fix worked
Verify application versions against fixed releases, review deserialization code paths for safe type filtering, and perform authenticated scans or fuzzing to confirm the vulnerability is closed.
Typical attack path
- Reconnaissance to identify exposed .NET 9.0 web applications
- Craft and send specially crafted deserialization payload via request or file
- Trigger deserialization to achieve remote code execution
- Establish persistence or exfiltrate data
How to detect it
Inspect web server logs for unusual request patterns containing serialized object markers, review application error logs for deserialization exceptions, and search for unexpected process spawns following web requests.
What your security team should do
- Prioritize patching all .NET 9.0 instances within standard change windows
- Implement input validation and safe deserialization patterns in code reviews
- Monitor EPSS trends and enable application runtime protections such as WAF rules for deserialization patterns
The record
Microsoft is releasing this security advisory to provide information about a vulnerability in .NET 9.0. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability. A remote unauthenticated attacker could exploit this vulnerability by sending specially crafted requests to a .NET vulnerable webapp or loading a specially crafted file into a vulnerable application.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| NuGet | System.Formats.Nrbf | 0 | 9.0.0 |
| AlmaLinux:9 | aspnetcore-runtime-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | aspnetcore-runtime-dbg-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | aspnetcore-targeting-pack-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-apphost-pack-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-host | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-hostfxr-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-runtime-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-runtime-dbg-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-sdk-9.0 | 0 | 9.0.100-1.el9_5 |
| AlmaLinux:9 | dotnet-sdk-9.0-source-built-artifacts | 0 | 9.0.100-1.el9_5 |
| AlmaLinux:9 | dotnet-sdk-aot-9.0 | 0 | 9.0.100-1.el9_5 |
| AlmaLinux:9 | dotnet-sdk-dbg-9.0 | 0 | 9.0.100-1.el9_5 |
| AlmaLinux:9 | dotnet-targeting-pack-9.0 | 0 | 9.0.0-1.el9_5 |
| AlmaLinux:9 | dotnet-templates-9.0 | 0 | 9.0.100-1.el9_5 |
| AlmaLinux:9 | netstandard-targeting-pack-2.1 | 0 | 9.0.100-1.el9_5 |
| Bitnami | dotnet | 9.0.0 | No fix |
| Bitnami | dotnet | 9.0.0 | 9.0.1 |
| Bitnami | dotnet-sdk | 9.0.0 | No fix |
| Bitnami | dotnet-sdk | 9.0.0 | 9.0.1 |
| Chainguard | aspnet-9-runtime | 0 | 9.0.2-r0 |
| Chainguard | aspnet-9-runtime-default | 0 | 9.0.2-r0 |
| Chainguard | aspnet-9-targeting-pack | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9 | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-aot | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-runtime | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-runtime-default | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-sdk | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-sdk-default | 0 | 9.0.2-r0 |
| Chainguard | dotnet-9-targeting-pack | 0 | 9.0.2-r0 |
| Chainguard | dotnet-bootstrap-9 | 0 | 9.0.200-r0 |
| Chainguard | netstandard-9-targeting-pack | 0 | 9.0.2-r0 |
| Red Hat:enterprise_linux:9::appstream | aspnetcore-runtime-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | aspnetcore-runtime-dbg-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | aspnetcore-targeting-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-apphost-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-apphost-pack-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-host | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-host-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-hostfxr-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-hostfxr-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-runtime-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-runtime-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-runtime-dbg-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-9.0-source-built-artifacts | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-aot-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-aot-9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-sdk-dbg-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-targeting-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet-templates-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | dotnet9.0-debugsource | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::appstream | netstandard-targeting-pack-2.1 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | aspnetcore-runtime-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | aspnetcore-runtime-dbg-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | aspnetcore-targeting-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-apphost-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-apphost-pack-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-host | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-host-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-hostfxr-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-hostfxr-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-runtime-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-runtime-9.0-debuginfo | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-runtime-dbg-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-9.0-source-built-artifacts | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-aot-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-aot-9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-sdk-dbg-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-targeting-pack-9.0 | 0 | 0:9.0.0-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet-templates-9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet9.0 | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet9.0-debuginfo | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | dotnet9.0-debugsource | 0 | 0:9.0.100-1.el9_5 |
| Red Hat:enterprise_linux:9::crb | netstandard-targeting-pack-2.1 | 0 | 0:9.0.100-1.el9_5 |
| Ubuntu:22.04:LTS | dotnet7 | 0 | No fix |
| Ubuntu:24.10 | dotnet9 | 0 | 9.0.100-9.0.0-0ubuntu1~24.10.1 |
| Wolfi | aspnet-9-runtime | 0 | 9.0.2-r0 |
| Wolfi | aspnet-9-runtime-default | 0 | 9.0.2-r0 |
| Wolfi | aspnet-9-targeting-pack | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9 | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-aot | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-runtime | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-runtime-default | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-sdk | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-sdk-default | 0 | 9.0.2-r0 |
| Wolfi | dotnet-9-targeting-pack | 0 | 9.0.2-r0 |
| Wolfi | dotnet-bootstrap-9 | 0 | 9.0.200-r0 |
| Wolfi | netstandard-9-targeting-pack | 0 | 9.0.2-r0 |
Related vulnerabilities
- CVE-2024-43499 .NET Denial of Service Vulnerability Also affects System.Formats.Nrbf
- CVE-2025-55315 Microsoft Security Advisory CVE-2025-55315: .NET Security Feature Bypass Vulnerability Also affects aspnetcore-runtime-9.0
- CVE-2024-43483 Microsoft Security Advisory CVE-2024-43483 | .NET Denial of Service Vulnerability Also affects dotnet-host
- CVE-2024-43484 Microsoft Security Advisory CVE-2024-43484 | .NET Denial of Service Vulnerability Also affects dotnet-host
- CVE-2024-38229 Microsoft Security Advisory CVE-2024-38229 | .NET Remote Code Execution Vulnerability Also affects dotnet-host
- CVE-2024-43485 Microsoft Security Advisory CVE-2024-43485 | .NET Denial of Service Vulnerability Also affects dotnet-host
- CVE-2024-30105 .NET Core and Visual Studio Denial of Service Vulnerability Also affects dotnet-host
- CVE-2024-30045 .NET and Visual Studio Remote Code Execution Vulnerability Also affects dotnet-host