| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-26974: crypto: qat - resolve race condition during AER recovery |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| crypto: qat - resolve race condition during AER recovery |
| |
| During the PCI AER system's error recovery process, the kernel driver |
| may encounter a race condition with freeing the reset_data structure's |
| memory. If the device restart will take more than 10 seconds the function |
| scheduling that restart will exit due to a timeout, and the reset_data |
| structure will be freed. However, this data structure is used for |
| completion notification after the restart is completed, which leads |
| to a UAF bug. |
| |
| This results in a KFENCE bug notice. |
| |
| BUG: KFENCE: use-after-free read in adf_device_reset_worker+0x38/0xa0 [intel_qat] |
| Use-after-free read at 0x00000000bc56fddf (in kfence-#142): |
| adf_device_reset_worker+0x38/0xa0 [intel_qat] |
| process_one_work+0x173/0x340 |
| |
| To resolve this race condition, the memory associated to the container |
| of the work_struct is freed on the worker if the timeout expired, |
| otherwise on the function that schedules the worker. |
| The timeout detection can be done by checking if the caller is |
| still waiting for completion or not by using completion_done() function. |
| |
| The Linux kernel CVE team has assigned CVE-2024-26974 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 4.19.312 with commit daba62d9eeddcc5b1081be7d348ca836c83c59d7 |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 5.4.274 with commit 8e81cd58aee14a470891733181a47d123193ba81 |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 5.10.215 with commit d03092550f526a79cf1ade7f0dfa74906f39eb71 |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 5.15.154 with commit 4ae5a97781ce7d6ecc9c7055396535815b64ca4f |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 6.1.84 with commit 226fc408c5fcd23cc4186f05ea3a09a7a9aef2f7 |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 6.6.24 with commit 8a5a7611ccc7b1fba8d933a9f22a2e76859d94dc |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 6.7.12 with commit 0c2cf5142bfb634c0ef0a1a69cdf37950747d0be |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 6.8.3 with commit bb279ead42263e9fb09480f02a4247b2c287d828 |
| Issue introduced in 3.17 with commit d8cba25d2c68992a6e7c1d329b690a9ebe01167d and fixed in 6.9 with commit 7d42e097607c4d246d99225bf2b195b6167a210c |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-26974 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/crypto/intel/qat/qat_common/adf_aer.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/daba62d9eeddcc5b1081be7d348ca836c83c59d7 |
| https://git.kernel.org/stable/c/8e81cd58aee14a470891733181a47d123193ba81 |
| https://git.kernel.org/stable/c/d03092550f526a79cf1ade7f0dfa74906f39eb71 |
| https://git.kernel.org/stable/c/4ae5a97781ce7d6ecc9c7055396535815b64ca4f |
| https://git.kernel.org/stable/c/226fc408c5fcd23cc4186f05ea3a09a7a9aef2f7 |
| https://git.kernel.org/stable/c/8a5a7611ccc7b1fba8d933a9f22a2e76859d94dc |
| https://git.kernel.org/stable/c/0c2cf5142bfb634c0ef0a1a69cdf37950747d0be |
| https://git.kernel.org/stable/c/bb279ead42263e9fb09480f02a4247b2c287d828 |
| https://git.kernel.org/stable/c/7d42e097607c4d246d99225bf2b195b6167a210c |