Description
In the Linux kernel, the following vulnerability has been resolved: efi/capsule-loader: fix incorrect sizeof in phys array reallocation The krealloc() call for cap_info->phys in __efi_capsule_setup_info() uses sizeof(phys_addr_t *) instead of sizeof(phys_addr_t), which might be causing an undersized allocation. The allocation is also inconsistent with the initial array allocation in efi_capsule_open() that allocates one entry with sizeof(phys_addr_t), and the efi_capsule_write() function that stores phys_addr_t values (not pointers) via page_to_phys(). On 64-bit systems where sizeof(phys_addr_t) == sizeof(phys_addr_t *), this goes unnoticed. On 32-bit systems with PAE where phys_addr_t is 64-bit but pointers are 32-bit, this allocates half the required space, which might lead to a heap buffer overflow when storing physical addresses. This is similar to the bug fixed in commit fccfa646ef36 ("efi/capsule-loader: fix incorrect allocation size") which fixed the same issue at the initial allocation site.
Product status
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 22022cd8851703a58f67615a17bc7e9e8682785b
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 67adde6bfdfd563a54b045d59aeb9a2d90c80697
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 608e1f7bc9d171ab26c1fba288c97fc76363c27d
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 8be69e9245f805566bac68ffc8574b64735fd996
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 5e185330d902b12fe8e6eb4b8514b5d736d8d66d
f24c4d478013d82bd1b943df566fff3561d52864 (git) before e0e6b14995fd6fa2c0df8c712d76ab32f0694c31
f24c4d478013d82bd1b943df566fff3561d52864 (git) before ab3f7098a3a27175b91cfc947950f5c26855801b
f24c4d478013d82bd1b943df566fff3561d52864 (git) before 48a428215782321b56956974f23593e40ce84b7a
95a362c9a6892085f714eb6e31eea6a0e3aa93bf (git)
4.14.13 (semver) before 4.15
4.15
Any version before 4.15
5.10.258 (semver)
5.15.209 (semver)
6.1.175 (semver)
6.6.141 (semver)
6.12.91 (semver)
6.18.33 (semver)
7.0.10 (semver)
7.1 (original_commit_for_fix)
References
git.kernel.org/...c/22022cd8851703a58f67615a17bc7e9e8682785b
git.kernel.org/...c/67adde6bfdfd563a54b045d59aeb9a2d90c80697
git.kernel.org/...c/608e1f7bc9d171ab26c1fba288c97fc76363c27d
git.kernel.org/...c/8be69e9245f805566bac68ffc8574b64735fd996
git.kernel.org/...c/5e185330d902b12fe8e6eb4b8514b5d736d8d66d
git.kernel.org/...c/e0e6b14995fd6fa2c0df8c712d76ab32f0694c31
git.kernel.org/...c/ab3f7098a3a27175b91cfc947950f5c26855801b
git.kernel.org/...c/48a428215782321b56956974f23593e40ce84b7a