summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaixiao Yan <haixiao.yan.cn@windriver.com>2024-11-11 14:41:19 +0800
committerArmin Kuster <akuster808@gmail.com>2024-11-24 17:37:58 -0500
commit3d234d9a1276255911c9eb41315e7251d62ac2c7 (patch)
treea9d48a4502e520a154c9207bea64df07266b6081
parent60fc5f65e1530f3a2e5d6e76b9799091d8763127 (diff)
downloadmeta-openembedded-3d234d9a1276255911c9eb41315e7251d62ac2c7.tar.gz
openvpn: upgrade 2.6.10 -> 2.6.12
ChangeLog: https://github.com/OpenVPN/openvpn/blob/v2.6.12/Changes.rst Security fixes: CVE-2024-4877: Windows: harden interactive service pipe. Security scope: a malicious process with "some" elevated privileges (SeImpersonatePrivilege) could open the pipe a second time, tricking openvn GUI into providing user credentials (tokens), getting full access to the account openvpn-gui.exe runs as. CVE-2024-5594: control channel: refuse control channel messages with nonprintable characters in them. Security scope: a malicious openvpn peer can send garbage to openvpn log, or cause high CPU load. CVE-2024-28882: only call schedule_exit() once (on a given peer). Security scope: an authenticated client can make the server "keep the session" even when the server has been told to disconnect this client. Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> [Drop CVE-2024-28882 patch not yet in stable] Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r--meta-networking/recipes-support/openvpn/openvpn/CVE-2024-28882.patch144
-rw-r--r--meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb (renamed from meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb)3
2 files changed, 1 insertions, 146 deletions
diff --git a/meta-networking/recipes-support/openvpn/openvpn/CVE-2024-28882.patch b/meta-networking/recipes-support/openvpn/openvpn/CVE-2024-28882.patch
deleted file mode 100644
index 0b016c89e2..0000000000
--- a/meta-networking/recipes-support/openvpn/openvpn/CVE-2024-28882.patch
+++ /dev/null
@@ -1,144 +0,0 @@
1From 6b0859f669729f4fd328d80bc5c7b4dbbdbf0280 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= <reynir@reynir.dk>
3Date: Thu, 16 May 2024 13:58:08 +0200
4Subject: [PATCH] Only schedule_exit() once
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9If an exit has already been scheduled we should not schedule it again.
10Otherwise, the exit signal is never emitted if the peer reschedules the
11exit before the timeout occurs.
12
13schedule_exit() now only takes the context as argument. The signal is
14hard coded to SIGTERM, and the interval is read directly from the
15context options.
16
17Furthermore, schedule_exit() now returns a bool signifying whether an
18exit was scheduled; false if exit is already scheduled. The call sites
19are updated accordingly. A notable difference is that management is only
20notified *once* when an exit is scheduled - we no longer notify
21management on redundant exit.
22
23This patch was assigned a CVE number after already reviewed and ACKed,
24because it was discovered that a misbehaving client can use the (now
25fixed) server behaviour to avoid being disconnected by means of a
26managment interface "client-kill" command - the security issue here is
27"client can circumvent security policy set by management interface".
28
29This only affects previously authenticated clients, and only management
30client-kill, so normal renegotion / AUTH_FAIL ("your session ends") is not
31affected.
32
33CVE: 2024-28882
34
35Change-Id: I9457f005f4ba970502e6b667d9dc4299a588d661
36Signed-off-by: Reynir Björnsson <reynir@reynir.dk>
37Acked-by: Arne Schwabe <arne-openvpn@rfc2549.org>
38Message-Id: <20240516120434.23499-1-gert@greenie.muc.de>
39URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg28679.html
40Signed-off-by: Gert Doering <gert@greenie.muc.de>
41
42CVE: CVE-2024-28882
43Upstream-Status: Backport [https://github.com/OpenVPN/openvpn/commit/55bb3260c12bae33b6a8eac73cbb6972f8517411]
44
45Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com>
46---
47 src/openvpn/forward.c | 15 +++++++++++----
48 src/openvpn/forward.h | 2 +-
49 src/openvpn/push.c | 12 +++++++-----
50 3 files changed, 19 insertions(+), 10 deletions(-)
51
52diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c
53index e9811b9c81de..29e812ffd17d 100644
54--- a/src/openvpn/forward.c
55+++ b/src/openvpn/forward.c
56@@ -514,17 +514,24 @@ check_server_poll_timeout(struct context *c)
57 }
58
59 /*
60- * Schedule a signal n_seconds from now.
61+ * Schedule a SIGTERM signal c->options.scheduled_exit_interval seconds from now.
62 */
63-void
64-schedule_exit(struct context *c, const int n_seconds, const int signal)
65+bool
66+schedule_exit(struct context *c)
67 {
68+ const int n_seconds = c->options.scheduled_exit_interval;
69+ /* don't reschedule if already scheduled. */
70+ if (event_timeout_defined(&c->c2.scheduled_exit))
71+ {
72+ return false;
73+ }
74 tls_set_single_session(c->c2.tls_multi);
75 update_time();
76 reset_coarse_timers(c);
77 event_timeout_init(&c->c2.scheduled_exit, n_seconds, now);
78- c->c2.scheduled_exit_signal = signal;
79+ c->c2.scheduled_exit_signal = SIGTERM;
80 msg(D_SCHED_EXIT, "Delayed exit in %d seconds", n_seconds);
81+ return true;
82 }
83
84 /*
85diff --git a/src/openvpn/forward.h b/src/openvpn/forward.h
86index 060fc374ca60..245a80292112 100644
87--- a/src/openvpn/forward.h
88+++ b/src/openvpn/forward.h
89@@ -302,7 +302,7 @@ void reschedule_multi_process(struct context *c);
90
91 void process_ip_header(struct context *c, unsigned int flags, struct buffer *buf);
92
93-void schedule_exit(struct context *c, const int n_seconds, const int signal);
94+bool schedule_exit(struct context *c);
95
96 static inline struct link_socket_info *
97 get_link_socket_info(struct context *c)
98diff --git a/src/openvpn/push.c b/src/openvpn/push.c
99index 1b406b9c5311..d220eeb97442 100644
100--- a/src/openvpn/push.c
101+++ b/src/openvpn/push.c
102@@ -204,7 +204,11 @@ receive_exit_message(struct context *c)
103 * */
104 if (c->options.mode == MODE_SERVER)
105 {
106- schedule_exit(c, c->options.scheduled_exit_interval, SIGTERM);
107+ if (!schedule_exit(c))
108+ {
109+ /* Return early when we don't need to notify management */
110+ return;
111+ }
112 }
113 else
114 {
115@@ -391,7 +395,7 @@ __attribute__ ((format(__printf__, 4, 5)))
116 void
117 send_auth_failed(struct context *c, const char *client_reason)
118 {
119- if (event_timeout_defined(&c->c2.scheduled_exit))
120+ if (!schedule_exit(c))
121 {
122 msg(D_TLS_DEBUG, "exit already scheduled for context");
123 return;
124@@ -401,8 +405,6 @@ send_auth_failed(struct context *c, const char *client_reason)
125 static const char auth_failed[] = "AUTH_FAILED";
126 size_t len;
127
128- schedule_exit(c, c->options.scheduled_exit_interval, SIGTERM);
129-
130 len = (client_reason ? strlen(client_reason)+1 : 0) + sizeof(auth_failed);
131 if (len > PUSH_BUNDLE_SIZE)
132 {
133@@ -492,7 +494,7 @@ send_auth_pending_messages(struct tls_multi *tls_multi,
134 void
135 send_restart(struct context *c, const char *kill_msg)
136 {
137- schedule_exit(c, c->options.scheduled_exit_interval, SIGTERM);
138+ schedule_exit(c);
139 send_control_channel_string(c, kill_msg ? kill_msg : "RESTART", D_PUSH);
140 }
141
142--
1432.34.1
144
diff --git a/meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb b/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb
index 9b551d3ca2..af237280ea 100644
--- a/meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb
+++ b/meta-networking/recipes-support/openvpn/openvpn_2.6.12.bb
@@ -10,12 +10,11 @@ inherit autotools systemd update-rc.d pkgconfig
10SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \ 10SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
11 file://0001-configure.ac-eliminate-build-path-from-openvpn-versi.patch \ 11 file://0001-configure.ac-eliminate-build-path-from-openvpn-versi.patch \
12 file://openvpn \ 12 file://openvpn \
13 file://CVE-2024-28882.patch \
14 " 13 "
15 14
16UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads" 15UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
17 16
18SRC_URI[sha256sum] = "1993bbb7b9edb430626eaa24573f881fd3df642f427fcb824b1aed1fca1bcc9b" 17SRC_URI[sha256sum] = "1c610fddeb686e34f1367c347e027e418e07523a10f4d8ce4a2c2af2f61a1929"
19 18
20CVE_STATUS[CVE-2020-27569] = "not-applicable-config: Applies only Aviatrix OpenVPN client, not openvpn" 19CVE_STATUS[CVE-2020-27569] = "not-applicable-config: Applies only Aviatrix OpenVPN client, not openvpn"
21 20