UBUNTU-CVE-2024-45025: Medium severity ubuntu/linux-hwe-edge vulnerability

Published Sep 11, 2024
·
Updated

In the Linux kernel, the following vulnerability has been resolved: fix bitmap corruption on closerange() with CLOSERANGEUNSHARE copyfdbitmaps(new, old, count) is expected to copy the first count/BITSPERLONG bits from old->fullfdsbits[] and fill the rest with zeroes. What it does is copying enough words (BITSTOLONGS(count/BITSPERLONG)), then memsets the rest. That works fine, if all bits past the cutoff point are clear. Otherwise we are risking garbage from the last word we'd copied. For most of the callers that is true - expandfdtable() has count equal to old->maxfds, so there's no open descriptors past count, let alone fully occupied words in ->openfds[], which is what bits in ->fullfdsbits[] correspond to. The other caller (dupfd()) passes sanefdtablesize(oldfdt, maxfds), which is the smallest multiple of BITSPERLONG that covers all opened descriptors below maxfds. In the common case (copying on fork()) maxfds is ~0U, so all opened descriptors will be below it and we are fine, by the same reasons why the call in expandfdtable() is safe. Unfortunately, there is a case where maxfds is less than that and where we might, indeed, end up with junk in ->fullfdsbits[] - closerange(from, to, CLOSERANGEUNSHARE) with descriptor table being currently shared 'to' being above the current capacity of descriptor table 'from' being just under some chunk of opened descriptors. In that case we end up with observably wrong behaviour - e.g. spawn a child with CLONEFILES, get all descriptors in range 0..127 open, then closerange(64, ~0U, CLOSERANGEUNSHARE) and watch dup(0) ending up with descriptor #128, despite #64 being observably not open. The minimally invasive fix would be to deal with that in dupfd(). If this proves to add measurable overhead, we can go that way, but let's try to fix copyfdbitmaps() first. new helper: bitmapcopyandexpand(to, from, bitstocopy, size). make copyfdbitmaps() take the bitmap size in words, rather than bits; it's 'count' argument is always a multiple of BITSPERLONG, so we are not losing any information, and that way we can use the same helper for all three bitmaps - compiler will see that count is a multiple of BITSPERLONG for the large ones, so it'll generate plain memcpy()+memset(). Reproducer added to tools/testing/selftests/core/closerangetest.c

Affected Software

