☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 3.7 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N 🐛 CWE-362
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-1199

CVE-2026-1199 Vulnerability in Zabbix
📅 PUBLISHED: 2026-08-18 00:00 UTC 🔄 UPDATED: 2026-09-26 06:29 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.17%
👁️
0.17% probability
4.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1110
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 3.7
AV: N Attack Vector Network
AC: H Attack Complexity High
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
3.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-1199 is a race-condition vulnerability (CWE-362) in the Zabbix API and frontend login lockout mechanism. The flaw allows an unauthenticated remote attacker to bypass the account lockout counter by sending multiple unsuccessful login requests simultaneously (concurrently), thereby permitting a higher number of password guesses than the intended threshold. The vulnerability carries a low CVSS base score of 3.7, reflecting the high attack complexity and limited direct impact (integrity only, no confidentiality or availability loss). Affected organizations are those self-hosting Zabbix frontend and API endpoints; a patch is claimed by NVD but is not independently confirmed, so immediate mitigation should rely on compensating controls.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The Zabbix login mechanism implements an account lockout policy intended to thwart brute-force attacks: after a predefined number of consecutive failed authentication attempts, the system blocks further login attempts for a specified duration or until an administrator intervenes. The NVD description states that this lockout mechanism has a flaw where several unsuccessful login requests are not properly counted towards the block counter if sent simultaneously.

The root cause falls under CWE-362 (Race Condition). Specifically, the vulnerability is a check-then-act race: the code path first reads the current lockout counter and compares it against the threshold, then increments the counter and stores the new value. When multiple login requests arrive concurrently — for example, through a multi-threaded HTTP client or a parallelized brute-force tool — two or more requests may read the same counter value before any of them commits an increment. Each thread then observes a counter below the threshold and permits another password guess. The net effect is that an attacker can submit N×M guesses (where N is the number of concurrent threads and M is the configured threshold) before the lockout triggers.

Because the NVD description lacks specific function names, code references, or API endpoint identifiers, the precise implementation location (e.g., a database-stored counter vs. an in-memory session counter) cannot be determined from the available data. However, the mechanism is consistent with a Redis/Memcached or SQL-backed counter incremented via a read-modify-write operation without atomicity (e.g., missing INCR atomic operation, or an ORM get() -> increment() -> save() sequence). Note that this is inferred from the vulnerability class; insufficient technical detail is available to confirm the actual data-store or ORM used.

The attack surface is the Zabbix web frontend login page and the Zabbix API authentication endpoint (typically exposed on HTTP/HTTPS ports 80/443 and API paths under the frontend). Both accept username/password pairs; both rely on the shared lockout mechanism.

Exploitation Scenarios

No public PoC or exploit code is available; the attack chain below is inferred strictly from the vulnerability class and NVD description.

  1. Reconnaissance / Target Identification: The attacker identifies an exposed Zabbix frontend or API endpoint. This can be achieved through Shodan queries (e.g., product:Zabbix or http.title:"Zabbix"), TLS certificate scanning, or banner grabbing. The attacker confirms that the lockout policy is enabled (Zabbix permits configuring max failed attempts per user and per IP).

  2. Triggering the Flaw: The attacker obtains or guesses a valid username (e.g., "Admin" or a service account name from OSINT). Using a brute-force tool that supports concurrency (e.g., Hydra, Medusa, or a custom Python asyncio/grequests script), the attacker fires a burst of login requests against the authentication endpoint — typically 50–200 parallel requests — all with incorrect passwords for the same username. The requests are desynchronized so that the server's thread pool handles them concurrently rather than sequentially.

  3. Race Exploitation: Under the intended design, the lockout counter increments per failed attempt and blocks further attempts after the threshold (e.g., 5 failures). Because the counter increment is not atomic, parallel requests read the counter state before any increment is committed. Each request concludes that the counter is still below threshold and authorizes a new password test. The attacker can therefore cycle through the password dictionary without being locked out, effectively bypassing the rate-limiting protection.

  4. Post-Exploitation Impact (Success Case): If a valid password is matched, the attacker gains authenticated access to the Zabbix frontend or API. The resulting access level depends on the compromised account's privileges:

    • Low-privilege (user) accounts: read access to monitored hosts, graphs, and alert configurations; possible modification of user preferences.
    • Administrator accounts: full control — configuration changes to monitoring, creation of arbitrary scripts/items, potential remote code execution via the Zabbix server/agent, and lateral movement into monitored infrastructure.

    Even without a successful password match, the attacker achieves a partial integrity compromise by circumventing the security control (lockout) — this aligns with the CVSS impact subscore of I:L.

