Cloudanix VulnDB

CVE-2024-26696

None

CVSS

—

EPSS

0.2%

Published

Apr 3, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in the Linux kernel's nilfs2 filesystem can cause the computer to freeze when certain memory operations and file writes happen at the same time, potentially requiring a restart and risking data problems.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Theoretical
Impact
Denial Of Service
Component
OS kernel
Class
Race Condition
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Race condition in nilfs2 allows nilfs_page_mkwrite() to skip waiting for writeback completion when the backing device does not require stable writes, enabling a folio to be dirtied while migrate_pages_batch() holds its lock, resulting in deadlock between the log writer thread in nilfs_lookup_dirty_data_buffers() and the migrating process.

Why it matters to the business

Unpatched kernels can experience filesystem-induced hangs that render the system unresponsive, require reboots, and risk metadata corruption or failed recovery after unclean shutdowns, disrupting workloads that rely on nilfs2.

How an attack unfolds

An attacker with local code execution triggers concurrent mbind() page migration and nilfs2 log writing; the conditional wait in nilfs_page_mkwrite() permits modification of a folio still under writeback, causing the log writer to block on the same locked folio and deadlock the system.

How to fix it

Upgrade the Linux kernel to the commit 228742b2ddfb99dfd71e5a307e6088ab6836272e or later stable releases that unconditionally wait for writeback in nilfs_page_mkwrite(); rebuild and reboot with the patched kernel; for systems that cannot immediately upgrade, avoid use of nilfs2 on devices without stable-write guarantees until patched.

How to confirm the fix worked

Confirm the running kernel contains commit 228742b2ddfb99dfd71e5a307e6088ab6836272e or an equivalent backport; exercise nilfs2 write and mbind workloads while monitoring for hangs; verify that nilfs_page_mkwrite() now always waits for writeback regardless of stable-write device flags.

Typical attack path

  1. Obtain local execution on a system using nilfs2
  2. Invoke mbind() or equivalent page-migration syscall on a mapped file
  3. Simultaneously trigger nilfs2 log creation via writes or fsync
  4. Exploit the missing writeback wait to dirty the folio during migration
  5. Induce deadlock between migrate_pages_batch() and nilfs_lookup_dirty_data_buffers()

How to detect it

Review system logs for nilfs2 hang traces involving migrate_pages_batch and nilfs_lookup_dirty_data_buffers; inspect dmesg or kernel logs for deadlock indicators on nilfs2 mounts; correlate with processes performing mbind or memory migration on nilfs2 filesystems.

What your security team should do

  • Prioritize kernel updates containing 228742b2ddfb99dfd71e5a307e6088ab6836272e on all nilfs2 deployments
  • Add kernel version checks to asset inventory and block deployment of vulnerable kernels
  • Monitor for nilfs2-related hangs in production workloads until remediation is complete
  • Test patched kernels with migration and log-writing workloads before broad rollout

The record

In the Linux kernel, the following vulnerability has been resolved: nilfs2: fix hang in nilfs_lookup_dirty_data_buffers() Syzbot reported a hang issue in migrate_pages_batch() called by mbind() and nilfs_lookup_dirty_data_buffers() called in the log writer of nilfs2. While migrate_pages_batch() locks a folio and waits for the writeback to complete, the log writer thread that should bring the writeback to completion picks up the folio being written back in nilfs_lookup_dirty_data_buffers() that it calls for subsequent log creation and was trying to lock the folio. Thus causing a deadlock. In the first place, it is unexpected that folios/pages in the middle of writeback will be updated and become dirty. Nilfs2 adds a checksum to verify the validity of the log being written and uses it for recovery at mount, so data changes during writeback are suppressed. Since this is broken, an unclean shutdown could potentially cause recovery to fail. Investigation revealed that the root cause is that the wait for writeback completion in nilfs_page_mkwrite() is conditional, and if the backing device does not require stable writes, data may be modified without waiting. Fix these issues by making nilfs_page_mkwrite() wait for writeback to finish regardless of the stable write requirement of the backing device.

Affected packages

