Blame SOURCES/0001-tpm2_import-fix-fixed-AES-key-CVE-2021-3565.patch

6d64d0
From c069e4f179d5e6653a84fb236816c375dca82515 Mon Sep 17 00:00:00 2001
6d64d0
From: William Roberts <william.c.roberts@intel.com>
6d64d0
Date: Fri, 21 May 2021 12:22:31 -0500
6d64d0
Subject: [PATCH] tpm2_import: fix fixed AES key CVE-2021-3565
6d64d0
6d64d0
tpm2_import used a fixed AES key for the inner wrapper, which means that
6d64d0
a MITM attack would be able to unwrap the imported key. Even the
6d64d0
use of an encrypted session will not prevent this. The TPM only
6d64d0
encrypts the first parameter which is the fixed symmetric key.
6d64d0
6d64d0
To fix this, ensure the key size is 16 bytes or bigger and use
6d64d0
OpenSSL to generate a secure random AES key.
6d64d0
6d64d0
Fixes: #2738
6d64d0
6d64d0
Signed-off-by: William Roberts <william.c.roberts@intel.com>
6d64d0
---
6d64d0
 tools/tpm2_import.c | 12 +++++++++++-
6d64d0
 1 file changed, 11 insertions(+), 1 deletion(-)
6d64d0
6d64d0
diff --git a/tools/tpm2_import.c b/tools/tpm2_import.c
6d64d0
index cfb6f207ba9c..f44326c87e7e 100644
6d64d0
--- a/tools/tpm2_import.c
6d64d0
+++ b/tools/tpm2_import.c
6d64d0
@@ -118,7 +118,17 @@ static tool_rc key_import(ESYS_CONTEXT *ectx, TPM2B_PUBLIC *parent_pub,
6d64d0
     TPM2B_DATA enc_sensitive_key = {
6d64d0
         .size = parent_pub->publicArea.parameters.rsaDetail.symmetric.keyBits.sym / 8
6d64d0
     };
6d64d0
-    memset(enc_sensitive_key.buffer, 0xFF, enc_sensitive_key.size);
6d64d0
+
6d64d0
+    if(enc_sensitive_key.size < 16) {
6d64d0
+        LOG_ERR("Calculated wrapping keysize is less than 16 bytes, got: %u", enc_sensitive_key.size);
6d64d0
+        return tool_rc_general_error;
6d64d0
+    }
6d64d0
+
6d64d0
+    int ossl_rc = RAND_bytes(enc_sensitive_key.buffer, enc_sensitive_key.size);
6d64d0
+    if (ossl_rc != 1) {
6d64d0
+        LOG_ERR("RAND_bytes failed: %s", ERR_error_string(ERR_get_error(), NULL));
6d64d0
+        return tool_rc_general_error;
6d64d0
+    }
6d64d0
 
6d64d0
     /*
6d64d0
      * Calculate the object name.
6d64d0
-- 
6d64d0
2.31.0
6d64d0