Branch synchronization with RHEL 8.8.0
This commit is contained in:
		
							parent
							
								
									b72901caa1
								
							
						
					
					
						commit
						034d5762be
					
				
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,2 +1,5 @@
 | 
				
			|||||||
 | 
					/libtpms-20191018.tar.xz
 | 
				
			||||||
 | 
					/libtpms-20200527.tar.xz
 | 
				
			||||||
 | 
					/libtpms-20200818.tar.xz
 | 
				
			||||||
 | 
					/libtpms-20201106.tar.xz
 | 
				
			||||||
SOURCES/libtpms-20211126.tar.xz
 | 
					SOURCES/libtpms-20211126.tar.xz
 | 
				
			||||||
/libtpms-20211126.tar.xz
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					From 324dbb4c27ae789c73b69dbf4611242267919dd4 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Stefan Berger <stefanb@linux.ibm.com>
 | 
				
			||||||
 | 
					Date: Mon, 20 Feb 2023 14:41:10 -0500
 | 
				
			||||||
 | 
					Subject: [PATCH] tpm2: Check size of buffer before accessing it (CVE-2023-1017
 | 
				
			||||||
 | 
					 & -1018)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Check that there are sufficient bytes in the buffer before reading the
 | 
				
			||||||
 | 
					cipherSize from it. Also, reduce the bufferSize variable by the number
 | 
				
			||||||
 | 
					of bytes that make up the cipherSize to avoid reading and writing bytes
 | 
				
			||||||
 | 
					beyond the buffer in subsequent steps that do in-place decryption.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This fixes CVE-2023-1017 & CVE-2023-1018.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 src/tpm2/CryptUtil.c | 6 ++++++
 | 
				
			||||||
 | 
					 1 file changed, 6 insertions(+)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/src/tpm2/CryptUtil.c b/src/tpm2/CryptUtil.c
 | 
				
			||||||
 | 
					index 002fde0..8fae5b6 100644
 | 
				
			||||||
 | 
					--- a/src/tpm2/CryptUtil.c
 | 
				
			||||||
 | 
					+++ b/src/tpm2/CryptUtil.c
 | 
				
			||||||
 | 
					@@ -830,6 +830,10 @@ CryptParameterDecryption(
 | 
				
			||||||
 | 
					 			  + sizeof(session->sessionKey.t.buffer)));
 | 
				
			||||||
 | 
					     TPM2B_HMAC_KEY          key;            // decryption key
 | 
				
			||||||
 | 
					     UINT32                  cipherSize = 0; // size of cipher text
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+    if (leadingSizeInByte > bufferSize)
 | 
				
			||||||
 | 
					+	return TPM_RC_INSUFFICIENT;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					     // Retrieve encrypted data size.
 | 
				
			||||||
 | 
					     if(leadingSizeInByte == 2)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					@@ -837,6 +841,7 @@ CryptParameterDecryption(
 | 
				
			||||||
 | 
					 	    // data to be decrypted
 | 
				
			||||||
 | 
					 	    cipherSize = (UINT32)BYTE_ARRAY_TO_UINT16(buffer);
 | 
				
			||||||
 | 
					 	    buffer = &buffer[2];   // advance the buffer
 | 
				
			||||||
 | 
					+	    bufferSize -= 2;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 #ifdef  TPM4B
 | 
				
			||||||
 | 
					     else if(leadingSizeInByte == 4)
 | 
				
			||||||
 | 
					@@ -844,6 +849,7 @@ CryptParameterDecryption(
 | 
				
			||||||
 | 
					 	    // the leading size is four bytes so get the four byte size field
 | 
				
			||||||
 | 
					 	    cipherSize = BYTE_ARRAY_TO_UINT32(buffer);
 | 
				
			||||||
 | 
					 	    buffer = &buffer[4];   //advance pointer
 | 
				
			||||||
 | 
					+	    bufferSize -= 4;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					     else
 | 
				
			||||||
 | 
					-- 
 | 
				
			||||||
 | 
					2.39.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
From e4261984374556da65c9d46097d5a1200b335c0c Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Juergen Repp <juergen.repp@sit.fraunhofer.de>
 | 
					 | 
				
			||||||
Date: Sat, 19 Feb 2022 12:59:32 +0100
 | 
					 | 
				
			||||||
Subject: [PATCH] tpm2: Do not call EVP_PKEY_CTX_set0_rsa_oaep_label() for
 | 
					 | 
				
			||||||
 label of size 0 (OSSL 3)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Openssl 3.0 did return an error if EVP_PKEY_CTX_set0_rsa_oaep_label was called
 | 
					 | 
				
			||||||
with label size 0. The function should only be called if the size of the label
 | 
					 | 
				
			||||||
is greater 0.
 | 
					 | 
				
			||||||
With this fix TPM2_RSA_Encrypt/Decrypt did work with OpenSSL 1.1 and 3.0
 | 
					 | 
				
			||||||
for encryption without label.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Juergen Repp <juergen.repp@sit.fraunhofer.de>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 src/tpm2/crypto/openssl/CryptRsa.c | 5 ++---
 | 
					 | 
				
			||||||
 1 file changed, 2 insertions(+), 3 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/src/tpm2/crypto/openssl/CryptRsa.c b/src/tpm2/crypto/openssl/CryptRsa.c
 | 
					 | 
				
			||||||
index 4ed04384feb0..b5d6b6c3be82 100644
 | 
					 | 
				
			||||||
--- a/src/tpm2/crypto/openssl/CryptRsa.c
 | 
					 | 
				
			||||||
+++ b/src/tpm2/crypto/openssl/CryptRsa.c
 | 
					 | 
				
			||||||
@@ -1356,10 +1356,9 @@ CryptRsaEncrypt(
 | 
					 | 
				
			||||||
                 if (tmp == NULL)
 | 
					 | 
				
			||||||
                     ERROR_RETURN(TPM_RC_FAILURE);
 | 
					 | 
				
			||||||
                 memcpy(tmp, label->buffer, label->size);
 | 
					 | 
				
			||||||
+                if (EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, tmp, label->size) <= 0)
 | 
					 | 
				
			||||||
+                    ERROR_RETURN(TPM_RC_FAILURE);
 | 
					 | 
				
			||||||
             }
 | 
					 | 
				
			||||||
-            // label->size == 0 is supported
 | 
					 | 
				
			||||||
-            if (EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, tmp, label->size) <= 0)
 | 
					 | 
				
			||||||
