public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Doug Flick via groups.io" <dougflick=microsoft.com@groups.io>
To: devel@edk2.groups.io
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Subject: [edk2-devel] [PATCH v2 00/13] NetworkPkg: CVE-2023-45236 and CVE-2023-45237
Date: Wed,  8 May 2024 22:56:20 -0700	[thread overview]
Message-ID: <20240509055633.828642-1-doug.edk2@gmail.com> (raw)

REF:https://blog.quarkslab.com/pixiefail-nine-vulnerabilities-in-tianocores-edk-ii-ipv6-network-stack.html

This patch series patches the following CVEs:
- CVE-2023-45236: Predictable TCP Initial Sequence Numbers
- CVE-2023-45237: Use of a Weak PseudoRandom Number Generator

In order to patch these CVEs, the following changes were made:
- NetworkPkg no longer performs it's own random number generation, 
  instead it uses EFI_RNG_PROTOCOL provided by the plaform to 
  generate random numbers.
  - This change was made such that any future random number
    generation vulnerabilities will be a result of the platforms
    implementation of the EFI_RNG_PROTOCOL and not the NetworkPkg

- NetworkPkg uses the TCP initial sequence number algorithm as described
  in RFC 6528 to generate the initial sequence number for TCP connections.
  - This change was made to ensure that the initial sequence number
    is not predictable and therefore cannot be used in a TCP hijacking
    attack.

In addition to the above changes, the following changes were made:
- EmulatorPkg OvmfPkg, and ArmVirtPkg were updated to include the
  Hash2DxeCrypto driver to support TCP ISN generation using 
  EFI_HASH2_PROTOCOL

- EmulatorPkg was updated to include the
  RngDxe driver to support random number generation using the
  EFI_RNG_PROTOCOL

- OvmfPkg, and ArmVirtPkg were updated to include the
  virtio-rng-pci device to support random number generation using the
  EFI_RNG_PROTOCOL using the existing VirtioRngDxe driver

- SecurityPkg was updated to fix an incorrect limitation on the
  GetRng function in the RngDxe driver where the minimum amount of
  random data that could be requested was 32 bytes (256 bits) instead
  of what the caller requested

- MdePkg was updated to include MockUefiBootServicesTableLib,
  MockRng, and MockHash2 protocols for testing

- NetworkPkg was updated to include a test for the PxeBcDhcp6 driver
  due to underlying changes

Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Doug Flick [MSFT] <doug.edk2@gmail.com>

