Hello, this concerns key_method 1. I know it's deprecated, but reporting it just in case people still use it..
So key_method_1_read() calls read_key() which doesn't perform adequate bounds checks. cipher_length and hmac_length are specified by the peer: 1643 uint8_t cipher_length; 1644 uint8_t hmac_length; 1645 1646 CLEAR(*key); 1647 if (!buf_read(buf, &cipher_length, 1)) 1648 { 1649 goto read_err; 1650 } 1651 if (!buf_read(buf, &hmac_length, 1)) 1652 { 1653 goto read_err; 1654 } And this many bytes of data are then read into key->cipher and key->hmac: 1656 if (!buf_read(buf, key->cipher, cipher_length)) 1657 { 1658 goto read_err; 1659 } 1660 if (!buf_read(buf, key->hmac, hmac_length)) 1661 { 1662 goto read_err; 1663 } key->hmac is only 64 bytes. So it's trivial to overflow key->hmac. Guido ------------------------------------------------------------------------------ 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