-                ERROR_RETURN(TPM_RC_FAILURE);
 | 
					 | 
				
			||||||
             tmp = NULL;
 | 
					 | 
				
			||||||
             break;
 | 
					 | 
				
			||||||
           default:
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.36.0.44.g0f828332d5ac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
From 3d2bbe2f1947784506ba0a7f9e8ab81eefb69929 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Ross Lagerwall <ross.lagerwall@citrix.com>
 | 
					 | 
				
			||||||
Date: Mon, 23 May 2022 14:16:57 +0100
 | 
					 | 
				
			||||||
Subject: [PATCH] tpm2: Fix size check in CryptSecretDecrypt
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Check the secret size against the size of the buffer, not the size
 | 
					 | 
				
			||||||
member that has not been set yet.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reported by Coverity.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 src/tpm2/CryptUtil.c | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/src/tpm2/CryptUtil.c b/src/tpm2/CryptUtil.c
 | 
					 | 
				
			||||||
index 9879f918acb6..002fde0987a9 100644
 | 
					 | 
				
			||||||
--- a/src/tpm2/CryptUtil.c
 | 
					 | 
				
			||||||
+++ b/src/tpm2/CryptUtil.c
 | 
					 | 
				
			||||||
@@ -732,7 +732,7 @@ CryptSecretDecrypt(
 | 
					 | 
				
			||||||
 					     nonceCaller->t.size);
 | 
					 | 
				
			||||||
 			      }
 | 
					 | 
				
			||||||
 			  // make sure secret will fit
 | 
					 | 
				
			||||||
-			  if(secret->t.size > data->t.size)
 | 
					 | 
				
			||||||
+			  if(secret->t.size > sizeof(data->t.buffer))
 | 
					 | 
				
			||||||
 			      return TPM_RC_FAILURE;
 | 
					 | 
				
			||||||
 			  data->t.size = secret->t.size;
 | 
					 | 
				
			||||||
 			  // CFB decrypt, using nonceCaller as iv
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.36.0.44.g0f828332d5ac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
# recipients: kvmqe-ci, yfu, qcheng
 | 
					 | 
				
			||||||
