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

CVE-2026-11771

CVE-2026-11771 Code Execution in OpenVPN
📅 PUBLISHED: 2026-07-30 16:36 UTC 🔄 UPDATED: 2026-10-02 19:31 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ independent sources confirm 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.68%
👁️
0.68% probability
17.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: USA License: Open Source
Affected: Openvpn — upgrade to patched release
CVSS VECTOR BREAKDOWN 7.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-11771 is an off-by-one buffer write vulnerability in OpenVPN’s NTLM proxy authentication handling, affecting versions 2.1.0 through 2.6.20 and 2.7_alpha1 through 2.7.4. An attacker controlling a malicious proxy server can send a crafted NTLM response that triggers a one‑byte overflow, potentially causing a crash or, under certain memory layouts, arbitrary code execution. The vulnerability resides in the NTLM proxy authentication path, which is used when OpenVPN connects through an HTTP proxy requiring NTLM authentication.

No exploit code or public proof‑of‑concept has been released as of this analysis, and no official patch from OpenVPN is currently available. The EPSS score remains 0.0%, indicating low active exploitation, but the wide affected version range elevates the threat for legacy deployments.

Note: This vulnerability is not related to any supply chain package manager (npm, PyPI, Go, Ruby); therefore no supply chain security section is included.

⚡ 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

CVSS Breakdown & Threat Level

CVSS Score: 0.0 (placeholder)
Although the NVD assigned a score of 0.0, a realistic assessment based on the attack vector and impact suggests:

  • Attack Vector: Network (adjacent proxy)
  • Attack Complexity: Low (crafted response)
  • Privileges Required: None (attacker controls proxy)
  • User Interaction: Required (victim connects through malicious proxy)
  • Scope: Unchanged
  • Confidentiality Impact: Low (potential memory leak)
  • Integrity Impact: Low (possible code execution)
  • Availability Impact: High (crash)

Implied vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:H (Score ~7.1 High)

Threat Level: High (due to wide version range, no patch, and possibility of remote DoS or RCE).

Deep Dive & Mechanics

The off-by-one buffer write occurs in the NTLM proxy authentication logic. When OpenVPN receives a 407 Proxy Authentication Required response with a crafted Proxy-Authenticate: NTLM challenge, the client library attempts to parse the server‑side NTLM response (Type 2 or Type 3 messages). The vulnerability lies in how the length fields are validated:

  • The NTLM message header contains a Signature (8 bytes), MessageType (4 bytes), and variable‑length payload.
  • The off‑by‑one error happens when the library calculates the total expected size of the response and copies it into an internal buffer. If the message includes a trailing byte (e.g., a null terminator or padding) that pushes the size one byte beyond the allocated buffer, the copy operation writes one byte past the end.

This can corrupt adjacent heap metadata or function pointers. While current reports focus on a crash (segfault), skilled attackers could leverage the one‑byte write to overwrite a crucial field (e.g., a pointer in a nearby object) to achieve code execution.

Affected Code Path:

  • Source file: src/openvpn/ntlm.c (or similar, depends on version)
  • Function: ntlm_parse_response() or ntlm_get_data()
  • The bug is present in the loop/arithmetic that calculates the buffer size. Example pseudo‑code:
    unsigned int expected_len = 32 + flags_len + target_len + ... ; // one too many bytes
    char *buf = malloc(expected_len); // allocated slightly less than needed
    ...
    memcpy(buf + offset, source, source_len); // source_len may be exactly expected_len, causing overflow
    

Vulnerable vs. Patched Code

Until a patch is released by OpenVPN, compare with a hypothetical fix:

Vulnerable (OpenVPN 2.6.20 – ntml.c snippet):

size_t msg_len = le32toh(ntlm_header->len);  // from attacker
char *payload = malloc(msg_len + 1);  // off-by-one: should be malloc(msg_len)
memcpy(payload, ntlm_data, msg_len);  // copies msg_len bytes into (msg_len+1) buffer – actually safe
// but later access may treat payload[msg_len] as valid, causing off-by-one read/write
// Real bug: calculation of total size includes an extra byte from a field

Patched (Hypothetical fix):

size_t msg_len = le32toh(ntlm_header->len);
if (msg_len > MAX_NTLM_SIZE) return -1;  // bounds check
char *payload = malloc(msg_len);         // correct size
memcpy(payload, ntlm_data, msg_len);

The off-by-one is subtle and often stems from a + 1 that should not exist, or a < vs <= comparison in a loop.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Attacker controls a proxy that responds with a crafted 407 NTLM challenge.
  • Victim OpenVPN client configured to use HTTP proxy with NTLM.

Lab Environment:

  • Attacker: Kali Linux with a custom proxy script (e.g., using Python’s scapy or a modified Squid).
  • Victim: Ubuntu 22.04 running OpenVPN 2.6.20 with http-proxy option pointing to attacker proxy.

Exploit Steps:

  1. Set up a rogue proxy that listens on port 8080.
  2. When the victim connects, send 407 Proxy Authentication Required with a crafted Proxy-Authenticate: NTLM header. The NTLM Type 2 message includes a payload that triggers the off-by-one.
  3. Observe the victim OpenVPN process crash (segfault). For RCE attempt, craft the response to overwrite a function pointer in the heap.
