CVE-2024-48929
Executive Summary
CVE-2024-48929 is a session termination vulnerability in Umbraco, a free and open-source .NET content management system. The flaw resides in the explicit sign-out mechanism, where the server-side session is not fully terminated upon user logout. This allows an attacker with physical or network access to the user's machine to potentially reuse the stale session token, gaining unauthorized access to the authenticated session. The vulnerability affects Umbraco versions 13.x prior to 13.5.2 and 10.x prior to 10.8.7. The CVSS score is 4.2 (Medium), with a low attack complexity but requiring user interaction (the victim must sign out). No public proof-of-concept (PoC) or exploit code is currently available, and the EPSS score is 0.0%, indicating a very low probability of active exploitation in the wild. The primary risk is session hijacking in shared or public computer environments.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Umbraco is distributed as a NuGet package for the .NET ecosystem. The vulnerability is not a supply chain compromise but a code-level flaw in the session management logic. Organizations using Umbraco should verify their installed version via the NuGet package manager and update to the patched versions. No malicious packages or dependencies have been identified in relation to this CVE.
CVSS Breakdown & Threat Level
- CVSS Score: 4.2 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
- Attack Vector (AV): Network – The attacker can exploit the vulnerability remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – The attacker does not need prior authentication.
- User Interaction (UI): Required – The victim must perform a sign-out action.
- Scope (S): Unchanged – The vulnerability does not affect other components.
- Confidentiality (C): Low – Limited information disclosure (session data).
- Integrity (I): None – No data modification possible.
- Availability (A): None – No denial of service.
Threat Level: Medium. The requirement for user interaction and the lack of public exploits reduce the immediate risk, but the vulnerability could be leveraged in targeted attacks against shared environments.
Deep Dive & Mechanics
The vulnerability stems from improper session invalidation in Umbraco's authentication middleware. When a user explicitly signs out, the application should:
- Clear the server-side session state.
- Invalidate the authentication cookie.
- Terminate the session token.
In affected versions, the server-side session object is not fully destroyed. The session ID remains valid in the server's session store, allowing an attacker who captures the session cookie (e.g., via network sniffing or physical access) to reuse it after the user has logged out. The attacker can then access the application with the victim's privileges until the session expires naturally.
The root cause is likely in the SignOutAsync method of the Umbraco authentication handler, where the session cleanup logic is incomplete. The patch in versions 13.5.2 and 10.8.7 ensures that the session is explicitly abandoned and the session ID is removed from the store.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
public async Task SignOutAsync(HttpContext context, AuthenticationProperties properties)
{
// Incomplete session cleanup
await context.SignOutAsync(IdentityConstants.ApplicationScheme);
// Session is NOT cleared
}
Patched Code (Conceptual):
public async Task SignOutAsync(HttpContext context, AuthenticationProperties properties)
{
await context.SignOutAsync(IdentityConstants.ApplicationScheme);
// Explicitly clear the session
await context.Session.ClearAsync();
await context.Session.CommitAsync();
// Abandon the session
context.Session.Abandon();
}
The patched version ensures that the session data is cleared and the session is abandoned, preventing reuse of the session token.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable Umbraco instance (version 13.x < 13.5.2 or 10.x < 10.8.7).
- Ability to capture HTTP traffic (e.g., using a proxy like Burp Suite) or physical access to the victim's machine.
Exploitation Steps:
- Capture Session Cookie: Intercept the victim's HTTP traffic after they log in. The session cookie is typically named
.AspNetCore.SessionorUMB_SESSION. - Wait for Sign-Out: The victim performs an explicit sign-out.
- Reuse Session Cookie: Use the captured cookie to make requests to the Umbraco application. The server will still recognize the session as valid.
- Access Protected Resources: Navigate to authenticated areas (e.g.,
/umbraco/) to gain unauthorized access.
Example cURL Command:
curl -X GET https://target-umbraco.com/umbraco/ \
-H "Cookie: .AspNetCore.Session=captured-session-id"
Blue Team
Detection:
- Monitor for session reuse after a sign-out event.
- Look for multiple requests using the same session ID from different IP addresses.
- Alert on access to
/umbraco/or other admin endpoints without a preceding login.
Mitigation:
- Apply the patch immediately.
- Implement additional session validation, such as checking the user agent or IP address.
- Use short session timeouts and enforce re-authentication for sensitive actions.
Indicators of Compromise (IOCs)
- Session Cookie Reuse: The same
.AspNetCore.Sessioncookie value appearing in requests after a sign-out event. - Anomalous Access Patterns: Requests to
/umbraco/or other admin endpoints from IP addresses not associated with the original login. - Log Entries: Server logs showing session access after a logout event (e.g.,
SignOutfollowed bySessionaccess).
Detection Engineering
YARA Rule
rule CVE_2024_48929_Session_Reuse {
meta:
description = "Detects session reuse attempts for CVE-2024-48929"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-48929"
strings:
$session_cookie = ".AspNetCore.Session"
$umbraco_path = "/umbraco/"
condition:
$session_cookie and $umbraco_path
}
Sigma Rule
title: Umbraco Session Reuse After Sign-Out
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects potential exploitation of CVE-2024-48929 by monitoring session reuse after sign-out.
author: Valters IT
date: 2025-04-10
logsource:
category: web
product: umbraco
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/umbraco/*'
cs-cookie: '.AspNetCore.Session=*'
condition: selection
falsepositives:
- Legitimate session timeouts
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-48929 Umbraco Session Reuse Attempt"; flow:to_server; content:"/umbraco/"; http_uri; content:".AspNetCore.Session"; http_cookie; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade Umbraco: Update to version 13.5.2 or 10.8.7 via NuGet:
dotnet add package Umbraco.Cms --version 13.5.2 - Restart Application: After upgrading, restart the application to ensure the patch is applied.
Compensating Controls:
- Session Timeout: Reduce the session timeout to minimize the window of opportunity.
- IP Binding: Bind sessions to the originating IP address (if feasible).
- Multi-Factor Authentication (MFA): Require MFA for admin access to reduce the impact of session hijacking.
- Web Application Firewall (WAF): Deploy WAF rules to block requests with reused session cookies after a logout event.
Long-Term Recommendations:
- Conduct a security audit of session management in all .NET applications.
- Implement automated dependency scanning to detect vulnerable packages.
- Train developers on secure session handling practices.
Valters IT
DevSecOps & Cyber Threat Intelligence Expert