142 affected componentsFixes available
ubuntu/linux-hwe-edge*
ubuntu/linux-aws-5.0*
ubuntu/linux-aws-5.3*
ubuntu/linux-azure*
ubuntu/linux-azure-5.3*
ubuntu/linux-azure-edge*
ubuntu/linux-gcp*
ubuntu/linux-gcp-5.3*
ubuntu/linux-gke-4.15*
ubuntu/linux-gke-5.4*
ubuntu/linux-gkeop-5.4*
ubuntu/linux-hwe*
ubuntu/linux-hwe-edge*
ubuntu/linux-oem*
ubuntu/linux-oracle-5.0*
ubuntu/linux-oracle-5.3*
ubuntu/linux-aws-5.15<5.15.0-1072.78~20.04.1
5.15.0-1072.78~20.04.1
ubuntu/linux-azure-5.15<5.15.0-1078.87~20.04.1
5.15.0-1078.87~20.04.1
ubuntu/linux-gcp-5.15<5.15.0-1071.79~20.04.1
5.15.0-1071.79~20.04.1
ubuntu/linux-gkeop<5.4.0-1102.106
5.4.0-1102.106
ubuntu/linux-gkeop-5.15<5.15.0-1055.62~20.04.1
5.15.0-1055.62~20.04.1
ubuntu/linux-hwe-5.15<5.15.0-125.135~20.04.1
5.15.0-125.135~20.04.1
ubuntu/linux-ibm-5.15<5.15.0-1065.68~20.04.1
5.15.0-1065.68~20.04.1
ubuntu/linux-intel-iotg-5.15<5.15.0-1067.73~20.04.1
5.15.0-1067.73~20.04.1
ubuntu/linux-lowlatency-hwe-5.15<5.15.0-125.135~20.04.1
5.15.0-125.135~20.04.1
ubuntu/linux-nvidia-tegra-5.15<5.15.0-1032.32~20.04.1
5.15.0-1032.32~20.04.1
ubuntu/linux-oracle-5.15<5.15.0-1070.76~20.04.1
5.15.0-1070.76~20.04.1
ubuntu/linux-riscv-5.15<5.15.0-1068.72~20.04.1
5.15.0-1068.72~20.04.1
ubuntu/linux-aws-5.11*
ubuntu/linux-aws-5.13*
ubuntu/linux-aws-5.8*
ubuntu/linux-azure-5.11*
ubuntu/linux-azure-5.13*
ubuntu/linux-azure-5.8*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp-5.11*
ubuntu/linux-gcp-5.13*
ubuntu/linux-gcp-5.8*
ubuntu/linux-gke*
ubuntu/linux-gke-5.15*
ubuntu/linux-hwe-5.11*
ubuntu/linux-hwe-5.13*
ubuntu/linux-hwe-5.8*
ubuntu/linux-intel-5.13*
ubuntu/linux-oem-5.10*
ubuntu/linux-oem-5.13*
ubuntu/linux-oem-5.6*
ubuntu/linux-oracle-5.11*
ubuntu/linux-oracle-5.13*
ubuntu/linux-oracle-5.8*
ubuntu/linux-raspi2*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.11*
ubuntu/linux-riscv-5.8*
ubuntu/linux<5.15.0-125.135
5.15.0-125.135
ubuntu/linux-allwinner-5.19*
ubuntu/linux-aws<5.15.0-1072.78
5.15.0-1072.78
ubuntu/linux-aws-5.19*
ubuntu/linux-aws-6.2*
ubuntu/linux-aws-6.5*
ubuntu/linux-aws-6.8<6.8.0-1020.22~22.04.1
6.8.0-1020.22~22.04.1
ubuntu/linux-azure<5.15.0-1075.84
5.15.0-1075.84
ubuntu/linux-azure-5.19*
ubuntu/linux-azure-6.2*
ubuntu/linux-azure-6.5*
ubuntu/linux-azure-6.8<6.8.0-1020.23~22.04.1
6.8.0-1020.23~22.04.1
ubuntu/linux-azure-fde<5.15.0-1076.85.1
5.15.0-1076.85.1
ubuntu/linux-azure-fde-5.19*
ubuntu/linux-azure-fde-6.2*
ubuntu/linux-gcp<5.15.0-1071.79
5.15.0-1071.79
ubuntu/linux-gcp-5.19*
ubuntu/linux-gcp-6.2*
ubuntu/linux-gcp-6.5*
ubuntu/linux-gcp-6.8<6.8.0-1019.21~22.04.1
6.8.0-1019.21~22.04.1
ubuntu/linux-gke<5.15.0-1069.75
5.15.0-1069.75
ubuntu/linux-gkeop<5.15.0-1055.62
5.15.0-1055.62
ubuntu/linux-hwe-5.19*
ubuntu/linux-hwe-6.2*
ubuntu/linux-hwe-6.5*
ubuntu/linux-hwe-6.8<6.8.0-50.51~22.04.1
6.8.0-50.51~22.04.1
ubuntu/linux-ibm<5.15.0-1065.68
5.15.0-1065.68
ubuntu/linux-ibm-6.8<6.8.0-1017.17~22.04.1
6.8.0-1017.17~22.04.1
ubuntu/linux-intel-iotg<5.15.0-1067.73
5.15.0-1067.73
ubuntu/linux-kvm<5.15.0-1069.74
5.15.0-1069.74
ubuntu/linux-lowlatency<5.15.0-125.135
5.15.0-125.135
ubuntu/linux-lowlatency-hwe-5.19*
ubuntu/linux-lowlatency-hwe-6.2*
ubuntu/linux-lowlatency-hwe-6.5*
ubuntu/linux-lowlatency-hwe-6.8<6.8.0-50.51.1~22.04.1
6.8.0-50.51.1~22.04.1
ubuntu/linux-nvidia<5.15.0-1067.68
5.15.0-1067.68
ubuntu/linux-nvidia-6.2*
ubuntu/linux-nvidia-6.5*
ubuntu/linux-nvidia-6.8<6.8.0-1019.21~22.04.1
6.8.0-1019.21~22.04.1
ubuntu/linux-nvidia-tegra<5.15.0-1032.32
5.15.0-1032.32
ubuntu/linux-nvidia-tegra-igx<5.15.0-1020.20
5.15.0-1020.20
ubuntu/linux-oem-5.17*
ubuntu/linux-oem-6.0*
ubuntu/linux-oem-6.1*
ubuntu/linux-oem-6.5*
ubuntu/linux-oracle<5.15.0-1070.76
5.15.0-1070.76
ubuntu/linux-oracle-6.5*
ubuntu/linux-oracle-6.8<6.8.0-1017.18~22.04.1
6.8.0-1017.18~22.04.1
ubuntu/linux-raspi<5.15.0-1065.68
5.15.0-1065.68
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.19*
ubuntu/linux-riscv-6.5*
ubuntu/linux-riscv-6.8<6.8.0-50.51.1~22.04.1
6.8.0-50.51.1~22.04.1
ubuntu/linux-starfive-5.19*
ubuntu/linux-starfive-6.2*
ubuntu/linux-starfive-6.5*
ubuntu/linux-xilinx-zynqmp<5.15.0-1038.42
5.15.0-1038.42
ubuntu/linux-bluefield<5.15.0-1056.58
5.15.0-1056.58
ubuntu/linux-intel-iot-realtime<5.15.0-1066.68
5.15.0-1066.68
ubuntu/linux-realtime<5.15.0-1073.81
5.15.0-1073.81
ubuntu/linux-realtime-6.8<6.8.1-1013.14~22.04.1
6.8.1-1013.14~22.04.1
ubuntu/linux-aws-fips*
ubuntu/linux-azure-fips*
ubuntu/linux-fips*
ubuntu/linux-gcp-fips*
ubuntu/linux-aws-fips<5.15.0-1072.78+fips1
5.15.0-1072.78+fips1
ubuntu/linux-azure-fips<5.15.0-1075.84+fips1
5.15.0-1075.84+fips1
ubuntu/linux-fips<5.15.0-125.135+fips1
5.15.0-125.135+fips1
ubuntu/linux-gcp-fips<5.15.0-1071.79+fips1
5.15.0-1071.79+fips1
ubuntu/linux<6.8.0-50.51
6.8.0-50.51
ubuntu/linux-aws<6.8.0-1020.22
6.8.0-1020.22
ubuntu/linux-azure<6.8.0-1020.23
6.8.0-1020.23
ubuntu/linux-gcp<6.8.0-1019.21
6.8.0-1019.21
ubuntu/linux-gke<6.8.0-1015.19
6.8.0-1015.19
ubuntu/linux-gkeop<6.8.0-1002.4
6.8.0-1002.4
ubuntu/linux-ibm<6.8.0-1017.17
6.8.0-1017.17
ubuntu/linux-lowlatency<6.8.0-50.51.1
6.8.0-50.51.1
ubuntu/linux-nvidia<6.8.0-1019.21
6.8.0-1019.21
ubuntu/linux-nvidia-lowlatency<6.8.0-1019.21.1
6.8.0-1019.21.1
ubuntu/linux-oem-6.8<6.8.0-1018.18
6.8.0-1018.18
ubuntu/linux-oracle<6.8.0-1017.18
6.8.0-1017.18
ubuntu/linux-raspi<6.8.0-1016.18
6.8.0-1016.18
ubuntu/linux-riscv<6.8.0-50.51.1
6.8.0-50.51.1
ubuntu/linux-xilinx<6.8.0-1017.18
6.8.0-1017.18
ubuntu/linux-raspi-realtime<6.8.0-2015.16
6.8.0-2015.16
ubuntu/linux-realtime<6.8.1-1013.14
6.8.1-1013.14
ubuntu/linux-fips<6.8.0-78.78+fips1
6.8.0-78.78+fips1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade ubuntu/linux-aws-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1072.78~20.04.1
  2. Upgrade

    Upgrade ubuntu/linux-azure-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1078.87~20.04.1
  3. Upgrade

    Upgrade ubuntu/linux-gcp-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1071.79~20.04.1
  4. Upgrade

    Upgrade ubuntu/linux-gkeop to a version that resolves this vulnerability.

    Fixed in 5.4.0-1102.106
  5. Upgrade

    Upgrade ubuntu/linux-gkeop-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1055.62~20.04.1
  6. Upgrade

    Upgrade ubuntu/linux-hwe-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-125.135~20.04.1
  7. Upgrade

    Upgrade ubuntu/linux-ibm-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1065.68~20.04.1
  8. Upgrade

    Upgrade ubuntu/linux-intel-iotg-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1067.73~20.04.1
  9. Upgrade

    Upgrade ubuntu/linux-lowlatency-hwe-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-125.135~20.04.1
  10. Upgrade

    Upgrade ubuntu/linux-nvidia-tegra-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1032.32~20.04.1
  11. Upgrade

    Upgrade ubuntu/linux-oracle-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1070.76~20.04.1
  12. Upgrade

    Upgrade ubuntu/linux-riscv-5.15 to a version that resolves this vulnerability.

    Fixed in 5.15.0-1068.72~20.04.1
  13. Upgrade

    Upgrade ubuntu/linux to a version that resolves this vulnerability.

    Fixed in 5.15.0-125.135
  14. Upgrade

    Upgrade ubuntu/linux-aws to a version that resolves this vulnerability.

    Fixed in 5.15.0-1072.78
  15. Upgrade

    Upgrade ubuntu/linux-aws-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1020.22~22.04.1
  16. Upgrade

    Upgrade ubuntu/linux-azure to a version that resolves this vulnerability.

    Fixed in 5.15.0-1075.84
  17. Upgrade

    Upgrade ubuntu/linux-azure-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1020.23~22.04.1
  18. Upgrade

    Upgrade ubuntu/linux-azure-fde to a version that resolves this vulnerability.

    Fixed in 5.15.0-1076.85.1
  19. Upgrade

    Upgrade ubuntu/linux-gcp to a version that resolves this vulnerability.

    Fixed in 5.15.0-1071.79
  20. Upgrade

    Upgrade ubuntu/linux-gcp-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1019.21~22.04.1
  21. Upgrade

    Upgrade ubuntu/linux-gke to a version that resolves this vulnerability.

    Fixed in 5.15.0-1069.75
  22. Upgrade

    Upgrade ubuntu/linux-gkeop to a version that resolves this vulnerability.

    Fixed in 5.15.0-1055.62
  23. Upgrade

    Upgrade ubuntu/linux-hwe-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51~22.04.1
  24. Upgrade

    Upgrade ubuntu/linux-ibm to a version that resolves this vulnerability.

    Fixed in 5.15.0-1065.68
  25. Upgrade

    Upgrade ubuntu/linux-ibm-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1017.17~22.04.1
  26. Upgrade

    Upgrade ubuntu/linux-intel-iotg to a version that resolves this vulnerability.

    Fixed in 5.15.0-1067.73
  27. Upgrade

    Upgrade ubuntu/linux-kvm to a version that resolves this vulnerability.

    Fixed in 5.15.0-1069.74
  28. Upgrade

    Upgrade ubuntu/linux-lowlatency to a version that resolves this vulnerability.

    Fixed in 5.15.0-125.135
  29. Upgrade

    Upgrade ubuntu/linux-lowlatency-hwe-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51.1~22.04.1
  30. Upgrade

    Upgrade ubuntu/linux-nvidia to a version that resolves this vulnerability.

    Fixed in 5.15.0-1067.68
  31. Upgrade

    Upgrade ubuntu/linux-nvidia-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1019.21~22.04.1
  32. Upgrade

    Upgrade ubuntu/linux-nvidia-tegra to a version that resolves this vulnerability.

    Fixed in 5.15.0-1032.32
  33. Upgrade

    Upgrade ubuntu/linux-nvidia-tegra-igx to a version that resolves this vulnerability.

    Fixed in 5.15.0-1020.20
  34. Upgrade

    Upgrade ubuntu/linux-oracle to a version that resolves this vulnerability.

    Fixed in 5.15.0-1070.76
  35. Upgrade

    Upgrade ubuntu/linux-oracle-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1017.18~22.04.1
  36. Upgrade

    Upgrade ubuntu/linux-raspi to a version that resolves this vulnerability.

    Fixed in 5.15.0-1065.68
  37. Upgrade

    Upgrade ubuntu/linux-riscv-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51.1~22.04.1
  38. Upgrade

    Upgrade ubuntu/linux-xilinx-zynqmp to a version that resolves this vulnerability.

    Fixed in 5.15.0-1038.42
  39. Upgrade

    Upgrade ubuntu/linux-bluefield to a version that resolves this vulnerability.

    Fixed in 5.15.0-1056.58
  40. Upgrade

    Upgrade ubuntu/linux-intel-iot-realtime to a version that resolves this vulnerability.

    Fixed in 5.15.0-1066.68
  41. Upgrade

    Upgrade ubuntu/linux-realtime to a version that resolves this vulnerability.

    Fixed in 5.15.0-1073.81
  42. Upgrade

    Upgrade ubuntu/linux-realtime-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.1-1013.14~22.04.1
  43. Upgrade

    Upgrade ubuntu/linux-aws-fips to a version that resolves this vulnerability.

    Fixed in 5.15.0-1072.78+fips1
  44. Upgrade

    Upgrade ubuntu/linux-azure-fips to a version that resolves this vulnerability.

    Fixed in 5.15.0-1075.84+fips1
  45. Upgrade

    Upgrade ubuntu/linux-fips to a version that resolves this vulnerability.

    Fixed in 5.15.0-125.135+fips1
  46. Upgrade

    Upgrade ubuntu/linux-gcp-fips to a version that resolves this vulnerability.

    Fixed in 5.15.0-1071.79+fips1
  47. Upgrade

    Upgrade ubuntu/linux to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51
  48. Upgrade

    Upgrade ubuntu/linux-aws to a version that resolves this vulnerability.

    Fixed in 6.8.0-1020.22
  49. Upgrade

    Upgrade ubuntu/linux-azure to a version that resolves this vulnerability.

    Fixed in 6.8.0-1020.23
  50. Upgrade

    Upgrade ubuntu/linux-gcp to a version that resolves this vulnerability.

    Fixed in 6.8.0-1019.21
  51. Upgrade

    Upgrade ubuntu/linux-gke to a version that resolves this vulnerability.

    Fixed in 6.8.0-1015.19
  52. Upgrade

    Upgrade ubuntu/linux-gkeop to a version that resolves this vulnerability.

    Fixed in 6.8.0-1002.4
  53. Upgrade

    Upgrade ubuntu/linux-ibm to a version that resolves this vulnerability.

    Fixed in 6.8.0-1017.17
  54. Upgrade

    Upgrade ubuntu/linux-lowlatency to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51.1
  55. Upgrade

    Upgrade ubuntu/linux-nvidia to a version that resolves this vulnerability.

    Fixed in 6.8.0-1019.21
  56. Upgrade

    Upgrade ubuntu/linux-nvidia-lowlatency to a version that resolves this vulnerability.

    Fixed in 6.8.0-1019.21.1
  57. Upgrade

    Upgrade ubuntu/linux-oem-6.8 to a version that resolves this vulnerability.

    Fixed in 6.8.0-1018.18
  58. Upgrade

    Upgrade ubuntu/linux-oracle to a version that resolves this vulnerability.

    Fixed in 6.8.0-1017.18
  59. Upgrade

    Upgrade ubuntu/linux-raspi to a version that resolves this vulnerability.

    Fixed in 6.8.0-1016.18
  60. Upgrade

    Upgrade ubuntu/linux-riscv to a version that resolves this vulnerability.

    Fixed in 6.8.0-50.51.1
  61. Upgrade

    Upgrade ubuntu/linux-xilinx to a version that resolves this vulnerability.

    Fixed in 6.8.0-1017.18
  62. Upgrade

    Upgrade ubuntu/linux-raspi-realtime to a version that resolves this vulnerability.

    Fixed in 6.8.0-2015.16
  63. Upgrade

    Upgrade ubuntu/linux-realtime to a version that resolves this vulnerability.

    Fixed in 6.8.1-1013.14
  64. Upgrade

    Upgrade ubuntu/linux-fips to a version that resolves this vulnerability.

    Fixed in 6.8.0-78.78+fips1
  65. Compensating control

    Fix copy_fd_bitmaps() handling in the Linux kernel: pass the bitmap size in words, copy only the first count/BITS_PER_LONG bits from old->full_fds_bits[], and zero-fill the remaining words (for example, via bitmap_copy_and_expand(to, from, bits_to_copy, size)); ensure dup_fd() applies this behavior when handling CLOSE_RANGE_UNSHARE.

Event History

Sep 11, 2024
CVE Published
via OSV·04:15 PM
Data Sourced
via OSV·04:15 PM
DescriptionSeverityAffected Software

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203