Doug Flick (13):
  EmulatorPkg: : Add RngDxe to EmulatorPkg
  EmulatorPkg: : Add Hash2DxeCrypto to EmulatorPkg
  OvmfPkg:PlatformCI: Support virtio-rng-pci
  OvmfPkg: : Add Hash2DxeCrypto to OvmfPkg
  ArmVirtPkg:PlatformCI: Support virtio-rng-pci
  ArmVirtPkg: : Add Hash2DxeCrypto to ArmVirtPkg
  SecurityPkg: RngDxe: Remove incorrect limitation on GetRng
  NetworkPkg:: SECURITY PATCH CVE-2023-45237
  NetworkPkg: TcpDxe: SECURITY PATCH CVE-2023-45236
  MdePkg: : Add MockUefiBootServicesTableLib
  MdePkg: : Adds Protocol for MockRng
  MdePkg: Add MockHash2 Protocol for testing
  NetworkPkg: Update the PxeBcDhcp6GoogleTest due to underlying changes

 NetworkPkg/NetworkPkg.dec                                                                         |   7 +
 ArmVirtPkg/ArmVirtQemu.dsc                                                                        |   5 +
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                                                  |   5 +
 EmulatorPkg/EmulatorPkg.dsc                                                                       |  14 +-
 MdePkg/Test/MdePkgHostTest.dsc                                                                    |   1 +
 NetworkPkg/Test/NetworkPkgHostTest.dsc                                                            |   1 +
 OvmfPkg/OvmfPkgIa32.dsc                                                                           |   6 +-
 OvmfPkg/OvmfPkgIa32X64.dsc                                                                        |   6 +-
 OvmfPkg/OvmfPkgX64.dsc                                                                            |   6 +-
 OvmfPkg/OvmfXen.dsc                                                                               |   5 +
 EmulatorPkg/EmulatorPkg.fdf                                                                       |  11 +-
 OvmfPkg/OvmfPkgIa32.fdf                                                                           |   5 +
 OvmfPkg/OvmfPkgIa32X64.fdf                                                                        |   5 +
 OvmfPkg/OvmfPkgX64.fdf                                                                            |   5 +
 OvmfPkg/OvmfXen.fdf                                                                               |   5 +
 MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.inf |  32 +++
 NetworkPkg/Library/DxeNetLib/DxeNetLib.inf                                                        |  13 +-
 NetworkPkg/TcpDxe/TcpDxe.inf                                                                      |  11 +-
 NetworkPkg/UefiPxeBcDxe/GoogleTest/UefiPxeBcDxeGoogleTest.inf                                     |   3 +-
 MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h                        |  78 +++++++
 MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h                                          |  67 ++++++
 MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockRng.h                                            |  48 ++++
 NetworkPkg/IScsiDxe/IScsiMisc.h                                                                   |   6 +-
 NetworkPkg/Include/Library/NetLib.h                                                               |  40 +++-
 NetworkPkg/Ip6Dxe/Ip6Nd.h                                                                         |   8 +-
 NetworkPkg/TcpDxe/TcpFunc.h                                                                       |  23 +-
 NetworkPkg/TcpDxe/TcpMain.h                                                                       |  59 ++++-
 NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c                                                                 |  10 +-
 NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c                                                                 |  11 +-
 NetworkPkg/DnsDxe/DnsDhcp.c                                                                       |  10 +-
 NetworkPkg/DnsDxe/DnsImpl.c                                                                       |  11 +-
 NetworkPkg/HttpBootDxe/HttpBootDhcp6.c                                                            |  10 +-
 NetworkPkg/IScsiDxe/IScsiCHAP.c                                                                   |  19 +-
 NetworkPkg/IScsiDxe/IScsiMisc.c                                                                   |  14 +-
 NetworkPkg/Ip4Dxe/Ip4Driver.c                                                                     |  10 +-
 NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c                                                                 |   9 +-
 NetworkPkg/Ip6Dxe/Ip6Driver.c                                                                     |  17 +-
 NetworkPkg/Ip6Dxe/Ip6If.c                                                                         |  12 +-
 NetworkPkg/Ip6Dxe/Ip6Mld.c                                                                        |  12 +-
 NetworkPkg/Ip6Dxe/Ip6Nd.c                                                                         |  33 ++-
 NetworkPkg/Library/DxeNetLib/DxeNetLib.c                                                          | 129 +++++++++--
 NetworkPkg/TcpDxe/TcpDriver.c                                                                     | 105 ++++++++-
 NetworkPkg/TcpDxe/TcpInput.c                                                                      |  13 +-
 NetworkPkg/TcpDxe/TcpMisc.c                                                                       | 242 ++++++++++++++++++--
 NetworkPkg/TcpDxe/TcpTimer.c                                                                      |   3 +-
 NetworkPkg/Udp4Dxe/Udp4Driver.c                                                                   |  10 +-
 NetworkPkg/Udp6Dxe/Udp6Driver.c                                                                   |  11 +-
 NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c                                                              |   9 +-
 NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c                                                              |  11 +-
 NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c                                                             |  12 +-
 SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c                                            |   8 -
 ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc                                                              |   5 +
 ArmVirtPkg/PlatformCI/PlatformBuildLib.py                                                         |   2 +
 MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp |  69 ++++++
 MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp                                        |  27 +++
 MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockRng.cpp                                          |  21 ++
 NetworkPkg/SecurityFixes.yaml                                                                     |  61 +++++
 NetworkPkg/UefiPxeBcDxe/GoogleTest/PxeBcDhcp6GoogleTest.cpp                                       | 102 ++++++++-
 OvmfPkg/PlatformCI/PlatformBuildLib.py                                                            |   2 +
 59 files changed, 1345 insertions(+), 150 deletions(-)
 create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.inf
 create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h
 create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockHash2.h
 create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockRng.h
 create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp
 create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockHash2.cpp
 create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockRng.cpp

