/

CVE-2026-111356

Severity:

HIGH RISK

(7.4)

Insufficient Rate Limiting (CWE-307) in MacCMS Reset

CVE-2026-111356

Deferred

Vulnerability type

Category:

Insufficient Rate Limiting

CWE:

CWE-307

Impact:

Account Takeover

Severity:

HIGH RISK

(7.4)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

MacCMS password recovery does not sufficiently limit attempts to submit six-digit recovery codes. An unauthenticated attacker who knows a member's email address or phone number may brute-force the code and reset the account password.

MacCMS password recovery does not sufficiently limit attempts to submit six-digit recovery codes. An unauthenticated attacker who knows a member's email address or phone number may brute-force the code and reset the account password.

Affected context

The issue occurs in MacCMS member account recovery flows through the findpass_reset functionality. It becomes risky when recovery codes are short, attempts are not adequately throttled or locked, and an attacker can identify a target account using its email address or phone number.

The issue occurs in MacCMS member account recovery flows through the findpass_reset functionality. It becomes risky when recovery codes are short, attempts are not adequately throttled or locked, and an attacker can identify a target account using its email address or phone number.

Exploit preconditions

  • Attack surface: Public member password-recovery endpoint
  • Required access: No authenticated account access is required
  • Required knowledge: The target member's email address or phone number
  • Trigger point: Submission and validation of password-recovery codes
  • Why exploitation is possible: The limited six-digit code space can be tested repeatedly when server-side attempt controls are insufficient
  • Attack surface: Public member password-recovery endpoint
  • Required access: No authenticated account access is required
  • Required knowledge: The target member's email address or phone number
  • Trigger point: Submission and validation of password-recovery codes
  • Why exploitation is possible: The limited six-digit code space can be tested repeatedly when server-side attempt controls are insufficient

Why this happens

The underlying flaw is inadequate enforcement of attempt limits during password-recovery code validation. This maps to CWE-307: Improper Restriction of Excessive Authentication Attempts, because the application permits repeated guesses without sufficiently effective throttling, lockout, expiration, or equivalent abuse controls.

The underlying flaw is inadequate enforcement of attempt limits during password-recovery code validation. This maps to CWE-307: Improper Restriction of Excessive Authentication Attempts, because the application permits repeated guesses without sufficiently effective throttling, lockout, expiration, or equivalent abuse controls.

Potential impact

  • An attacker may reset a member's password
  • Member accounts could be taken over
  • Private account data may be accessed
  • Attackers could perform actions under a compromised member identity
  • Recovery services may be subjected to automated abuse
  • An attacker may reset a member's password
  • Member accounts could be taken over
  • Private account data may be accessed
  • Attackers could perform actions under a compromised member identity
  • Recovery services may be subjected to automated abuse

General mitigation guidance

Mitigation generally focuses on making recovery-code verification resistant to repeated guessing.

Common defensive patterns include:

  • Enforcing strict server-side limits for code-validation attempts
  • Applying throttling across accounts, sessions, devices, and network sources
  • Expiring recovery codes quickly and invalidating them after successful use
  • Using sufficiently unpredictable, single-use recovery tokens where practical
  • Avoiding account-enumeration signals in recovery responses
  • Requiring additional verification for suspicious recovery activity
  • Applying least privilege to password-reset and account-management operations

Mitigation generally focuses on making recovery-code verification resistant to repeated guessing.

Common defensive patterns include:

  • Enforcing strict server-side limits for code-validation attempts
  • Applying throttling across accounts, sessions, devices, and network sources
  • Expiring recovery codes quickly and invalidating them after successful use
  • Using sufficiently unpredictable, single-use recovery tokens where practical
  • Avoiding account-enumeration signals in recovery responses
  • Requiring additional verification for suspicious recovery activity
  • Applying least privilege to password-reset and account-management operations

How teams detect issues like this

Organizations can look for this issue through:

  • Static and dynamic analysis of password-recovery handlers for missing rate limits
  • Code review checks for bounded retry counts, token expiration, and single-use enforcement
  • Testing whether limits are applied consistently across IP addresses, sessions, accounts, and devices
  • Monitoring for repeated recovery-code failures and unusual password-reset activity
  • Policy enforcement requiring abuse controls for all authentication and recovery endpoints
  • Automated security testing that evaluates short-code verification workflows

Organizations can look for this issue through:

  • Static and dynamic analysis of password-recovery handlers for missing rate limits
  • Code review checks for bounded retry counts, token expiration, and single-use enforcement
  • Testing whether limits are applied consistently across IP addresses, sessions, accounts, and devices
  • Monitoring for repeated recovery-code failures and unusual password-reset activity
  • Policy enforcement requiring abuse controls for all authentication and recovery endpoints
  • Automated security testing that evaluates short-code verification workflows

Sources

SourceLink
github.comgithub.com/magicblack/maccms10
github.comgithub.com/magicblack/maccms10/blob/v2026.1000.4056/application/common/model/User.php#L1199-L1231
github.comgithub.com/magicblack/maccms10/blob/v2026.1000.4056/application/common/model/User.php#L1397-L1450
hackmd.iohackmd.io/@hieuPenguinnn/maccms10-password-reset-code-brute-force-account-takeover
vulncheck.comvulncheck.com/advisories/maccms-v10-through-2026.1000.4056-account-takeover-via-password-recovery-brute-force

Frequently asked

questions

Yes. The affected recovery functionality is exposed through a public application flow, so exploitation may be possible over the network without an authenticated session.

An attacker generally needs to know or identify the victim's email address or phone number. They do not need prior access to the victim's account.

Enforce robust server-side attempt limits, short token lifetimes, single-use recovery codes, and consistent throttling across relevant request dimensions.

Treat password recovery as an authentication boundary, test it for automated guessing, monitor failed attempts, and require standardized anti-abuse controls in security reviews.

Yes. The affected recovery functionality is exposed through a public application flow, so exploitation may be possible over the network without an authenticated session.

An attacker generally needs to know or identify the victim's email address or phone number. They do not need prior access to the victim's account.

Enforce robust server-side attempt limits, short token lifetimes, single-use recovery codes, and consistent throttling across relevant request dimensions.

Treat password recovery as an authentication boundary, test it for automated guessing, monitor failed attempts, and require standardized anti-abuse controls in security reviews.

Find out what's already
exploitable in your codebase.