27-Year-Old OpenBSD Vulnerability Allows Attackers to Bypass PAP Authentication Entirely
A 27-year-old flaw in OpenBSD's sppp(4) subsystem lets attackers bypass PAP authentication entirely, impersonate PPPoE servers, and intercept traffic.

A 27-year-old vulnerability in OpenBSD's networking stack has been disclosed, revealing that attackers can bypass Password Authentication Protocol (PAP) authentication entirely due to a decades-old logic flaw. The issue resides in the sppp_pap_input() function within OpenBSD's sppp(4) subsystem, which manages synchronous PPP links used in PPPoE connectivity. During the PPP authentication phase, systems relying on PAP validate user credentials before establishing a network session. However, researchers found that this validation logic has been fundamentally flawed since its introduction in 1999.
The flaw stems from improper handling of attacker-controlled length fields during credential comparison. The PAP credential validation logic compared attacker-supplied username and password fields using bcmp(), but trusted the length values taken directly from the incoming PAP frame. Since zero-length values pass the existing upper-bound checks, the comparison never fails, and OpenBSD incorrectly accepts the authentication request without verifying any credentials. This effectively allows a complete authentication bypass, enabling unauthorized access to PPP sessions.
A related issue arises from the same design flaw. If an attacker supplies a length larger than the actual allocated credential size, the bcmp() function reads beyond the intended memory boundary. This results in a kernel heap overread, potentially exposing the contents of adjacent memory. This condition became exploitable after a 2009 update replaced fixed-size buffers with dynamically allocated memory, increasing the risk of out-of-bounds access.
The vulnerability is reachable via the PPPoE data path and does not require valid credentials. An attacker operating a rogue PPPoE server within the same broadcast domain can exploit this flaw to impersonate a legitimate server. In a successful attack scenario, the attacker completes PPPoE discovery and negotiation, sends a PAP request with zero-length credentials, the OpenBSD client accepts the request and establishes a connection, and network traffic is routed through the attacker-controlled endpoint. A proof-of-concept demonstrated full session establishment, including IP configuration and ICMP communication, confirming the exploit's real-world feasibility.
The vulnerable code originated from FreeBSD and was initially derived from a Cronyx Engineering implementation dating back to the mid-1990s. Despite multiple updates over the years, the flawed comparison logic remained unchanged for 27 years. The fix mirrors the safer pattern already present in the CHAP handler by adding exact-length pre-checks before any bcmp() call. According to the Argus blog, the issue was responsibly disclosed on June 12, 2026, and fixed within two days. The patch adds strict length-validation checks to reject zero-length and oversized inputs before comparison.
Organizations using OpenBSD, particularly in environments relying on PPPoE authentication, are strongly advised to apply the latest patches immediately to prevent potential exploitation. The discovery underscores the importance of auditing legacy code paths that may have been overlooked for decades, especially in core networking components that handle authentication.