oss-sec mailing list archives
Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode
From: Mike Santillana <michael.santillana () wework com>
Date: Mon, 19 Sep 2016 15:59:31 -0400
Hi Seth, The random_iv method automatically sets the IV to be used by the cipher: http://ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/Cipher.html#method-i-random_iv. The reason I do "iv = cipher.random_iv" is to get the IV value so I can print the value (or traditionally, pass it along so it can be used in the decryption phase). I hope this clears the example up a bit. Thanks *WeWork | Mike Santillana* Security Engineer 845-709-5655 www.wework.com Create Your Life's Work On Mon, Sep 19, 2016 at 3:53 PM, Seth Arnold <seth.arnold () canonical com> wrote:
On Mon, Sep 19, 2016 at 03:20:02PM -0400, Mike Santillana wrote:An IV reuse bug was discovered in Ruby's OpenSSL library when using aes-gcm. When encrypting data with aes-*-gcm, if the IV is set before setting the key, the cipher will default to using a static IV. Thiscreatesa static nonce and since aes-gcm is a stream cipher, this can lead toknowncryptographic issues. The documentation does not appear to specify the order of operations when setting the key and IV [1]. As an example, see the following insecurecodesnippet below: Vulnerable Code: def encrypt(plaintext) cipher = OpenSSL::Cipher.new('aes-256-gcm') iv = cipher.random_iv # Notice here the IV is set before the key cipher.key = '11111111111111111111111111111111' cipher.auth_data = "" ciphertext = cipher.update(plaintext) + cipher.final tag = cipher.auth_tag puts "[+] Encrypting: #{plaintext}" puts "[+] CipherMessage (IV | Tag | Ciphertext): #{bin2hex(iv)} | #{bin2hex(tag)} | #{bin2hex(ciphertext)}" endHello, I think you have a mistake in this sample code, 'iv' is assigned but never used (aside from being printed). Your github code is far more complicated but looks like it is doing the right thing. Thanks
Current thread:
- CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Mike Santillana (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Seth Arnold (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Mike Santillana (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Brandon Perry (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Reed Loden (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Mike Santillana (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Mike Santillana (Sep 30)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Mike Santillana (Sep 19)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode cve-assign (Sep 30)
- Re: CVE Request - Ruby OpenSSL Library - IV Reuse in GCM Mode Seth Arnold (Sep 19)