Impact Assessment

  • CVSS Score: 3.7 (Low). Vector: AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N. The high attack complexity is attributed to the race condition being timing-sensitive and dependent on server concurrency handling. No confidentiality or availability impact is scored because the vulnerability itself does not disclose data or cause denial of service.
  • Business Impact: The practical business risk exceeds the low numeric score. Zabbix is widely deployed as a monitoring backbone in enterprise environments, often with network reachability to critical infrastructure segments. A successful brute-force against an administrator account could lead to full compromise of the monitoring plane, enabling attackers to disable alerts, manipulate monitored data, or pivot to internal networks.
  • Blast Radius: Directly affected systems are internet-exposed Zabbix web interfaces and API endpoints. Indirectly affected are all infrastructure assets monitored by the compromised Zabbix instance, because a compromised monitoring tool grants deep visibility and control over its managed fleet.
  • Mitigating Factors: The high attack complexity (AC:H) means successful exploitation requires favorable timing conditions; slow, sequential brute-forcing will still trigger the lockout. Additionally, Zabbix typically supports per-IP brute-force protection (e.g., blocking after N failed attempts from the same IP) — the race bypasses the per-username counter but may still be constrained by per-IP limits unless those are also racy.

Detection Guidance

Sigma Rule

title: Zabbix Concurrent Login Lockout Bypass Attempt
id: 8f2c7f1e-9a4b-4d6c-9e1f-3a7b8c9d0e12
status: experimental
description: Detects a high volume of concurrent failed Zabbix login attempts from a single source IP, indicative of race-condition exploitation against the lockout mechanism (CVE-2026-1199).
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-1199
tags:
    - attack.t1110
    - attack.initial_access
    - cve.2026-1199
logsource:
    product: zabbix
    service: web
detection:
    selection:
        EventName: 'Failed login'
        source_ip: '*'
    timeframe: 5s
    condition: selection | count(source_ip) by username > 20
level: high

YARA Rule

rule Zabbix_Login_Lockout_Race_CVE_2026_1199
{
    meta:
        author = "Valters IT Security"
        description = "Detects log snippets indicating a burst of concurrent Zabbix login failures consistent with lockout bypass (CVE-2026-1199)."
        date = "2026-02-15"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-1199"
        severity = "medium"
    strings:
        $login_fail_1 = "Login failed for user" ascii nocase
        $login_fail_2 = "incorrect password" ascii nocase
        $login_fail_3 = "Authentication failed" ascii nocase
        $login_fail_4 = "User not found or password mismatch" ascii nocase
        $lockout_msg = "account is locked" ascii nocase
        $src_ip_marker = "RemoteAddr" ascii nocase
    condition:
        uint16(0) == 0x0A0A and // log file newline heuristic
        2 of ($login_fail_*) and
        #login_fail_* > 20 and
        not $lockout_msg
}

Suricata IDS Rule

alert http any any -> $ZABBIX_SERVERS any (msg:"CVE-2026-1199 Zabbix Concurrent Login Brute Force Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/index.php"; http_uri; content:"name=\"password\""; http_client_body; threshold:type=both, track=by_src, count=50, seconds=5; classtype:attempted-admin; sid:20261199; rev:1; metadata:created_at 2026_02_15, cve CVE-2026-1199;)

