Hi, On Tue, Aug 15, 2017 at 10:10:32AM +0200, Steffan Karger wrote: [..] > To all: following <54fc26bb.2000...@karger.me> and commit 1ce06386, I > think it really is time to remove key method 1 from the master branch. > > Attached a proposed patch to fix this issue in release/2.4 and master. > > -Steffan
> From f7390bf97af7f1977547586529be1d51adde4c67 Mon Sep 17 00:00:00 2001 > From: Steffan Karger <steffan.kar...@fox-it.com> > Date: Tue, 15 Aug 2017 10:04:33 +0200 > Subject: [PATCH] CVE-2017-xxx: fix bounds check in read_key() > > The bounds check in read_key() was performed after using the value, instead > of before. If 'key-method 1' is used, this allowed an attacker to send a > malformed packet to trigger a stack buffer overflow. > > Fix this by moving the input validation to before the writes. > > Note that 'key-method 1' has been replaced by 'key method 2' as the default > in OpenVPN 2.0 (released on 2005-04-17), and explicitly deprecated in 2.4 > and marked for removal in 2.5. This should limit the amount of users > impacted by this issue. > > Signed-off-by: Steffan Karger <steffan.kar...@fox-it.com> > --- > src/openvpn/crypto.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/src/openvpn/crypto.c b/src/openvpn/crypto.c > index cc3c7b6..0ebbcd0 100644 > --- a/src/openvpn/crypto.c > +++ b/src/openvpn/crypto.c > @@ -1653,6 +1653,11 @@ read_key(struct key *key, const struct key_type *kt, > struct buffer *buf) > goto read_err; > } > > + if (cipher_length != kt->cipher_length || hmac_length != kt->hmac_length) > + { > + goto key_len_err; > + } > + > if (!buf_read(buf, key->cipher, cipher_length)) > { > goto read_err; > @@ -1662,11 +1667,6 @@ read_key(struct key *key, const struct key_type *kt, > struct buffer *buf) > goto read_err; > } > > - if (cipher_length != kt->cipher_length || hmac_length != kt->hmac_length) > - { > - goto key_len_err; > - } > - > return 1; > > read_err: ACK. Fixes the problem at hand and is generally good housekeeping to check your things first :-) Subject: and commit message needs "real" CVE message. gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany g...@greenie.muc.de fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel