Skip to content
Snippets Groups Projects
  1. May 13, 2023
  2. May 10, 2023
  3. May 02, 2023
  4. Apr 23, 2023
  5. Apr 21, 2023
  6. Apr 20, 2023
  7. Apr 14, 2023
  8. Apr 03, 2023
  9. Mar 04, 2023
  10. Feb 09, 2023
  11. Feb 08, 2023
  12. Jan 15, 2023
  13. Dec 29, 2022
  14. Dec 14, 2022
  15. Dec 11, 2022
  16. Dec 06, 2022
  17. Dec 04, 2022
    • Steve McIntyre's avatar
      Release version 2.06-6 · 28632f17
      Steve McIntyre authored
      debian/2.06-6
      28632f17
    • Steve McIntyre's avatar
      Switch away from git-dpm · 2c1a132e
      Steve McIntyre authored
      2c1a132e
    • Steve McIntyre's avatar
      Bump Debian SBAT level to 4 · e2dc71dd
      Steve McIntyre authored
      Due to a mistake in the buster update that left the CVE-2022-2601 bugs
      in place, we need to bump SBAT for all of the Debian GRUB binaries. :-(
      e2dc71dd
    • Steve McIntyre's avatar
      Add fonts to the EFI images · 5055c474
      Steve McIntyre authored
      The previous security updates disallowed loading unsigned fonts when
      in SB mode. To make things work again:
      
       * Embed the "unicode" font into the embedded memdisk image so it can
         be loaded.
       * Add the memdisk to our normal grubx64.efi loader too
       * Add a patch from Chris Coulson to make the font loader look for
         fonts in the memdisk whenever they're loaded.
      
      Closes: #1024395, #1025352, #1024447
      5055c474
  18. Nov 14, 2022
  19. Nov 12, 2022
    • Zhang Boyang's avatar
      normal/charset: Fix an integer overflow in grub_unicode_aglomerate_comb() · afa02a1b
      Zhang Boyang authored
      
      The out->ncomb is a bit-field of 8 bits. So, the max possible value is 255.
      However, code in grub_unicode_aglomerate_comb() doesn't check for an
      overflow when incrementing out->ncomb. If out->ncomb is already 255,
      after incrementing it will get 0 instead of 256, and cause illegal
      memory access in subsequent processing.
      
      This patch introduces GRUB_UNICODE_NCOMB_MAX to represent the max
      acceptable value of ncomb. The code now checks for this limit and
      ignores additional combining characters when limit is reached.
      
      Reported-by: default avatarDaniel Axtens <dja@axtens.net>
      Signed-off-by: default avatarZhang Boyang <zhangboyang.id@gmail.com>
      Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
      afa02a1b
    • Zhang Boyang's avatar
      font: Assign null_font to glyphs in ascii_font_glyph[] · b272bbd4
      Zhang Boyang authored
      
      The calculations in blit_comb() need information from glyph's font, e.g.
      grub_font_get_xheight(main_glyph->font). However, main_glyph->font is
      NULL if main_glyph comes from ascii_font_glyph[]. Therefore
      grub_font_get_*() crashes because of NULL pointer.
      
      There is already a solution, the null_font. So, assign it to those glyphs
      in ascii_font_glyph[].
      
      Reported-by: default avatarDaniel Axtens <dja@axtens.net>
      Signed-off-by: default avatarZhang Boyang <zhangboyang.id@gmail.com>
      Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
      b272bbd4
    • Zhang Boyang's avatar
      font: Harden grub_font_blit_glyph() and grub_font_blit_glyph_mirror() · 918f5efa
      Zhang Boyang authored
      
      As a mitigation and hardening measure add sanity checks to
      grub_font_blit_glyph() and grub_font_blit_glyph_mirror(). This patch
      makes these two functions do nothing if target blitting area isn't fully
      contained in target bitmap. Therefore, if complex calculations in caller
      overflows and malicious coordinates are given, we are still safe because
      any coordinates which result in out-of-bound-write are rejected. However,
      this patch only checks for invalid coordinates, and doesn't provide any
      protection against invalid source glyph or destination glyph, e.g.
      mismatch between glyph size and buffer size.
      
      This hardening measure is designed to mitigate possible overflows in
      blit_comb(). If overflow occurs, it may return invalid bounding box
      during dry run and call grub_font_blit_glyph() with malicious
      coordinates during actual blitting. However, we are still safe because
      the scratch glyph itself is valid, although its size makes no sense, and
      any invalid coordinates are rejected.
      
      It would be better to call grub_fatal() if illegal parameter is detected.
      However, doing this may end up in a dangerous recursion because grub_fatal()
      would print messages to the screen and we are in the progress of drawing
      characters on the screen.
      
      Reported-by: default avatarDaniel Axtens <dja@axtens.net>
      Signed-off-by: default avatarZhang Boyang <zhangboyang.id@gmail.com>
      Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
      918f5efa
    • Zhang Boyang's avatar
      font: Fix an integer underflow in blit_comb() · f0d0d3e0
      Zhang Boyang authored
      
      The expression (ctx.bounds.height - combining_glyphs[i]->height) / 2 may
      evaluate to a very big invalid value even if both ctx.bounds.height and
      combining_glyphs[i]->height are small integers. For example, if
      ctx.bounds.height is 10 and combining_glyphs[i]->height is 12, this
      expression evaluates to 2147483647 (expected -1). This is because
      coordinates are allowed to be negative but ctx.bounds.height is an
      unsigned int. So, the subtraction operates on unsigned ints and
      underflows to a very big value. The division makes things even worse.
      The quotient is still an invalid value even if converted back to int.
      
      This patch fixes the problem by casting ctx.bounds.height to int. As
      a result the subtraction will operate on int and grub_uint16_t which
      will be promoted to an int. So, the underflow will no longer happen. Other
      uses of ctx.bounds.height (and ctx.bounds.width) are also casted to int,
      to ensure coordinates are always calculated on signed integers.
      
      Fixes: CVE-2022-3775
      
      Reported-by: default avatarDaniel Axtens <dja@axtens.net>
      Signed-off-by: default avatarZhang Boyang <zhangboyang.id@gmail.com>
      Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
      f0d0d3e0
    • Zhang Boyang's avatar
      fbutil: Fix integer overflow · c2491cb8
      Zhang Boyang authored
      
      Expressions like u64 = u32 * u32 are unsafe because their products are
      truncated to u32 even if left hand side is u64. This patch fixes all
      problems like that one in fbutil.
      
      To get right result not only left hand side have to be u64 but it's also
      necessary to cast at least one of the operands of all leaf operators of
      right hand side to u64, e.g. u64 = u32 * u32 + u32 * u32 should be
      u64 = (u64)u32 * u32 + (u64)u32 * u32.
      
      For 1-bit bitmaps grub_uint64_t have to be used. It's safe because any
      combination of values in (grub_uint64_t)u32 * u32 + u32 expression will
      not overflow grub_uint64_t.
      
      Other expressions like ptr + u32 * u32 + u32 * u32 are also vulnerable.
      They should be ptr + (grub_addr_t)u32 * u32 + (grub_addr_t)u32 * u32.
      
      This patch also adds a comment to grub_video_fb_get_video_ptr() which
      says it's arguments must be valid and no sanity check is performed
      (like its siblings in grub-core/video/fb/fbutil.c).
      
      Signed-off-by: default avatarZhang Boyang <zhangboyang.id@gmail.com>
      Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
      c2491cb8
Loading