Elastic Detection

sequence by source.ip with maxspan=5s
  [ authentication where event.action == "authentication_failure" and
    process.name == "httpd" and
    winlog.event_id == 4625 or
    auditd.data.op == "PAM:authentication" and
    user.name != null
  ] with runs=20

Splunk SPL Query

index=zabbix sourcetype=zabbix:web 
| where like(_raw, "%Login failed%") OR like(_raw, "%Authentication failed%")
| eval attempt_time=_time
| bin _time span=5s
| stats count as fail_count by src_ip, _time, user
| where fail_count > 20
| table _time, src_ip, user, fail_count
| sort - _time

Wazuh OSSEC Rule

<group name="zabbix, brute_force,">
  <rule id="100219" level="12">
    <decoded_as>json</decoded_as>
    <field name="event_type">^failed_login$</field>
    <field name="module">^zabbix$</field>
    <description>Zabbix: Concurrent failed login burst - possible CVE-2026-1199 lockout bypass</description>
    <group>authentication_failures,</group>
    <same_source_ip />
    <frequency>20</frequency>
    <timeframe>5</timeframe>
    <mitre>
      <id>T1110</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 2/4 (CLAIMED — single source (NVD) indicates a patch exists; not independently confirmed). No specific patched version or commit hash was provided.

  1. Immediate Mitigations:

    • Restrict network exposure: Remove the Zabbix frontend/API from the public internet. Place it behind a VPN, bastion host, or allowlist-based firewall.
    • Enable and enforce per-IP lockout: If not already enabled, configure Zabbix to lock out an IP address after a small number of failed attempts (in addition to per-user lockout). Per-IP enforcement acts as a second layer even if the per-user counter race is exploited.
    • Deploy a reverse proxy rate limiter: Place nginx or HAProxy in front of the Zabbix web server and use limit_req / limit_conn modules to cap request rates per source IP.
    • Enforce strong credentials & MFA: Ensure Zabbix accounts use long, complex passwords. Deploy a reverse proxy that enforces multi-factor authentication (e.g., via SAML/OIDC) before requests reach the Zabbix frontend — this neuters password brute-force entirely.
  2. Patch / Upgrade Steps:

    • Monitor the official Zabbix advisory page (https://support.zabbix.com) and NVD entry for an updated version. As of this report, the vendor fix is not confirmed, meaning no specific patched build number exists to recommend.
    • When a patched release is published, upgrade the Zabbix server, frontend, and all proxies. Test in a staging environment first. If you are on a long-term-support (LTS) branch, verify whether the fix is backported.
  3. Long-Term Hardening:

    • Code review / vendor engagement: Because the flaw stems from a read-modify-write race on the lockout counter, request that your Zabbix vendor account manager confirm they have replaced the counter logic with an atomic operation (e.g., INCR on Redis, or a conditional UPDATE ... WHERE counter < max SQL statement).
    • Centralized authentication: Migrate Zabbix authentication to LDAP/Active Directory or SSO. Centralized identity providers typically have their own lockout mechanisms that are atomic and cannot be bypassed at the application layer.
    • Continuous monitoring: Retain the detection rules above in your SIEM to catch future brute-force attempts even after patching, since monitoring hygiene is essential for early breach detection.

References

Threat Actor Campaigns / Exploit-in-the-Wild Evidence: None identified. CISA KEV does not list this CVE, and no public exploit code, nuclei template, or in-the-wild exploitation evidence exists at the time of writing. EPSS score of 0.00241 (15.1% percentile) confirms a very low probability of active exploitation in the near term. The absence of public PoC reduces but does not eliminate risk, since internal offensive teams or advanced adversaries can reverse-engineer the race condition from the description alone.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:Zabbix
http.title:"Zabbix"
http.html:"zabbix.php"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-1199/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.