In the Linux kernel, the following vulnerability has been resolved:
nfs: fix UAF in direct writes
In production we have been hitting the following warning consistently
------------[ cut here ]------------ refcount_t: underflow; use-after-free. WARNING: CPU: 17 PID: 1800359 at lib/refcount.c:28 refcount_warn_saturate+0x9c/0xe0 Workqueue: nfsiod nfs_direct_write_schedule_work [nfs] RIP: 0010:refcount_warn_saturate+0x9c/0xe0 PKRU: 55555554 Call Trace: <TASK> ? __warn+0x9f/0x130 ? refcount_warn_saturate+0x9c/0xe0 ? report_bug+0xcc/0x150 ? handle_bug+0x3d/0x70 ? exc_invalid_op+0x16/0x40 ? asm_exc_invalid_op+0x16/0x20 ? refcount_warn_saturate+0x9c/0xe0 nfs_direct_write_schedule_work+0x237/0x250 [nfs] process_one_work+0x12f/0x4a0 worker_thread+0x14e/0x3b0 ? ZSTD_getCParams_internal+0x220/0x220 kthread+0xdc/0x120 ? __btf_name_valid+0xa0/0xa0 ret_from_fork+0x1f/0x30
This is because we're completing the nfs_direct_request twice in a row.
The source of this is when we have our commit requests to submit, we process them and send them off, and then in the completion path for the commit requests we have
if (nfs_commit_end(cinfo.mds)) nfs_direct_write_complete(dreq);
However since we're submitting asynchronous requests we sometimes have one that completes before we submit the next one, so we end up calling complete on the nfs_direct_request twice.
The only other place we use nfs_generic_commit_list() is in __nfs_commit_inode, which wraps this call in a
nfs_commit_begin(); nfs_commit_end();
Which is a common pattern for this style of completion handling, one that is also repeated in the direct code with get_dreq()/put_dreq() calls around where we process events as well as in the completion paths.
Fix this by using the same pattern for the commit requests.
Before with my 200 node rocksdb stress running this warning would pop every 10ish minutes. With my patch the stress test has been running for several hours without popping.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-debugUpgrade kernel-rt-coreUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug-kvmUpgrade kernel-zfcpdump-develUpgrade kernel-debug-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-headersUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-debug-coreUpgrade kernel-tools-libsUpgrade python3-perfUpgrade kernelUpgrade kernel-debug-develUpgrade kernel-debug-coreUpgrade kernel-develUpgrade kernel-zfcpdumpUpgrade kernel-modules-extraUpgrade kernel-rt-kvmUpgrade kernel-zfcpdump-coreUpgrade kernel-modulesUpgrade bpftoolUpgrade kernel-coreUpgrade perfUpgrade kernel-rt-debugUpgrade kernel-rt-debug-modulesUpgrade kernel-rtUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-modules-extraUpgrade kernel-docUpgrade kernel-toolsUpgrade kernel-rt-develUpgrade kernel-rt-modulesUpgrade kernel-zfcpdump-modules | Aug 12, 2024 | May 1, 2024 |
| Amazon Linux Ami 2 | — | Upgrade python-perf-debuginfoUpgrade kernel-livepatch-5.15.156-102.160Upgrade kernel-toolsUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade bpftoolUpgrade python-perfUpgrade kernel-livepatch-5.10.215-203.850Upgrade kernel-tools-develUpgrade kernel-headersUpgrade kernel-debuginfo-common-aarch64Upgrade perf-debuginfoUpgrade kernelUpgrade kernel-debuginfoUpgrade perfUpgrade kernel-tools-debuginfoUpgrade kernel-devel | Aug 14, 2024 | May 1, 2024 |
| Amazon_linux_2023 | — | Upgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade perfUpgrade kernel-headersUpgrade kernel-tools-develUpgrade kernel-modules-extra-commonUpgrade kernel-livepatch-6.1.84-99.169Upgrade python3-perfUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpfUpgrade kernel-modules-extraUpgrade kernelUpgrade python3-perf-debuginfoUpgrade kernel-toolsUpgrade kernel-libbpf-staticUpgrade kernel-develUpgrade bpftoolUpgrade kernel-libbpf-develUpgrade bpftool-debuginfo | Feb 17, 2025 | May 1, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-toolsUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade python3-perf | Jul 16, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade python3-perfUpgrade bpftoolUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernel-abi-stablelists | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libsUpgrade python3-perf | Oct 8, 2024 | May 1, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernel | Jul 17, 2024 | May 1, 2024 |
| Oracle_linux | — | Upgrade kernelUpgrade kernel-uek | Aug 16, 2024 | May 1, 2024 |
| Redhat_linux | — | Upgrade kernelUpgrade kernel-rtNo solution exists | Aug 12, 2024 | May 1, 2024 |
| Rocky_linux | — | Upgrade bpftool-debuginfoUpgrade kernel-rt-kvmUpgrade kernel-tools-libs-develUpgrade kernel-debug-debuginfoUpgrade kernel-rt-debuginfoUpgrade kernel-rt-debug-debuginfoUpgrade kernel-debug-modulesUpgrade perfUpgrade kernel-rt-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-rt-debug-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-rtUpgrade kernel-rt-develUpgrade kernel-coreUpgrade kernel-rt-debug-develUpgrade kernel-tools-debuginfoUpgrade kernel-modules-extraUpgrade kernel-debug-develUpgrade kernel-develUpgrade kernel-headersUpgrade kernel-debuginfoUpgrade perf-debuginfoUpgrade kernel-debug-coreUpgrade python3-perf-debuginfoUpgrade kernelUpgrade kernel-rt-debug-modulesUpgrade kernel-debugUpgrade python3-perfUpgrade kernel-rt-debug-kvmUpgrade kernel-cross-headersUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-modulesUpgrade kernel-rt-debugUpgrade kernel-rt-coreUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-tools-libs | Aug 22, 2024 | May 1, 2024 |
| Suse | — | Upgrade kernel-azure-extraUpgrade kernel-rt_debugUpgrade ocfs2-kmp-rtUpgrade dtb-marvellUpgrade kernel-debug-livepatch-develUpgrade kernel-defaultUpgrade kernel-devel-azureUpgrade kernel-macrosUpgrade dtb-apmUpgrade kernel-default-extraUpgrade kernel-kvmsmallUpgrade dtb-nvidiaUpgrade gfs2-kmp-64kbUpgrade kernel-default-baseUpgrade reiserfs-kmp-rtUpgrade gfs2-kmp-rtUpgrade dtb-socionextUpgrade kernel-azure-vdsoUpgrade dtb-armUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-rt-livepatch-develUpgrade kernel-default-manUpgrade kernel-symsUpgrade kernel-azure-livepatch-develUpgrade kernel-syms-azureUpgrade dlm-kmp-azureUpgrade kernel-docsUpgrade kernel-azure-baseUpgrade kernel-zfcpdumpUpgrade kernel-kvmsmall-vdsoUpgrade kernel-kvmsmall-develUpgrade kernel-syms-rtUpgrade dtb-appleUpgrade kernel-64kb-livepatch-develUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-defaultUpgrade kernel-obs-qaUpgrade dtb-amdUpgrade kselftests-kmp-rtUpgrade kernel-docs-htmlUpgrade kernel-rt-vdsoUpgrade kernel-rtUpgrade kselftests-kmp-defaultUpgrade kernel-azure-develUpgrade dtb-amlogicUpgrade dtb-broadcomUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-livepatch-develUpgrade gfs2-kmp-defaultUpgrade kselftests-kmp-64kbUpgrade kernel-source-rtUpgrade kernel-source-azureUpgrade kernel-rt_debug-develUpgrade kernel-debugUpgrade dtb-hisiliconUpgrade dtb-amazonUpgrade dtb-alteraUpgrade kernel-64kb-optionalUpgrade dtb-sprdUpgrade kernel-default-livepatchUpgrade dtb-mediatekUpgrade dtb-renesasUpgrade kernel-debug-vdsoUpgrade kernel-64kb-extraUpgrade reiserfs-kmp-64kbUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-develUpgrade kernel-64kbUpgrade kernel-debug-develUpgrade ocfs2-kmp-azureUpgrade kernel-azureUpgrade dtb-rockchipUpgrade cluster-md-kmp-azureUpgrade ocfs2-kmp-64kbUpgrade kernel-devel-rtUpgrade cluster-md-kmp-64kbUpgrade kernel-default-develUpgrade kernel-rt-livepatchUpgrade gfs2-kmp-azureUpgrade dlm-kmp-rtUpgrade cluster-md-kmp-rtUpgrade reiserfs-kmp-azureUpgrade kernel-source-vanillaUpgrade kernel-default-optionalUpgrade dtb-exynosUpgrade ocfs2-kmp-defaultUpgrade kernel-azure-optionalUpgrade dtb-caviumUpgrade reiserfs-kmp-defaultUpgrade kernel-default-vdsoUpgrade kernel-64kb-develUpgrade dtb-xilinxUpgrade dtb-lgUpgrade kselftests-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-sourceUpgrade kernel-rt-optionalUpgrade kernel-obs-buildUpgrade kernel-develUpgrade kernel-default-base-rebuildUpgrade dtb-qcomUpgrade dtb-freescaleUpgrade dtb-allwinnerUpgrade dlm-kmp-64kb | Jun 12, 2024 | May 1, 2024 |
| Ubuntu | — | Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1068-azure-fdeUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-oem-20.04dUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-5.15.0-1065-awsUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1064-gcpUpgrade linux-image-5.15.0-1058-ibmUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-5.15.0-1048-gkeopUpgrade linux-image-oem-20.04cUpgrade linux-image-oracle-64kUpgrade linux-image-virtualUpgrade linux-image-raspiUpgrade linux-image-5.15.0-116-generic-64kUpgrade linux-image-azure-cvmUpgrade linux-image-intel-iotgUpgrade linux-image-awsUpgrade linux-image-oem-24.04Upgrade linux-image-5.15.0-1060-intel-iotgUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-fdeUpgrade linux-image-5.15.0-116-genericUpgrade linux-image-azureUpgrade linux-image-kvmUpgrade linux-image-5.15.0-1060-nvidia-lowlatencyUpgrade linux-image-5.15.0-1060-nvidiaUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-5.15.0-116-lowlatencyUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-gcpUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-6.8.0-1008-azureUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-azure-lts-22.04Upgrade linux-image-oem-20.04bUpgrade linux-image-gkeUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-1062-kvmUpgrade linux-image-ibmUpgrade linux-image-5.15.0-1062-gkeUpgrade linux-image-5.15.0-1068-azureUpgrade linux-image-genericUpgrade linux-image-5.15.0-116-lowlatency-64kUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-oem-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-intelUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-gkeopUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-raspi-nolpaeUpgrade linux-image-5.15.0-116-generic-lpaeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-lowlatencyUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1065-gcpUpgrade linux-image-nvidiaUpgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-oracleUpgrade linux-image-5.15.0-1063-oracleUpgrade linux-image-gke-5.15 | Jul 1, 2024 | May 1, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 1, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub