Miggo Logo

CVE-2025-10928: Drupal Access code allows Brute Force Attempts

6.3

CVSS Score
3.1

Basic Information

EPSS Score
0.13089%
Published
10/30/2025
Updated
10/30/2025
KEV Status
No
Technology
TechnologyPHP

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Package NameEcosystemVulnerable VersionsFirst Patched Version
drupal/access_codecomposer< 2.0.52.0.5

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is an improper restriction of excessive authentication attempts in the Drupal Access Code module, allowing for brute-force attacks. The analysis of the security advisory and the associated patch indicates that the vulnerability lies within the AccessCodeLoginForm. The patch for CVE-2025-10928 introduces flood control to the login form validation process.

The key vulnerable function is Drupal\access_code\Form\AccessCodeLoginForm::validateForm. This function handles the validation of the user-submitted access code. Prior to the patch, it lacked any mechanism to prevent an attacker from making an unlimited number of login attempts. This would allow an attacker to brute-force access codes.

The fix involves injecting the FloodInterface service and using it within the validateForm function to track and limit failed login attempts per IP address. Specifically, the isAllowed method is called to check if a new attempt is permitted, and the register method is used to record a failed attempt. This effectively mitigates the brute-force vulnerability.

While the Drupal security advisory SA-CONTRIB-2025-108 also mentions an access bypass/enumeration vulnerability, the patch and the CVE description clearly point to a brute-force issue. This analysis focuses on the evidence from the code changes, which address the lack of rate limiting.

Vulnerable functions

Drupal\access_code\Form\AccessCodeLoginForm::validateForm
src/Form/AccessCodeLoginForm.php
The `validateForm` function is responsible for validating the access code provided by the user. Before the patch, this function did not implement any rate limiting or flood control. This allowed an attacker to repeatedly submit login attempts with different access codes, leading to a brute-force vulnerability. The patch mitigates this by adding a check for the number of failed login attempts from a specific IP address and temporarily blocking the IP if the limit is exceeded.

WAF Protection Rules

WAF Rule

Improp*r R*stri*tion o* *x**ssiv* *ut**nti**tion *tt*mpts vuln*r**ility in *rup*l ****ss *o** *llows *rut* *or**. T*is issu* *****ts ****ss *o**: *rom *.*.* ***or* *.*.*.

Reasoning

T** vuln*r**ility is *n improp*r r*stri*tion o* *x**ssiv* *ut**nti**tion *tt*mpts in t** *rup*l ****ss *o** mo*ul*, *llowin* *or *rut*-*or** *tt**ks. T** *n*lysis o* t** s**urity **visory *n* t** *sso*i*t** p*t** in*i**t*s t**t t** vuln*r**ility li*s