Page MenuHomeVyOS Platform

Accel-PPP: Unvalidated PPP header length in control protocol response handlers causes heap information disclosure
Closed, ResolvedPublic

Description

Multiple PPP control protocol response handlers in accel-ppp trust the length field from incoming packets to determine how many bytes to send in the response. This field is attacker-controlled and is not validated against the number of bytes actually received. When an attacker sends a minimal packet but sets the PPP header length field to a large value (e.g. 1400), the server responds with up to 1402 bytes: the legitimate response data followed by heap memory residue from the PPP receive buffer.

The vulnerability affects 6+ functions across 4 PPP sub-protocols (LCP, IPCP, IPv6CP, CCP), through both kernel send paths (ppp_chan_send for LCP and ppp_unit_send for NCP). Four vectors have been independently confirmed in lab testing; two additional NCP vectors are code-identical.

The heap memory exposed belongs to the PPP receive buffer (ppp->buf), a per-session 8192-byte buffer allocated from accel-ppp's internal memory pool. These buffers are reused across sessions without being zeroed. When a subscriber disconnects, their buffer -- still containing authentication credentials, negotiation parameters, and session data -- is returned to the pool. The next connecting client (the attacker) receives a recycled buffer populated with the previous subscriber's data.

The three LCP vectors require only a standard PPP connection up to the LCP phase. Authentication is not needed -- LCP is exchanged before any authentication takes place. The NCP vectors (IPCP, IPv6CP, CCP) require LCP to be completed but are still reachable before or during authentication.

Details

Version
-
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Security vulnerability

Event Timeline

RC changed the task status from Open to In progress.
RC triaged this task as High priority.
RC created this object in space S1 VyOS Public.
RC created this object with visibility "Administrators".
Viacheslav changed the visibility from "Administrators" to "Public (No Login Required)".Mon, Oct 5, 8:57 AM
Viacheslav moved this task from Need Triage to Completed on the VyOS Rolling board.