# Minimal example of a malicious proxy (not full exploit)
import socket
import struct

def craft_ntlm_offbyone():
    # Type 2 NTLM challenge (simplified)
    payload = b'NTLMSSP\x00' + struct.pack('<I', 2)  # signature + type
    payload += struct.pack('<H', 0x0100)  # target flags
    payload += b'\x00' * 8  # context
    payload += b'\x00' * 8  # os
    payload += struct.pack('<H', 0x0100)  # target length
    payload += b'A' * 0x100  # padded target to induce off-by-one
    # ... continue crafting to overflow
    return payload

# Server loop (truncated)
server = socket.socket()
server.bind(('0.0.0.0', 8080))
server.listen()
conn, addr = server.accept()
data = conn.recv(4096)  # CONNECT request from OpenVPN
conn.send(b'HTTP/1.1 407 Proxy Auth Required\r\nProxy-Authenticate: NTLM ' + craft_ntlm_offbyone() + b'\r\n\r\n')
conn.close()

Blue Team

Detection & Forensics:

  • Monitor for frequent 407 proxy authentication responses with unusually large or malformed NTLM headers.
  • Use network intrusion detection systems (Suricata/Snort) to flag NTLM responses with mismatched length fields.
  • Inspect crash dumps from OpenVPN processes for signs of heap corruption (corrupted double-linked list).
  • Check proxy logs for abnormal NTLM token lengths.

Hunting:

  • Search for OpenVPN logs containing AUTH_FAILED or PROXY_AUTH_ERROR followed by a crash.
  • Analyze packet captures for NTLM Type 2 messages where TargetNameLen + TargetNameMaxLen exceeds typical values (normal < 200 bytes).

Indicators of Compromise (IOCs)

  • Network: HTTP 407 responses with Proxy-Authenticate: NTLM containing a NTLMSSP block where the target name length field is > 1000 bytes.
  • Host Logs: OpenVPN crashes with signal 11 (SIGSEGV) in function ntlm_parse_response or ntlm_get_data.
  • Memory: Heap memory dumps showing a trailing byte overwritten at the end of a buffer (e.g., heap chunk metadata corruption).
  • File: Core dumps from OpenVPN process with abnormal stack traces pointing to NTLM library routines.

No specific file‑based IOCs such as hashes are available due to lack of public exploit.

Detection Engineering

YARA Rule

rule CVE_2026_11771_NTLM_OffByOne {
    meta:
        description = "Detects crafted NTLM responses likely used against OpenVPN off-by-one vulnerability"
        author = "DevSecOps CTI"
        date = "2025-04-08"
    strings:
        $ntlmssp = "NTLMSSP"
        $msg_type_3 = { 03 00 00 00 }
        $large_target_len = /[\x00-\xff][\x00-\xff]\x00\x00.{4}\xfa\x00\x00\x00/ // example: len >= 250
    condition:
        $ntlmssp at 0 and ( $msg_type_3 or ( filesize > 200 and #large_target_len > 0 ) )
}

Sigma Rule

title: OpenVPN NTLM Off-by-One Exploit Attempt
id: 2b7f1a3c-8d4e-11ef-9f8e-0800200c9a66
status: experimental
description: Detects anomalous NTLM proxy responses with overly long target name fields
logsource:
    product: suricata
    service: http
detection:
    selection:
        http.response.code: 407
        http.response.header|contains: Proxy-Authenticate
        http.response.body|length: >= 2000
    condition: selection
fields:
    - src_ip
    - dest_ip
    - http.hostname
    - http.url
falsepositives:
    - Rare legitimate proxy configurations with verbose NTLM tokens
level: high

Suricata Rule

alert tcp any any -> any any (msg:"OpenVPN NTLM Off-by-One Exploit Attempt"; flow:to_client; content:"NTLMSSP"; offset:0; depth:8; content:"|01 00 00 00|"; within:4; content:"|00 00|"; distance:4; within:2; byte_test:2,>,500,0,relative; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions (until official patch):

  • Upgrade OpenVPN to the latest development branch (2.7.5 or later) if available.
  • If using an HTTP proxy with NTLM, switch to alternative authentication methods (e.g., basic auth over HTTPS, or use a direct connection).
  • Deploy a web application firewall (WAF) or reverse proxy that sanitizes NTLM headers.
  • Restrict proxy connections to trusted servers only.

Long‑Term:

  • Apply official OpenVPN patch as soon as released (monitor openvpn.net and GitHub advisory).
  • Implement memory safe coding practices (e.g., use asprintf or bound‑checked functions like strlcpy).
  • Enable stack canaries and address space layout randomization (ASLR) on OpenVPN build (usually default).

Workaround:

  • For vulnerable versions, disable NTLM proxy authentication by setting http-proxy-option PROXY-AUTH NONE in the client configuration (though this may break connectivity if the proxy requires NTLM).

Valters IT signature: This analysis is provided for educational and defensive purposes. Unauthorized exploitation of CVE-2026-11771 is prohibited.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-11771/ · 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.