From e348ea0381aa1172ba5b28b0283f8b812fa34561 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 19 Feb 2025 21:07:26 +0000 Subject: Bump GRUB revision to add 73 security patches You can find information about these patches here: https://lists.gnu.org/archive/html/grub-devel/2025-02/msg00024.html GRUB has been on a crusade as of late, to proactively audit and fix many security vulnerabilities. This lbmk change brings in a comprehensive series of patches that fix bugs ranging from possible buffer overflows, use-after frees, null derefs and so on. These changes are critical, so a revision release *will* be issued, for the Libreboot 20241206 release series. This change imports the following 73 patches which are present on the upstream GRUB repository (commit IDs matched to upstream): * 4dc616657 loader/i386/bsd: Use safe math to avoid underflow * 490a6ab71 loader/i386/linux: Cast left shift to grub_uint32_t * a8d6b0633 kern/misc: Add sanity check after grub_strtoul() call * 8e6e87e79 kern/partition: Add sanity check after grub_strtoul() call * 5b36a5210 normal/menu: Use safe math to avoid an integer overflow * 9907d9c27 bus/usb/ehci: Define GRUB_EHCI_TOGGLE as grub_uint32_t * f8795cde2 misc: Ensure consistent overflow error messages * 66733f7c7 osdep/unix/getroot: Fix potential underflow * d13b6e8eb script/execute: Fix potential underflow and NULL dereference * e3c578a56 fs/sfs: Check if allocated memory is NULL * 1c06ec900 net: Check if returned pointer for allocated memory is NULL * dee2c14fd net: Prevent overflows when allocating memory for arrays * 4beeff8a3 net: Use safe math macros to prevent overflows * dd6a4c8d1 fs/zfs: Add missing NULL check after grub_strdup() call * 13065f69d fs/zfs: Check if returned pointer for allocated memory is NULL * 7f38e32c7 fs/zfs: Prevent overflows when allocating memory for arrays * 88e491a0f fs/zfs: Use safe math macros to prevent overflows * cde9f7f33 fs: Prevent overflows when assigning returned values from read_number() * 84bc0a9a6 fs: Prevent overflows when allocating memory for arrays * 6608163b0 fs: Use safe math macros to prevent overflows * fbaddcca5 disk/ieee1275/ofdisk: Call grub_ieee1275_close() when grub_malloc() fails * 33bd6b5ac disk: Check if returned pointer for allocated memory is NULL * d8151f983 disk: Prevent overflows when allocating memory for arrays * c407724da disk: Use safe math macros to prevent overflows * c4bc55da2 fs: Disable many filesystems under lockdown * 26db66050 fs/bfs: Disable under lockdown * 5f31164ae commands/hexdump: Disable memory reading in lockdown mode * 340e4d058 commands/memrw: Disable memory reading in lockdown mode * 34824806a commands/minicmd: Block the dump command in lockdown mode * c68b7d236 commands/test: Stack overflow due to unlimited recursion depth * dad8f5029 commands/read: Fix an integer overflow when supplying more than 2^31 characters * b970a5ed9 gettext: Integer overflow leads to heap OOB write * 09bd6eb58 gettext: Integer overflow leads to heap OOB write or read * 7580addfc gettext: Remove variables hooks on module unload * 9c1619773 normal: Remove variables hooks on module unload * 2123c5bca commands/pgp: Unregister the "check_signatures" hooks on module unload * 0bf56bce4 commands/ls: Fix NULL dereference * 05be856a8 commands/extcmd: Missing check for failed allocation * 98ad84328 kern/dl: Check for the SHF_INFO_LINK flag in grub_dl_relocate_symbols() * d72208423 kern/dl: Use correct segment in grub_dl_set_mem_attrs() * 500e5fdd8 kern/dl: Fix for an integer overflow in grub_dl_ref() * 2c34af908 video/readers/jpeg: Do not permit duplicate SOF0 markers in JPEG * 0707accab net/tftp: Fix stack buffer overflow in tftp_open() * 5eef88152 net: Fix OOB write in grub_net_search_config_file() * aa8b4d7fa net: Remove variables hooks when interface is unregisted * a1dd8e59d net: Unregister net_default_ip and net_default_mac variables hooks on unload * d8a937cca script/execute: Limit the recursion depth * 8a7103fdd kern/partition: Limit recursion in part_iterate() * 18212f064 kern/disk: Limit recursion depth * 67f70f70a disk/loopback: Reference tracking for the loopback * 13febd78d disk/cryptodisk: Require authentication after TPM unlock for CLI access * 16f196874 kern/file: Implement filesystem reference counting * a79106872 kern/file: Ensure file->data is set * d1d6b7ea5 fs/xfs: Ensuring failing to mount sets a grub_errno * 6ccc77b59 fs/xfs: Fix out-of-bounds read * 067b6d225 fs/ntfs: Implement attribute verification * 048777bc2 fs/ntfs: Use a helper function to access attributes * 237a71184 fs/ntfs: Track the end of the MFT attribute buffer * aff263187 fs/ntfs: Fix out-of-bounds read * 7e2f750f0 fs/ext2: Fix out-of-bounds read for inline extents * edd995a26 fs/jfs: Inconsistent signed/unsigned types usage in return values * bd999310f fs/jfs: Use full 40 bits offset and address for a data extent * ab09fd053 fs/jfs: Fix OOB read caused by invalid dir slot index * 66175696f fs/jfs: Fix OOB read in jfs_getent() * 1443833a9 fs/iso9660: Fix invalid free * 965db5970 fs/iso9660: Set a grub_errno if mount fails * f7c070a2e fs/hfsplus: Set a grub_errno if mount fails * 563436258 fs/f2fs: Set a grub_errno if mount fails * 0087bc690 fs/tar: Integer overflow leads to heap OOB write * 2c8ac08c9 fs/tar: Initialize name in grub_cpio_find_file() * 417547c10 fs/hfs: Fix stack OOB write with grub_strcpy() * c1a291b01 fs/ufs: Fix a heap OOB write * ea703528a misc: Implement grub_strlcpy() Signed-off-by: Leah Rowe --- ...itigate-grub-s-missing-characters-for-borders-arrow.patch | 2 +- .../0002-say-the-name-libreboot-in-the-grub-menu.patch | 4 ++-- config/grub/default/patches/0003-Add-CC0-license.patch | 6 +++--- .../grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch | 2 +- config/grub/default/patches/0005-Add-Argon2-algorithm.patch | 2 +- .../patches/0006-Error-on-missing-Argon2id-parameters.patch | 12 ++++++------ .../default/patches/0007-Compile-with-Argon2id-support.patch | 10 +++++----- .../patches/0008-Make-grub-install-work-with-Argon2.patch | 2 +- ...009-at_keyboard-coreboot-force-scancodes2-translate.patch | 2 +- .../0010-keylayouts-don-t-print-Unknown-key-message.patch | 2 +- ...011-don-t-print-missing-prefix-errors-on-the-screen.patch | 6 +++--- .../patches/0012-don-t-print-error-if-module-not-found.patch | 6 +++--- .../patches/0013-don-t-print-empty-error-messages.patch | 2 +- 13 files changed, 29 insertions(+), 29 deletions(-) (limited to 'config/grub/default/patches') diff --git a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch index e5d24e7e..391beaf1 100644 --- a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch +++ b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch @@ -1,4 +1,4 @@ -From 26b89e90c8d6d89f2e52b00ad15ba58fd2e1fbfb Mon Sep 17 00:00:00 2001 +From 016f8655f5bed2b65c19e0e127b72ba3cfbcfb7d Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 31 Oct 2021 03:47:05 +0000 Subject: [PATCH 01/13] mitigate grub's missing characters for borders/arrow diff --git a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch index d8c3b33f..149b719d 100644 --- a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch +++ b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch @@ -1,4 +1,4 @@ -From 10d264bdfde24fcf78da6f641898eb267f83066f Mon Sep 17 00:00:00 2001 +From d7f6f258ea14ec47d586eccbd0f5d96784e8bd15 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 19 Nov 2022 16:30:24 +0000 Subject: [PATCH 02/13] say the name libreboot, in the grub menu @@ -8,7 +8,7 @@ Subject: [PATCH 02/13] say the name libreboot, in the grub menu 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c -index bd4431000..ff16e0f2e 100644 +index 04d058f55..b1cc8f236 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term, diff --git a/config/grub/default/patches/0003-Add-CC0-license.patch b/config/grub/default/patches/0003-Add-CC0-license.patch index a5f75eb4..09c55867 100644 --- a/config/grub/default/patches/0003-Add-CC0-license.patch +++ b/config/grub/default/patches/0003-Add-CC0-license.patch @@ -1,4 +1,4 @@ -From 689c09a6b675ba52318cd879b289ac3d67073cd4 Mon Sep 17 00:00:00 2001 +From 85a88ecf10e1dd5cef7244aedaf7db76e845045f Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 03/13] Add CC0 license @@ -10,10 +10,10 @@ Signed-off-by: Nicholas Johnson 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c -index 8ad015b07..9980bae90 100644 +index de8c3aa8d..4a3be8568 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -494,7 +494,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e) +@@ -495,7 +495,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e) if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0 || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0 diff --git a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch index 9550110e..8277df92 100644 --- a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch +++ b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch @@ -1,4 +1,4 @@ -From 63dc3c9ca6e5635b5c7e7ba24c996b23e79a92e3 Mon Sep 17 00:00:00 2001 +From bb12d671182c455c894979a8a5890f5f4baa02dc Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 04/13] Define GRUB_UINT32_MAX diff --git a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch index fef68ee3..452c0937 100644 --- a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch +++ b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch @@ -1,4 +1,4 @@ -From be6452a88ff3cbe033d37b739829e41798682510 Mon Sep 17 00:00:00 2001 +From 216e1351e5957e0589d488427a6dfee246705d0d Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 05/13] Add Argon2 algorithm diff --git a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch index 8abe7669..33bc9417 100644 --- a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch +++ b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch @@ -1,4 +1,4 @@ -From 39f620fbe7c4a791062b59d4a8d26c35408aca45 Mon Sep 17 00:00:00 2001 +From a2687cc594714ff33a4c50d40222c113768ed826 Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 06/13] Error on missing Argon2id parameters @@ -9,10 +9,10 @@ Signed-off-by: Nicholas Johnson 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index d5106402f..bc818ea69 100644 +index 8036d76ff..efae8ac65 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); +@@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); enum grub_luks2_kdf_type { LUKS2_KDF_TYPE_ARGON2I, @@ -20,7 +20,7 @@ index d5106402f..bc818ea69 100644 LUKS2_KDF_TYPE_PBKDF2 }; typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t; -@@ -90,7 +91,7 @@ struct grub_luks2_keyslot +@@ -91,7 +92,7 @@ struct grub_luks2_keyslot grub_int64_t time; grub_int64_t memory; grub_int64_t cpus; @@ -29,7 +29,7 @@ index d5106402f..bc818ea69 100644 struct { const char *hash; -@@ -160,10 +161,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) +@@ -161,10 +162,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing or invalid KDF"); else if (!grub_strcmp (type, "argon2i") || !grub_strcmp (type, "argon2id")) { @@ -45,7 +45,7 @@ index d5106402f..bc818ea69 100644 return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing Argon2i parameters"); } else if (!grub_strcmp (type, "pbkdf2")) -@@ -459,6 +461,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -460,6 +462,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, switch (k->kdf.type) { case LUKS2_KDF_TYPE_ARGON2I: diff --git a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch index 19da5e51..7d22cc74 100644 --- a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch +++ b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch @@ -1,4 +1,4 @@ -From c192948ea0329d06cf4706667305b473b48c15f5 Mon Sep 17 00:00:00 2001 +From 2d1af8f5dfd1492ac95bcf7db4e6c789aa83018e Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 07/13] Compile with Argon2id support @@ -48,18 +48,18 @@ index f5f9b040c..f1f38d8d3 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index bc818ea69..5b9eaa599 100644 +index efae8ac65..2e742f5be 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -27,6 +27,7 @@ - #include +@@ -28,6 +28,7 @@ #include + #include +#include #include #include -@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -463,8 +464,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, { case LUKS2_KDF_TYPE_ARGON2I: case LUKS2_KDF_TYPE_ARGON2ID: diff --git a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch index cb954976..e73a7ccb 100644 --- a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch +++ b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch @@ -1,4 +1,4 @@ -From 2887e35e882a86e474052112a23608570b3f41b2 Mon Sep 17 00:00:00 2001 +From 67900e39bd45018b5611862b9438081c618b916f Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 17 Aug 2023 00:00:00 +0000 Subject: [PATCH 08/13] Make grub-install work with Argon2 diff --git a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch index 763fea91..d1973955 100644 --- a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch +++ b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch @@ -1,4 +1,4 @@ -From 548c5b227718783776b81d1e074b1982e76f2327 Mon Sep 17 00:00:00 2001 +From e8ae938700e715194e47d346c43aa4be23f1b4bf Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 30 Oct 2023 22:19:21 +0000 Subject: [PATCH 09/13] at_keyboard coreboot: force scancodes2+translate diff --git a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch index a0eff28d..c9e41d8e 100644 --- a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch +++ b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch @@ -1,4 +1,4 @@ -From 89764949b2bcfaad122800f336aa205fea4a1fed Mon Sep 17 00:00:00 2001 +From dfd1639bb999e3dbbd346cc97f4bbaf32d129cd6 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 31 Oct 2023 10:33:28 +0000 Subject: [PATCH 10/13] keylayouts: don't print "Unknown key" message diff --git a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch index d2ed0055..72c51f8b 100644 --- a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch +++ b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch @@ -1,4 +1,4 @@ -From c6de75a3369aebb51df1659d89a6d7024c84d85e Mon Sep 17 00:00:00 2001 +From 8421c59fa62ce954dcba05ad04591c651d6dcf43 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 5 Nov 2023 16:14:58 +0000 Subject: [PATCH 11/13] don't print missing prefix errors on the screen @@ -85,10 +85,10 @@ index 18de52562..2a0fea6c8 100644 } file = try_open_from_prefix (prefix, filename); diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c -index 9980bae90..4457cad7c 100644 +index 4a3be8568..6ae3d73f8 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -871,7 +871,7 @@ grub_dl_load (const char *name) +@@ -881,7 +881,7 @@ grub_dl_load (const char *name) return 0; if (! grub_dl_dir) { diff --git a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch index 85cde7a7..dab4318c 100644 --- a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch +++ b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch @@ -1,4 +1,4 @@ -From e8e419fe16843e7b7d8c614531df9447db689d28 Mon Sep 17 00:00:00 2001 +From c377f3c025101da17252a43449cc58fdd44c44af Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 5 Nov 2023 16:36:22 +0000 Subject: [PATCH 12/13] don't print error if module not found @@ -17,10 +17,10 @@ Signed-off-by: Leah Rowe 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c -index 4457cad7c..ea9fe8019 100644 +index 6ae3d73f8..4c15027fe 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -510,7 +510,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e) +@@ -511,7 +511,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e) s = grub_dl_find_section (e, ".modname"); if (!s) diff --git a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch index 70ce3059..c351a74a 100644 --- a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch +++ b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch @@ -1,4 +1,4 @@ -From 6eb22aa4110b99245fd31dcaad979d5049d398d6 Mon Sep 17 00:00:00 2001 +From 664ce75106049547d7595fc021a0a1f9a69e585a Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sun, 5 Nov 2023 17:25:20 +0000 Subject: [PATCH 13/13] don't print empty error messages -- cgit v1.2.1