]> git.feebdaed.xyz Git - 0xmirror/openvpn.git/commit
interactive.c: harden pipe handling against misbehaving clients
authorLev Stipakov <lev@openvpn.net>
Mon, 24 Nov 2025 10:09:23 +0000 (12:09 +0200)
committerGert Doering <gert@greenie.muc.de>
Fri, 28 Nov 2025 12:52:17 +0000 (13:52 +0100)
commit6088451b616be313bd47cfed8d82d47bd6e17d93
treec47766b61a131ee43722f16f76ad4e626f177652
parent7791f5358a5574d4ef1bd27e2d52300c9d98bd72
interactive.c: harden pipe handling against misbehaving clients

 - Handle ConnectNamedPipe ERROR_NO_DATA as a normal
   connect/drop race: log the drop, disconnect/reset
   that instance, and keep listening instead of letting
   a trivial local DoS stop the service.

 - Add a timed peek for startup data so a client that
   connects and sends nothing is timed out (IO_TIMEOUT)
   and rejected, instead of leaving a worker thread blocked
   forever and piling up handles.

 - Protect the accept loop from resource exhaustion: before
   spawning a worker, check the wait set and reject the client
   if adding another handle would exceed MAXIMUM_WAIT_OBJECTS;
   also skip FlushFileBuffers when no startup data was received
   to avoid hangs on silent clients.

Without these fixes, a malicious local windows user can make the OpenVPN
Interactive Service exit-on-error, thus breaking all OpenVPN connections
until the service is restarted (or the system rebooted).  Thus this has
been classified as "local denial of service" and CVE-2025-13751 has been
assigned.

CVE: 2025-13751
Change-Id: Id6a13b0c8124117bcea2926b16607ef39344015a
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Selva Nair <selva.nair@gmail.com>
src/openvpnserv/interactive.c