CVE-2026-94379: MISP: HTTP Method Bypass of Login Security Controls (Bruteforce Protection and Email OTP)

Published Sep 21, 2026
·
Updated

The login() function in MISP's UsersController.php contained insufficient HTTP method validation for several security-critical code paths. The original code used an allowlist approach, checking only for specific HTTP methods (POST and PUT) before enforcing bruteforce protection, email one-time-password (OTP) verification, and login-failure logging. Because the checks were not exhaustive, an unauthenticated attacker could issue login requests using other HTTP methods and bypass all three security controls simultaneously. Specifically:

- the bruteforce blocklisting check and attempt counter were skipped, allowing unlimited credential-guessing attempts without being rate-limited or blocked  -  the email OTP two-factor authentication step was skipped, defeating the second factor of authentication  - login-failure events were neither logged nor counted, removing the audit trail and the mechanism that would normally trigger a blocklist entry.

The security impact is the effective disabling of brute-force protection and multi-factor authentication for any attacker who can craft an HTTP request with a non-POST/PUT method to the login endpoint, potentially leading to credential compromise and unauthorized access to the MISP instance.

Version affected: <2.5.47

Affected Software

1 affected component
MISP<2.5.47

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade MISP to a version that resolves this vulnerability.

    Fixed in <2.5.47
  2. Configuration

    In UsersController.php within the login() function, replace the allowlist-style checks (only allowing POST/PUT before bruteforce protection, email OTP verification, and login-failure logging) with a denylist approach so that every non-GET HTTP method triggers: (1) bruteforce protection, (2) email OTP verification, and (3) login-failure logging.

    MISP UsersController.php login() HTTP method validation = denylist: require is NOT GET (trigger security-critical branches for every non-GET method)

Event History

Sep 21, 2026
CVE Published
via MITRE·12:35 PM
Data Sourced
via MITRE·12:35 PM
RemedyDescriptionWeakness

Frequently Asked Questions

1

Who can exploit this issue?

An unauthenticated attacker who can send crafted HTTP requests to the MISP login endpoint can exploit it. The attacker does not need to use POST or PUT; a different HTTP method can bypass the affected checks.

2

What security controls are bypassed?

Non-POST/PUT login requests bypass bruteforce blocklist checks and attempt counting, email OTP verification, and login-failure logging. This permits unrestricted credential guessing and can allow login with a compromised password without completing the email OTP step.

3

Are failed exploit attempts visible in the normal login audit trail?

No. Login failures through the bypassed code path are neither logged nor counted, so they do not create the events or counters that would normally lead to blocklisting.

4

How can defenders identify potentially affected activity?

Review requests to the login endpoint for HTTP methods other than POST and PUT. Because failed attempts on this path are not logged or counted by the affected login controls, absence of expected login-failure records does not rule out attempted exploitation.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203