CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-29069

CVE-2026-29069: Unauthenticated Activation Email Trigger in Craft CMS

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 4, 2026·4 min read·37 visits

Executive Summary (TL;DR)

Unauthenticated attackers can trigger activation emails for arbitrary user IDs in Craft CMS versions prior to 5.9.0-beta.2 and 4.17.0-beta.2. This exposes user enumeration vectors and potential spam risks.

A security vulnerability in Craft CMS allows unauthenticated remote attackers to trigger activation emails for pending user accounts. This flaw stems from an improper access control configuration in the `UsersController`, permitting anonymous access to the `actionSendActivationEmail` endpoint. Exploitation facilitates user enumeration and potential phishing campaigns by allowing attackers to verify the existence of user IDs and spam registered email addresses.

Vulnerability Overview

Craft CMS contains an improper access control vulnerability within its user management module. The affected component, UsersController, handles administrative actions related to user accounts, including the dispatch of activation emails for pending registrations. In affected versions, the specific action responsible for this task (actionSendActivationEmail) is inadvertently exposed to unauthenticated users via the public web interface.

By sending a crafted HTTP request to the application, a remote attacker can force the system to generate and send an activation email to the email address associated with a specific user ID. This occurs without requiring administrative privileges or a valid session. While the attacker cannot directly intercept the email or modify its destination, this behavior leaks information about the existence of user accounts and abuses the server's trust relationship with its email provider.

Root Cause Analysis

The vulnerability is classified as an Authorization Bypass Through User-Controlled Key (CWE-639). The root cause lies in the configuration of the allowAnonymousConfig property within src/controllers/UsersController.php. Craft CMS uses this property to explicitly whitelist actions that should be accessible without a session, such as login or password reset requests.

Prior to the patch, the send-activation-email action was included in this whitelist. Consequently, the application's request handling pipeline skipped standard authentication and authorization checks for this specific route. The controller method actionSendActivationEmail accepted a userId parameter from the POST body and immediately proceeded to process the activation logic, assuming the caller was authorized simply because the route was publicly exposed.

Code Analysis

The vulnerability is evident in the comparison between the vulnerable controller configuration and the patched version. In the vulnerable code, the allowAnonymousConfig array acts as an explicit bypass for authentication filters.

Vulnerable Code (src/controllers/UsersController.php):

public $allowAnonymousConfig = [
    // ... other actions ...
    // CRITICAL: Explicitly allowing anonymous access
    'send-activation-email' => self::ALLOW_ANONYMOUS_LIVE | self::ALLOW_ANONYMOUS_OFFLINE,
];
 
public function actionSendActivationEmail(): ?Response
{
    // Only checks for POST method, no permission checks
    $this->requirePostRequest();
    $userId = $this->request->getRequiredBodyParam('userId');
    // ... triggers email sending logic ...
}

Patched Code:

The fix involves removing the action from the anonymous whitelist and implementing strict access controls. The developer introduced a userActionChecks method that enforces administrative privileges.

// Action removed from $allowAnonymousConfig
 
public function actionSendActivationEmail(): ?Response
{
    // NEW: Enforce strict checks before processing
    $this->userActionChecks();
    $userId = $this->request->getRequiredBodyParam('userId');
    // ...
}
 
private function userActionChecks(): void
{
    // 1. Require Pro edition
    Craft::$app->requireEdition(Craft::Pro);
    // 2. Require POST method
    $this->requirePostRequest();
    // 3. Require request to originate from Control Panel
    $this->requireCpRequest();
    // 4. Require specific administrative permission
    $this->requirePermission('editUsers');
}

Exploitation Methodology

Exploitation requires no authentication. An attacker sends a POST request to the action URL, typically /index.php with a query parameter routing to the controller action (e.g., ?p=admin/actions/users/send-activation-email or just actions/users/send-activation-email), or via the friendly URL if configured.

Attack Steps:

  1. Reconnaissance: The attacker identifies a target Craft CMS installation.
  2. Request Construction: The attacker constructs a POST request containing a userId parameter. The ID is typically an integer.
  3. Enumeration: The attacker iterates through sequential userId values (e.g., 1, 2, 3...).
    • If the user exists and is in a 'pending' state, the server returns a success response, and an email is dispatched.
    • If the user does not exist, the server returns a standard 404 or specific error message.
  4. Analysis: By analyzing the HTTP response codes or timing differences, the attacker builds a list of valid user IDs. This confirms which ID slots are occupied, facilitating further targeted attacks.

Impact Assessment

