-
Notifications
You must be signed in to change notification settings - Fork 505
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
EDK2's Network Package is susceptible to a predictable TCP Initial Sequence Number. This vulnerability can be exploited by an attacker to gain unauthorized access and potentially lead to a loss of Confidentiality. References: https://nvd.nist.gov/vuln/detail/CVE-2023-45237 Upstream-patches: tianocore/edk2@cf07238 tianocore/edk2@4c4ceb2 Signed-off-by: Soumya Sambu <[email protected]>
- Loading branch information
1 parent
23a87c5
commit 6f8bdaa
Showing
3 changed files
with
1,368 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
From cf07238e5fa4f8b1138ac1c9e80530b4d4e59f1c Mon Sep 17 00:00:00 2001 | ||
From: Pierre Gondois <[email protected]> | ||
Date: Fri, 11 Aug 2023 16:33:06 +0200 | ||
Subject: [PATCH] MdePkg/Rng: Add GUID to describe Arm Rndr Rng algorithms | ||
|
||
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4441 | ||
|
||
The EFI_RNG_PROTOCOL can rely on the RngLib. The RngLib has multiple | ||
implementations, some of them are unsafe (e.g. BaseRngLibTimerLib). | ||
To allow the RngDxe to detect when such implementation is used, | ||
a GetRngGuid() function is added in a following patch. | ||
|
||
Prepare GetRngGuid() return values and add a gEfiRngAlgorithmArmRndr | ||
to describe a Rng algorithm accessed through Arm's RNDR instruction. | ||
[1] states that the implementation of this algorithm should be | ||
compliant to NIST SP900-80. The compliance is not guaranteed. | ||
|
||
[1] Arm Architecture Reference Manual Armv8, for A-profile architecture | ||
sK12.1 'Properties of the generated random number' | ||
|
||
Signed-off-by: Pierre Gondois <[email protected]> | ||
Reviewed-by: Sami Mujawar <[email protected]> | ||
Reviewed-by: Liming Gao <[email protected]> | ||
Acked-by: Ard Biesheuvel <[email protected]> | ||
Tested-by: Kun Qin <[email protected]> | ||
|
||
CVE: CVE-2023-45237 | ||
|
||
Upstream-Status: Backport [https://github.com/tianocore/edk2/commit/cf07238e5fa4f8b1138ac1c9e80530b4d4e59f1c] | ||
|
||
Signed-off-by: Soumya Sambu <[email protected]> | ||
--- | ||
MdePkg/Include/Protocol/Rng.h | 10 ++++++++++ | ||
MdePkg/MdePkg.dec | 1 + | ||
2 files changed, 11 insertions(+) | ||
|
||
diff --git a/MdePkg/Include/Protocol/Rng.h b/MdePkg/Include/Protocol/Rng.h | ||
index baf425587b..38bde53240 100644 | ||
--- a/MdePkg/Include/Protocol/Rng.h | ||
+++ b/MdePkg/Include/Protocol/Rng.h | ||
@@ -67,6 +67,15 @@ typedef EFI_GUID EFI_RNG_ALGORITHM; | ||
{ \ | ||
0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 } \ | ||
} | ||
+/// | ||
+/// The Arm Architecture states the RNDR that the DRBG algorithm should be compliant | ||
+/// with NIST SP800-90A, while not mandating a particular algorithm, so as to be | ||
+/// inclusive of different geographies. | ||
+/// | ||
+#define EFI_RNG_ALGORITHM_ARM_RNDR \ | ||
+ { \ | ||
+ 0x43d2fde3, 0x9d4e, 0x4d79, {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41} \ | ||
+ } | ||
|
||
/** | ||
Returns information about the random number generation implementation. | ||
@@ -146,5 +155,6 @@ extern EFI_GUID gEfiRngAlgorithmSp80090Ctr256Guid; | ||
extern EFI_GUID gEfiRngAlgorithmX9313DesGuid; | ||
extern EFI_GUID gEfiRngAlgorithmX931AesGuid; | ||
extern EFI_GUID gEfiRngAlgorithmRaw; | ||
+extern EFI_GUID gEfiRngAlgorithmArmRndr; | ||
|
||
#endif | ||
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec | ||
index 59b405928b..a449dbc556 100644 | ||
--- a/MdePkg/MdePkg.dec | ||
+++ b/MdePkg/MdePkg.dec | ||
@@ -594,6 +594,7 @@ | ||
gEfiRngAlgorithmX9313DesGuid = { 0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46 }} | ||
gEfiRngAlgorithmX931AesGuid = { 0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9 }} | ||
gEfiRngAlgorithmRaw = { 0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 }} | ||
+ gEfiRngAlgorithmArmRndr = { 0x43d2fde3, 0x9d4e, 0x4d79, {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41 }} | ||
|
||
## Include/Protocol/AdapterInformation.h | ||
gEfiAdapterInfoMediaStateGuid = { 0xD7C74207, 0xA831, 0x4A26, {0xB1, 0xF5, 0xD1, 0x93, 0x06, 0x5C, 0xE8, 0xB6 }} | ||
-- | ||
2.40.0 | ||
|
Oops, something went wrong.