--- !Policy
 | 
					 | 
				
			||||||
product_versions:
 | 
					 | 
				
			||||||
  - rhel-9
 | 
					 | 
				
			||||||
decision_context: osci_compose_gate
 | 
					 | 
				
			||||||
subject_type: brew-build
 | 
					 | 
				
			||||||
rules:
 | 
					 | 
				
			||||||
  - !PassingTestCaseRule {test_case_name: kvm-ci.libtpms.x86_64.brew-build.gating.tier1.functional}
 | 
					 | 
				
			||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Name:           libtpms
 | 
					Name:           libtpms
 | 
				
			||||||
Version:        0.9.1
 | 
					Version:        0.9.1
 | 
				
			||||||
Release:        1.%{gitdate}git%{gitversion}%{?dist}
 | 
					Release:        2.%{gitdate}git%{gitversion}%{?dist}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Summary: Library providing Trusted Platform Module (TPM) functionality
 | 
					Summary: Library providing Trusted Platform Module (TPM) functionality
 | 
				
			||||||
License:        BSD
 | 
					License:        BSD
 | 
				
			||||||
@ -11,6 +11,7 @@ Url:            http://github.com/stefanberger/libtpms
 | 
				
			|||||||
Source0:        libtpms-%{gitdate}.tar.xz
 | 
					Source0:        libtpms-%{gitdate}.tar.xz
 | 
				
			||||||
ExcludeArch:    i686
 | 
					ExcludeArch:    i686
 | 
				
			||||||
Patch0003:      0001-tpm2-When-writing-state-initialize-s_ContextSlotMask.patch
 | 
					Patch0003:      0001-tpm2-When-writing-state-initialize-s_ContextSlotMask.patch
 | 
				
			||||||
 | 
					Patch0004:      0001-tpm2-Check-size-of-buffer-before-accessing-it-CVE-20.patch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BuildRequires:  openssl-devel
 | 
					BuildRequires:  openssl-devel
 | 
				
			||||||
BuildRequires:  pkgconfig gawk sed
 | 
					BuildRequires:  pkgconfig gawk sed
 | 
				
			||||||
@ -58,6 +59,11 @@ find %{buildroot} -type f -name '*.la' | xargs rm -f -- || :
 | 
				
			|||||||
%{_mandir}/man3/*
 | 
					%{_mandir}/man3/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%changelog
 | 
					%changelog
 | 
				
			||||||
 | 
					* Tue Mar 21 2023 Marc-André Lureau <marcandre.lureau@redhat.com> - 0.9.1-2.20211126git1ff6fe1f43
 | 
				
			||||||
 | 
					- Backport "tpm2: Check size of buffer before accessing it" (CVE-2023-1017 & CVE-2023-1018)
 | 
				
			||||||
 | 
					  Resolves: rhbz#2173964
 | 
				
			||||||
 | 
					  Resolves: rhbz#2173970
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Thu Jul 28 2022 Marc-André Lureau <marcandre.lureau@redhat.com> - 0.9.1-1.20211126git1ff6fe1f43
 | 
					* Thu Jul 28 2022 Marc-André Lureau <marcandre.lureau@redhat.com> - 0.9.1-1.20211126git1ff6fe1f43
 | 
				
			||||||
- Backport s_ContextSlotMask initialization fix
 | 
					- Backport s_ContextSlotMask initialization fix
 | 
				
			||||||
  Resolves: rhbz#2111433
 | 
					  Resolves: rhbz#2111433
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,6 @@ rm -rf $DIRNAME
 | 
				
			|||||||
git clone ${REF:+--reference $REF} \
 | 
					git clone ${REF:+--reference $REF} \
 | 
				
			||||||
	https://github.com/stefanberger/libtpms $DIRNAME
 | 
						https://github.com/stefanberger/libtpms $DIRNAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set -x
 | 
					 | 
				
			||||||
GIT_DIR=$DIRNAME/.git git archive --format=tar --prefix=$DIRNAME/ ${1:-HEAD} \
 | 
					GIT_DIR=$DIRNAME/.git git archive --format=tar --prefix=$DIRNAME/ ${1:-HEAD} \
 | 
				
			||||||
	| xz > $DIRNAME.tar.xz
 | 
						| xz > $DIRNAME.tar.xz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user