The primary impact of CVE-2026-29069 is Information Disclosure (User Enumeration) and abuse of functionality. While the CVSS v4.0 score is Medium (6.9), the implications for enterprise environments are significant.

Consequences:

  • User Enumeration: Attackers can map out the number of users and valid IDs on the system. This data is valuable for brute-force attacks or social engineering.
  • Email Spam/Harassment: An attacker can trigger thousands of activation emails to legitimate users, causing confusion, eroding trust in the platform, or potentially damaging the domain's email reputation.
  • Phishing Facilitation: By triggering an official email from the platform at a specific time, an attacker might trick a user into clicking a link, believing it is a legitimate administrative request, potentially leading to credential theft if the user is then redirected to a spoofed login page.

Official Patches

Craft CMSGitHub Commit: Fix for unauthenticated email trigger

Fix Analysis (1)

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Affected Systems

Craft CMS 5.x < 5.9.0-beta.2Craft CMS 4.x < 4.17.0-beta.2

Affected Versions Detail

Product
Affected Versions
Fixed Version
Craft CMS
Pixel & Tonic
>= 5.0.0-RC1, < 5.9.0-beta.25.9.0-beta.2
Craft CMS
Pixel & Tonic
>= 4.0.0-RC1, < 4.17.0-beta.24.17.0-beta.2
AttributeDetail
CWE IDCWE-639
CVSS v4.06.9 (Medium)
Attack VectorNetwork
Attack ComplexityLow
Privileges RequiredNone
Exploit StatusNone / No Known Exploit

MITRE ATT&CK Mapping

T1589Gather Victim Identity Information
Reconnaissance
T1078Valid Accounts
Initial Access
CWE-639
Authorization Bypass Through User-Controlled Key

Authorization Bypass Through User-Controlled Key

Vulnerability Timeline

Patch committed by vendor
2026-01-21
GitHub Advisory Published
2026-03-04
CVE Published
2026-03-04

References & Sources

  • [1]GitHub Security Advisory GHSA-234q-vvw3-mrfq
  • [2]NVD - CVE-2026-29069

More Reports

•4 days ago•CVE-2026-87697
8.8

CVE-2026-87697: Untrusted Deserialization in .NET PresentationCore Clipboard Handling

A remote code execution vulnerability exists in Microsoft .NET due to untrusted data deserialization within the PresentationCore component. The flaw stems from implicit auto-conversion flags during clipboard data retrieval operations.

Alon Barad
Alon Barad
21 views•5 min read
•4 days ago•CVE-2026-70007
8.8

CVE-2026-70007: Out-of-Bounds Write Vulnerability in .NET Framework and WPF Subsystem

An out-of-bounds write vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio allows unauthenticated remote attackers to execute arbitrary code via crafted pixel-shader bytecode or auto-converted clipboard payloads.

Amit Schendel
Amit Schendel
11 views•6 min read
•4 days ago•CVE-2026-70186
7.5

CVE-2026-70186: ASP.NET Core Denial of Service Vulnerability via Framework Deadlock

ASP.NET Core contains a thread deadlock vulnerability (CWE-833) that allows an unauthenticated remote attacker to cause a denial of service over the network by exhausting server thread pool resources.

Amit Schendel
Amit Schendel
13 views•5 min read
•4 days ago•CVE-2026-70035
8.8

CVE-2026-70035: Insecure Deserialization Remote Code Execution in Microsoft .NET Framework and .NET Runtime

CVE-2026-70035 is a high-severity Remote Code Execution (RCE) vulnerability in Microsoft .NET Framework, .NET runtime, and Visual Studio caused by improper handling during the deserialization of untrusted data (CWE-502). An unauthenticated attacker can execute arbitrary code within the context of the affected process by delivering a crafted serialized payload.

Amit Schendel
Amit Schendel
18 views•6 min read
•4 days ago•CVE-2026-70183
7.5

CVE-2026-70183: Elevation of Privilege in ASP.NET Core and Visual Studio via Concurrent Race Condition

An elevation of privilege vulnerability exists in ASP.NET Core and Microsoft Visual Studio due to improper synchronization during concurrent thread execution. Authenticated remote attackers with low privileges can exploit a timing window to manipulate shared resources and assume higher-level execution contexts.

Alon Barad
Alon Barad
15 views•5 min read
•7 days ago•CVE-2026-107844
5.3

CVE-2026-107844: Path Traversal Vulnerability in Contao ImagesController

A path traversal vulnerability (CWE-22) in Contao CMS allows unauthenticated remote attackers to bypass directory boundary restrictions in ImagesController and access files within the project directory.

Amit Schendel
Amit Schendel
23 views•5 min read