Ecosystem Package Introduced Fixed
Debian:10 linux 0 4.19.316-1
Debian:10 linux-5.10 0 5.10.216-1~deb10u1
Debian:11 linux 0 5.10.216-1
Debian:12 linux 0 6.1.82-1
Debian:13 linux 0 6.7.7-1
Linux Kernel 3.9.0 4.19.307
SUSE:Linux Enterprise High Availability Extension 15 SP5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-livepatch-SLE15-SP5-RT_Update_14 0 1-150500.11.5.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_13 0 1-150500.11.3.2
SUSE:Linux Enterprise Micro 5.5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Micro 5.5 kernel-default-base 0 5.14.21-150500.55.62.2.150500.6.27.2
SUSE:Linux Enterprise Micro 5.5 kernel-rt 0 5.14.21-150500.13.52.1
SUSE:Linux Enterprise Micro 5.5 kernel-source-rt 0 5.14.21-150500.13.52.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-64kb 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-default-base 0 5.14.21-150500.55.62.2.150500.6.27.2
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-source 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-zfcpdump 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-docs 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-obs-build 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-source 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-syms 0 5.14.21-150500.55.62.1
SUSE:Linux Enterprise Module for Legacy 15 SP5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-azure 0 5.14.21-150500.33.48.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-source-azure 0 5.14.21-150500.33.48.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-syms-azure 0 5.14.21-150500.33.48.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.5.4
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.5.4
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.5.1
SUSE:Linux Enterprise Workstation Extension 15 SP5 kernel-default 0 5.14.21-150500.55.62.2
SUSE:Real Time Module 15 SP5 kernel-rt 0 5.14.21-150500.13.52.1
SUSE:Real Time Module 15 SP5 kernel-rt_debug 0 5.14.21-150500.13.52.1
SUSE:Real Time Module 15 SP5 kernel-source-rt 0 5.14.21-150500.13.52.1
SUSE:Real Time Module 15 SP5 kernel-syms-rt 0 5.14.21-150500.13.52.1
Ubuntu:16.04:LTS linux-hwe-edge 0 No fix
Ubuntu:18.04:LTS linux-aws-5.0 0 No fix
Ubuntu:18.04:LTS linux-aws-5.3 0 No fix
Ubuntu:18.04:LTS linux-azure 0 No fix
Ubuntu:18.04:LTS linux-azure-5.3 0 No fix
Ubuntu:18.04:LTS linux-azure-edge 0 No fix
Ubuntu:18.04:LTS linux-gcp 0 No fix
Ubuntu:18.04:LTS linux-gcp-5.3 0 No fix
Ubuntu:18.04:LTS linux-gke-4.15 0 No fix
Ubuntu:18.04:LTS linux-gke-5.4 0 No fix
Ubuntu:18.04:LTS linux-gkeop-5.4 0 No fix
Ubuntu:18.04:LTS linux-hwe 0 No fix
Ubuntu:18.04:LTS linux-hwe-edge 0 No fix
Ubuntu:18.04:LTS linux-oem 0 No fix
Ubuntu:18.04:LTS linux-oracle-5.0 0 No fix
Ubuntu:18.04:LTS linux-oracle-5.3 0 No fix
Ubuntu:20.04:LTS linux 0 5.4.0-181.201
Ubuntu:20.04:LTS linux-aws 0 5.4.0-1124.134
Ubuntu:20.04:LTS linux-aws-5.11 0 No fix
Ubuntu:20.04:LTS linux-aws-5.13 0 No fix
Ubuntu:20.04:LTS linux-aws-5.15 0 5.15.0-1061.67~20.04.1
Ubuntu:20.04:LTS linux-aws-5.8 0 No fix
Ubuntu:20.04:LTS linux-azure 0 5.4.0-1129.136
Ubuntu:20.04:LTS linux-azure-5.11 0 No fix
Ubuntu:20.04:LTS linux-azure-5.13 0 No fix
Ubuntu:20.04:LTS linux-azure-5.15 0 5.15.0-1063.72~20.04.1
Ubuntu:20.04:LTS linux-azure-5.8 0 No fix
Ubuntu:20.04:LTS linux-azure-fde 0 No fix
Ubuntu:20.04:LTS linux-azure-fde-5.15 0 5.15.0-1063.72~20.04.1.1
Ubuntu:20.04:LTS linux-bluefield 0 5.4.0-1084.91
Ubuntu:20.04:LTS linux-gcp 0 5.4.0-1128.137
Ubuntu:20.04:LTS linux-gcp-5.11 0 No fix
Ubuntu:20.04:LTS linux-gcp-5.13 0 No fix
Ubuntu:20.04:LTS linux-gcp-5.15 0 5.15.0-1059.67~20.04.1
Ubuntu:20.04:LTS linux-gcp-5.8 0 No fix
Ubuntu:20.04:LTS linux-gke 0 No fix
Ubuntu:20.04:LTS linux-gke-5.15 0 No fix
Ubuntu:20.04:LTS linux-gkeop 0 5.4.0-1091.95
Ubuntu:20.04:LTS linux-gkeop-5.15 0 5.15.0-1044.51~20.04.1
Ubuntu:20.04:LTS linux-hwe-5.11 0 No fix
Ubuntu:20.04:LTS linux-hwe-5.13 0 No fix
Ubuntu:20.04:LTS linux-hwe-5.15 0 5.15.0-106.116~20.04.1
Ubuntu:20.04:LTS linux-hwe-5.8 0 No fix
Ubuntu:20.04:LTS linux-ibm 0 5.4.0-1071.76
Ubuntu:20.04:LTS linux-ibm-5.15 0 5.15.0-1054.57~20.04.1
Ubuntu:20.04:LTS linux-intel-5.13 0 No fix
Ubuntu:20.04:LTS linux-intel-iotg-5.15 0 5.15.0-1058.64~20.04.1
Ubuntu:20.04:LTS linux-iot 0 5.4.0-1036.37
Ubuntu:20.04:LTS linux-kvm 0 5.4.0-1112.119
Ubuntu:20.04:LTS linux-lowlatency-hwe-5.15 0 5.15.0-106.116~20.04.1
Ubuntu:20.04:LTS linux-nvidia-tegra-5.15 0 5.15.0-1027.27~20.04.1
Ubuntu:20.04:LTS linux-oem-5.10 0 No fix
Ubuntu:20.04:LTS linux-oem-5.13 0 No fix
Ubuntu:20.04:LTS linux-oem-5.14 0 No fix
Ubuntu:20.04:LTS linux-oem-5.6 0 No fix
Ubuntu:20.04:LTS linux-oracle 0 5.4.0-1123.132
Ubuntu:20.04:LTS linux-oracle-5.11 0 No fix
Ubuntu:20.04:LTS linux-oracle-5.13 0 No fix
Ubuntu:20.04:LTS linux-oracle-5.15 0 5.15.0-1059.65~20.04.1
Ubuntu:20.04:LTS linux-oracle-5.8 0 No fix
Ubuntu:20.04:LTS linux-raspi 0 5.4.0-1108.120
Ubuntu:20.04:LTS linux-raspi2 0 No fix
Ubuntu:20.04:LTS linux-riscv 0 No fix
Ubuntu:20.04:LTS linux-riscv-5.11 0 No fix
Ubuntu:20.04:LTS linux-riscv-5.15 0 5.15.0-1057.61~20.04.1
Ubuntu:20.04:LTS linux-riscv-5.8 0 No fix
Ubuntu:20.04:LTS linux-xilinx-zynqmp 0 5.4.0-1043.47
Ubuntu:22.04:LTS linux 0 5.15.0-106.116
Ubuntu:22.04:LTS linux-allwinner-5.19 0 No fix
Ubuntu:22.04:LTS linux-aws 0 5.15.0-1061.67
Ubuntu:22.04:LTS linux-aws-5.19 0 No fix
Ubuntu:22.04:LTS linux-aws-6.2 0 No fix
Ubuntu:22.04:LTS linux-aws-6.5 0 6.5.0-1023.23~22.04.1
Ubuntu:22.04:LTS linux-aws-6.8 0 6.8.0-1009.9~22.04.2
Ubuntu:22.04:LTS linux-azure 0 5.15.0-1063.72
Ubuntu:22.04:LTS linux-azure-5.19 0 No fix
Ubuntu:22.04:LTS linux-azure-6.2 0 No fix
Ubuntu:22.04:LTS linux-azure-6.5 0 6.5.0-1024.25~22.04.1
Ubuntu:22.04:LTS linux-azure-6.8 0 6.8.0-1008.8~22.04.1
Ubuntu:22.04:LTS linux-azure-fde 0 5.15.0-1063.72.1
Ubuntu:22.04:LTS linux-azure-fde-5.19 0 No fix
Ubuntu:22.04:LTS linux-azure-fde-6.2 0 No fix
Ubuntu:22.04:LTS linux-azure-fde-6.8 0 No fix
Ubuntu:22.04:LTS linux-gcp 0 5.15.0-1059.67
Ubuntu:22.04:LTS linux-gcp-5.19 0 No fix
Ubuntu:22.04:LTS linux-gcp-6.2 0 No fix
Ubuntu:22.04:LTS linux-gcp-6.5 0 6.5.0-1024.26~22.04.1
Ubuntu:22.04:LTS linux-gcp-6.8 0 6.8.0-1010.11~22.04.1
Ubuntu:22.04:LTS linux-gke 0 5.15.0-1058.63
Ubuntu:22.04:LTS linux-gkeop 0 5.15.0-1044.51
Ubuntu:22.04:LTS linux-hwe-5.19 0 No fix
Ubuntu:22.04:LTS linux-hwe-6.2 0 No fix
Ubuntu:22.04:LTS linux-hwe-6.5 0 6.5.0-44.44~22.04.1
Ubuntu:22.04:LTS linux-hwe-6.8 0 6.8.0-38.38~22.04.1
Ubuntu:22.04:LTS linux-ibm 0 5.15.0-1054.57
Ubuntu:22.04:LTS linux-intel-iot-realtime 0 No fix
Ubuntu:22.04:LTS linux-intel-iotg 0 5.15.0-1057.63
Ubuntu:22.04:LTS linux-kvm 0 5.15.0-1058.63
Ubuntu:22.04:LTS linux-lowlatency 0 5.15.0-106.116
Ubuntu:22.04:LTS linux-lowlatency-hwe-5.19 0 No fix
Ubuntu:22.04:LTS linux-lowlatency-hwe-6.2 0 No fix
Ubuntu:22.04:LTS linux-lowlatency-hwe-6.5 0 6.5.0-44.44.1~22.04.1
Ubuntu:22.04:LTS linux-lowlatency-hwe-6.8 0 6.8.0-38.38.1~22.04.2
Ubuntu:22.04:LTS linux-nvidia 0 5.15.0-1054.55
Ubuntu:22.04:LTS linux-nvidia-6.2 0 No fix
Ubuntu:22.04:LTS linux-nvidia-6.5 0 6.5.0-1023.24
Ubuntu:22.04:LTS linux-nvidia-6.8 0 6.8.0-1008.8~22.04.1
Ubuntu:22.04:LTS linux-nvidia-tegra 0 5.15.0-1026.26
Ubuntu:22.04:LTS linux-nvidia-tegra-igx 0 5.15.0-1015.15
Ubuntu:22.04:LTS linux-oem-5.17 0 No fix
Ubuntu:22.04:LTS linux-oem-6.0 0 No fix
Ubuntu:22.04:LTS linux-oem-6.1 0 No fix
Ubuntu:22.04:LTS linux-oem-6.5 0 No fix
Ubuntu:22.04:LTS linux-oem-6.5 0 6.5.0-1027.28
Ubuntu:22.04:LTS linux-oracle 0 5.15.0-1059.65
Ubuntu:22.04:LTS linux-oracle-6.5 0 6.5.0-1026.26~22.04.1
Ubuntu:22.04:LTS linux-oracle-6.8 0 6.8.0-1006.6~22.04.3
Ubuntu:22.04:LTS linux-raspi 0 5.15.0-1054.57
Ubuntu:22.04:LTS linux-realtime 0 No fix
Ubuntu:22.04:LTS linux-riscv 0 No fix
Ubuntu:22.04:LTS linux-riscv-5.19 0 No fix
Ubuntu:22.04:LTS linux-riscv-6.5 0 No fix
Ubuntu:22.04:LTS linux-riscv-6.8 0 6.8.0-38.38.1~22.04.1
Ubuntu:22.04:LTS linux-starfive-5.19 0 No fix
Ubuntu:22.04:LTS linux-starfive-6.2 0 No fix
Ubuntu:22.04:LTS linux-starfive-6.5 0 6.5.0-1017.18~22.04.1
Ubuntu:22.04:LTS linux-xilinx-zynqmp 0 No fix
Ubuntu:22.04:LTS linux-xilinx-zynqmp 0 5.15.0-1030.34
Ubuntu:22.04:LTS:for:NVIDIA:BlueField linux-bluefield 0 No fix
Ubuntu:23.10 linux 0 6.5.0-44.44
Ubuntu:23.10 linux-gcp 0 6.5.0-1024.26
Ubuntu:23.10 linux-raspi 0 6.5.0-1020.23
Ubuntu:24.04:LTS linux 0 6.8.0-11.11
Ubuntu:24.04:LTS linux-aws 0 6.8.0-1006.6
Ubuntu:24.04:LTS linux-azure 0 6.8.0-1001.1
Ubuntu:24.04:LTS linux-azure-fde 0 No fix
Ubuntu:24.04:LTS linux-gcp 0 6.8.0-1002.2
Ubuntu:24.04:LTS linux-gke 0 6.8.0-1003.5
Ubuntu:24.04:LTS linux-gkeop 0 6.8.0-1001.3
Ubuntu:24.04:LTS linux-ibm 0 6.8.0-1003.3
Ubuntu:24.04:LTS linux-lowlatency 0 6.8.0-25.25.3
Ubuntu:24.04:LTS linux-nvidia 0 6.8.0-1007.7
Ubuntu:24.04:LTS linux-nvidia-lowlatency 0 6.8.0-1009.9.1
Ubuntu:24.04:LTS linux-oem-6.11 0 6.11.0-1007.7
Ubuntu:24.04:LTS linux-oem-6.8 0 6.8.0-1003.3
Ubuntu:24.04:LTS linux-oracle 0 6.8.0-1004.4
Ubuntu:24.04:LTS linux-raspi 0 6.8.0-1001.1
Ubuntu:24.04:LTS linux-raspi-realtime 0 No fix
Ubuntu:24.04:LTS linux-realtime 0 6.8.0-1008.19
Ubuntu:24.04:LTS linux-riscv 0 6.8.0-20.20.1
Ubuntu:24.10 linux 0 6.8.0-31.31
Ubuntu:24.10 linux-aws 0 6.8.0-1008.8
Ubuntu:24.10 linux-azure 0 6.8.0-1007.7
Ubuntu:24.10 linux-gcp 0 6.8.0-1007.7
Ubuntu:24.10 linux-lowlatency 0 6.8.0-31.31.1
Ubuntu:24.10 linux-oracle 0 6.8.0-1005.5
Ubuntu:24.10 linux-raspi 0 6.8.0-1004.4
Ubuntu:24.10 linux-realtime 0 6.11.0-1001.1
Ubuntu:24.10 linux-riscv 0 6.8.0-31.31.1
Ubuntu:Nvidia-BlueField:22.04:LTS linux-bluefield 0 5.15.0-1043.45
Ubuntu:Pro:14.04:LTS linux 0 No fix
Ubuntu:Pro:14.04:LTS linux-aws 0 No fix
Ubuntu:Pro:14.04:LTS linux-azure 0 No fix
Ubuntu:Pro:14.04:LTS linux-lts-xenial 0 No fix
Ubuntu:Pro:16.04:LTS linux 0 No fix

Related vulnerabilities