REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4542 Bug Overview: PixieFail Bug #9 CVE-2023-45237 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) Use of a Weak PseudoRandom Number Generator Change Overview: Updates all Instances of NET_RANDOM (NetRandomInitSeed ()) to either > > EFI_STATUS > EFIAPI > PseudoRandomU32 ( > OUT UINT32 *Output > ); > or (depending on the use case) > > EFI_STATUS > EFIAPI > PseudoRandom ( > OUT VOID *Output, > IN UINTN OutputLength > ); > This is because the use of Example: The following code snippet PseudoRandomU32 () function is used: > > UINT32 Random; > > Status = PseudoRandomU32 (&Random); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); > return Status; > } > This also introduces a new PCD to enable/disable the use of the secure implementation of algorithms for PseudoRandom () and instead depend on the default implementation. This may be required for some platforms where the UEFI Spec defined algorithms are not available. > > PcdEnforceSecureRngAlgorithms > If the platform does not have any one of the UEFI defined secure RNG algorithms then the driver will assert. Cc: Saloni Kasbekar <saloni.kasbekar@intel.com> Cc: Zachary Clark-williams <zachary.clark-williams@intel.com> Signed-off-by: Doug Flick [MSFT] <doug.edk2@gmail.com> Reviewed-by: Saloni Kasbekar <saloni.kasbekar@intel.com>
74 lines
2.4 KiB
INI
74 lines
2.4 KiB
INI
## @file
|
|
# This library instance provides the basic network services.
|
|
#
|
|
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
# (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
|
|
# Copyright (c) Microsoft Corporation
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
##
|
|
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = DxeNetLib
|
|
MODULE_UNI_FILE = DxeNetLib.uni
|
|
FILE_GUID = db6dcef3-9f4e-4340-9351-fc35aa8a5888
|
|
MODULE_TYPE = DXE_DRIVER
|
|
VERSION_STRING = 1.0
|
|
LIBRARY_CLASS = NetLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64 EBC
|
|
#
|
|
|
|
[Sources]
|
|
DxeNetLib.c
|
|
NetBuffer.c
|
|
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
NetworkPkg/NetworkPkg.dec
|
|
|
|
|
|
[LibraryClasses]
|
|
BaseLib
|
|
DebugLib
|
|
BaseMemoryLib
|
|
UefiBootServicesTableLib
|
|
UefiRuntimeServicesTableLib
|
|
UefiLib
|
|
MemoryAllocationLib
|
|
DevicePathLib
|
|
PrintLib
|
|
|
|
|
|
[Guids]
|
|
gEfiSmbiosTableGuid ## SOMETIMES_CONSUMES ## SystemTable
|
|
gEfiSmbios3TableGuid ## SOMETIMES_CONSUMES ## SystemTable
|
|
gEfiAdapterInfoMediaStateGuid ## SOMETIMES_CONSUMES
|
|
gEfiRngAlgorithmRaw ## CONSUMES
|
|
gEfiRngAlgorithmSp80090Ctr256Guid ## CONSUMES
|
|
gEfiRngAlgorithmSp80090Hmac256Guid ## CONSUMES
|
|
gEfiRngAlgorithmSp80090Hash256Guid ## CONSUMES
|
|
gEfiRngAlgorithmArmRndr ## CONSUMES
|
|
|
|
[Protocols]
|
|
gEfiSimpleNetworkProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiManagedNetworkProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiManagedNetworkServiceBindingProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiIp4Config2ProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiComponentNameProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiComponentName2ProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiAdapterInformationProtocolGuid ## SOMETIMES_CONSUMES
|
|
gEfiRngProtocolGuid ## CONSUMES
|
|
|
|
[FixedPcd]
|
|
gEfiNetworkPkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms ## CONSUMES
|
|
|
|
[Depex]
|
|
gEfiRngProtocolGuid
|