Mar 6, 2026·5 min read·33 visits
An improper route exclusion in EC-CUBE's MFA logic allows attackers with valid passwords to bypass 2FA. By navigating directly to the setup URL, attackers can overwrite the victim's MFA secret key without passing the initial challenge. Fixed in versions 4.3.1-p1, 4.2.3-p2, and 4.1.2-p5.
EC-CUBE, a widely used open-source e-commerce platform, contains a critical authentication bypass vulnerability in its Multi-Factor Authentication (MFA) implementation. The flaw allows an attacker who possesses valid administrative credentials (username and password) to bypass the secondary MFA challenge by directly accessing the MFA configuration route. This route was improperly excluded from the authentication listener's enforcement logic, allowing the attacker to overwrite the existing TOTP secret with a new one under their control, effectively taking over the administrator account.
EC-CUBE represents a significant portion of the e-commerce market in Japan. Its administrative interface is protected by a Multi-Factor Authentication (MFA) mechanism designed to prevent unauthorized access even if primary credentials are compromised. However, CVE-2026-30777 reveals a logical flaw in how the application enforces these checks.
The vulnerability exists within the TwoFactorAuthListener, a middleware component responsible for intercepting requests and verifying MFA status. Due to an overly permissive configuration in the listener's exclusion list, specific administrative routes were exempted from MFA enforcement globally. This oversight creates a direct path for attackers to circumvent the security control entirely.
While the attacker requires valid primary credentials (username and password) to exploit this flaw, the vulnerability negates the specific security control (MFA) intended to mitigate credential theft. Consequently, an attacker who has obtained credentials via phishing or reuse can achieve full administrative access despite the presence of 2FA.
The vulnerability is classified as CWE-288: Authentication Bypass Using an Alternate Path or Channel. The root cause lies in the static configuration of the ROUTE_EXCLUDE array within src/Eccube/EventListener/TwoFactorAuthListener.php.
The application defines a list of routes that must be accessible without passing an MFA check, such as the login page itself or the MFA code entry page. Crucially, the route admin_two_factor_auth_set—which handles the generation and registration of new TOTP secrets—was included in this exclusion list unconditionally.
The developers likely intended this exclusion to allow users to set up MFA for the first time. However, the logic failed to verify whether the user already had MFA configured. As a result, the application processes requests to the setup endpoint from any authenticated user, regardless of whether they have completed the MFA challenge for the current session.
The patch addresses the vulnerability by removing the unconditional exclusion and implementing a conditional check based on the user's state. Below is an analysis of the changes in TwoFactorAuthListener.php.
In the pre-patch version, the setup route was hardcoded into the global exclusion list:
// src/Eccube/EventListener/TwoFactorAuthListener.php
// The 'admin_two_factor_auth_set' route is globally excluded from MFA checks
public const ROUTE_EXCLUDE = [
'admin_two_factor_auth',
'admin_two_factor_auth_set' // VULNERABILITY: Unconditional exclusion
];The fix introduces a distinction between routes that are always excluded and routes that are only excluded when MFA is not yet configured:
// src/Eccube/EventListener/TwoFactorAuthListener.php
public const ROUTE_EXCLUDE = ['admin_two_factor_auth'];
// New constant for conditional exclusion
public const ROUTE_EXCLUDE_WHEN_NOT_CONFIGURED = ['admin_two_factor_auth_set'];
public function onKernelController(ControllerEvent $event)
{
// ... [snip] ...
// Check if the current route is in the conditional exclusion list
if (in_array($route, self::ROUTE_EXCLUDE_WHEN_NOT_CONFIGURED)) {
// Only allow bypass if the user DOES NOT have a key set
if ($Member instanceof Member && !$Member->getTwoFactorAuthKey()) {
return;
}
}
// Proceed with standard MFA enforcement
// ...
}Additionally, the controller TwoFactorAuthController.php was updated to redirect users away from the setup page if they already possess an active key, providing defense-in-depth.
Exploiting this vulnerability requires the attacker to possess valid administrative credentials. The attack flow bypasses the standard authentication workflow by manually manipulating the URL structure.
admin_two_factor_auth, prompting for a TOTP code.https://[target]/admin/setting/system/two_factor_auth/set.The impact of this vulnerability is high within the context of the affected application, though the CVSS score is moderated by the requirement for initial privileges (the password).
The CVSS v3.1 vector is CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N (Base 4.9). Note that while confidentiality and availability are marked Low/None in the vector relative to the vulnerability mechanism (bypass), the result of gaining admin access implies total system compromise. The CVSS v4.0 assessment elevates this to a Base Score of 6.9, reflecting the severity more accurately.
The primary remediation is to apply the official patches provided by EC-CUBE. The fix logic is robust, introducing state-aware checks that prevent the setup route from being accessed if an MFA key is already present.
If immediate patching is not feasible, administrators can mitigate the risk by restricting access to the administrative path (/admin) to trusted IP addresses via web server configuration (Apache .htaccess or Nginx allow/deny directives). This reduces the attack surface by requiring network-level access in addition to stolen credentials.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
EC-CUBE EC-CUBE | >= 4.1.0, <= 4.1.2 | 4.1.2-p5 |
EC-CUBE EC-CUBE | >= 4.2.0, <= 4.2.3 | 4.2.3-p2 |
EC-CUBE EC-CUBE | >= 4.3.0, <= 4.3.1 | 4.3.1-p1 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-288 |
| Attack Vector | Network |
| CVSS v3.1 | 4.9 (Medium) |
| CVSS v4.0 | 6.9 (Medium) |
| Impact | Authentication Bypass |
| EPSS Score | 0.06% |
An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.
A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.
OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.
An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.
A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.
An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.