-- 
2.34.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#118716): https://edk2.groups.io/g/devel/message/118716
Mute This Topic: https://groups.io/mt/105996578/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



             reply	other threads:[~2024-05-09  5:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-09  5:56 Doug Flick via groups.io [this message]
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 01/13] EmulatorPkg: : Add RngDxe to EmulatorPkg Doug Flick via groups.io
2024-05-10  3:10   ` Ni, Ray
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 02/13] EmulatorPkg: : Add Hash2DxeCrypto " Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 03/13] OvmfPkg:PlatformCI: Support virtio-rng-pci Doug Flick via groups.io
2024-05-09  8:45   ` Ard Biesheuvel
2024-05-09  8:45     ` Ard Biesheuvel
2024-05-09 18:21     ` Doug Flick via groups.io
2024-05-10  0:54       ` 回复: " gaoliming via groups.io
2024-05-10 17:13         ` [edk2-devel] " Doug Flick via groups.io
2024-05-11  8:40           ` Ard Biesheuvel
2024-05-13  9:22             ` Gerd Hoffmann
2024-05-13 17:24               ` Ard Biesheuvel
2024-05-17  3:27                 ` Doug Flick via groups.io
2024-05-17  7:27                   ` Ard Biesheuvel
2024-05-17  9:48                     ` Gerd Hoffmann
2024-05-24  3:02                       ` 回复: " gaoliming via groups.io
2024-05-14 19:55               ` Pedro Falcato
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 04/13] OvmfPkg: : Add Hash2DxeCrypto to OvmfPkg Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 05/13] ArmVirtPkg:PlatformCI: Support virtio-rng-pci Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 06/13] ArmVirtPkg: : Add Hash2DxeCrypto to ArmVirtPkg Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 07/13] SecurityPkg: RngDxe: Remove incorrect limitation on GetRng Doug Flick via groups.io
2024-05-10 10:23   ` Yao, Jiewen
2024-05-10 21:12     ` Doug Flick via groups.io
2024-05-11  0:24       ` Yao, Jiewen
2024-05-13 15:53         ` PierreGondois
2024-05-11  8:26   ` Ard Biesheuvel
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 08/13] NetworkPkg:: SECURITY PATCH CVE-2023-45237 Doug Flick via groups.io
2024-05-13 14:30   ` Ard Biesheuvel
2024-05-15 19:14   ` Saloni Kasbekar
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 09/13] NetworkPkg: TcpDxe: SECURITY PATCH CVE-2023-45236 Doug Flick via groups.io
2024-05-15 21:38   ` Saloni Kasbekar
2024-05-21 19:28     ` Doug Flick via groups.io
2024-05-24  1:24       ` 回复: " gaoliming via groups.io
2024-05-24  4:23         ` Saloni Kasbekar
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 10/13] MdePkg: : Add MockUefiBootServicesTableLib Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 11/13] MdePkg: : Adds Protocol for MockRng Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 12/13] MdePkg: Add MockHash2 Protocol for testing Doug Flick via groups.io
2024-05-09  5:56 ` [edk2-devel] [PATCH v2 13/13] NetworkPkg: Update the PxeBcDhcp6GoogleTest due to underlying changes Doug Flick via groups.io
2024-05-24  4:24   ` Saloni Kasbekar
2024-05-09  9:40 ` 回复: [edk2-devel][edk2-stable202405] [PATCH v2 00/13] NetworkPkg: CVE-2023-45236 and CVE-2023-45237 gaoliming via groups.io
2024-05-09 18:26   ` [edk2-devel] " Doug Flick via groups.io
2024-05-15  0:41     ` 回复: " gaoliming via groups.io

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240509055633.828642-1-doug.edk2@gmail.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox