Browse code

interactive.c: disable remote access to the service pipe

Remote access to the service pipe is not needed and might
be a potential attack vector.

For example, if an attacker manages to get credentials for
a user which is the member of "OpenVPN Administrators" group
on a victim machine, an attacker might be able to communicate
with the privileged interactive service on a victim machine
and start openvpn processes remotely.

CVE: 2024-24974

Microsoft case number: 85925

Reported-by: Vladimir Tokarev <vtokarev@microsoft.com>
Change-Id: I8739c5f127e9ca0683fcdbd099dba9896ae46277
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Heiko Hund <heiko@openvpn.net>
Message-Id: <20240319151723.936-2-lev@openvpn.net>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg28419.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
(cherry picked from commit 2c1de0f0803360c0a6408f754066bd3a6fb28237)

Lev Stipakov authored on 2024/03/20 00:16:07
Showing 1 changed files
... ...
@@ -2168,7 +2168,7 @@ CreateClientPipeInstance(VOID)
2168 2168
 
2169 2169
     openvpn_swprintf(pipe_name, _countof(pipe_name), TEXT("\\\\.\\pipe\\" PACKAGE "%ls\\service"), service_instance);
2170 2170
     pipe = CreateNamedPipe(pipe_name, flags,
2171
-                           PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
2171
+                           PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_REJECT_REMOTE_CLIENTS,
2172 2172
                            PIPE_UNLIMITED_INSTANCES, 1024, 1024, 0, NULL);
2173 2173
     if (pipe == INVALID_HANDLE_VALUE)
2174 2174
     {