CVE-2023-52557

7.5 HIGH

📋 TL;DR

This vulnerability in OpenBSD's npppd (Point-to-Point Protocol daemon) allows remote attackers to cause a denial of service by sending specially crafted L2TP messages with malformed Attribute-Value Pairs. The daemon crashes when processing these messages with incorrect length values. This affects OpenBSD 7.3 systems running npppd before errata 016.

💻 Affected Systems

Products:
  • OpenBSD npppd
Versions: OpenBSD 7.3 before errata 016
Operating Systems: OpenBSD
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems with npppd running and configured to handle L2TP traffic. Systems not using npppd or with L2TP disabled are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote unauthenticated attacker could crash npppd service, disrupting VPN/PPP connectivity for all users and potentially requiring manual service restart.

🟠

Likely Case

Denial of service affecting VPN/PPP connectivity on vulnerable OpenBSD systems, requiring service restart to restore functionality.

🟢

If Mitigated

Minimal impact if patched or if npppd is not exposed to untrusted networks.

🌐 Internet-Facing: HIGH if npppd is exposed to internet with L2TP enabled, as exploit is unauthenticated and low complexity.
🏢 Internal Only: MEDIUM if npppd is used internally, as internal attackers could disrupt VPN services.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending malformed L2TP packets to npppd service. No authentication required. No public exploit code identified.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: OpenBSD 7.3 errata 016

Vendor Advisory: https://ftp.openbsd.org/pub/OpenBSD/patches/7.3/common/016_npppd.patch.sig

Restart Required: Yes

Instructions:

1. Apply the patch from OpenBSD errata 016. 2. Restart npppd service: 'rcctl restart npppd'. 3. Verify service is running: 'rcctl check npppd'.

🔧 Temporary Workarounds

Disable L2TP in npppd

all

If L2TP functionality is not required, disable it in npppd configuration to prevent exploitation.

Edit /etc/npppd/npppd.conf and remove or comment L2TP configuration
Restart npppd: rcctl restart npppd

Network segmentation

all

Restrict network access to npppd service using firewall rules to trusted sources only.

pfctl -t trusted_hosts -T add <trusted_ip>
Add rule to /etc/pf.conf: pass in proto udp from <trusted_hosts> to port 1701

🧯 If You Can't Patch

  • Implement firewall rules to restrict access to npppd UDP port 1701 to trusted networks only.
  • Monitor npppd service health and implement automatic restart if crashes are detected.

🔍 How to Verify

Check if Vulnerable:

Check OpenBSD version and patch level: 'sysctl kern.version'. If output shows '7.3' without errata 016 applied, system is vulnerable if npppd is running.

Check Version:

sysctl kern.version

Verify Fix Applied:

Verify patch applied: 'sysctl kern.version' should show errata 016. Check npppd is running: 'rcctl check npppd'.

📡 Detection & Monitoring

Log Indicators:

  • npppd crash logs in /var/log/messages or /var/log/daemon
  • Unexpected npppd service restarts

Network Indicators:

  • Unexpected L2TP packets to port 1701 from untrusted sources
  • Spike in malformed L2TP packets

SIEM Query:

source="npppd" AND ("crash" OR "segfault" OR "panic")

🔗 References

📤 Share & Export