Cloudanix VulnDB

CVE-2021-46904

Medium · 5.5

CVSS

5.5

EPSS

0.3%

Published

Feb 26, 2024

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in how the system hands out device numbers can let a local user crash the entire machine by opening and closing certain modem-related devices.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Medium

What it actually does

A race in minor number allocation for hso tty devices allows multiple ttys to receive the same minor, causing the second unregistration attempt to dereference a null pointer and crash the kernel.

Why it matters to the business

Local users can trigger kernel crashes that render the system unavailable, interrupting services and requiring manual recovery or reboot.

How an attack unfolds

An attacker with local access opens multiple hso tty devices in quick succession; the flawed get_free_serial_index logic hands out the same minor to each, so the second close path performs an unregistration on an already-freed structure and hits the null dereference.

How to fix it

Upgrade the Linux kernel to a version containing the fix that renames get_free_serial_index to obtain_minor (immediate assignment) and set_serial_by_index to release_minor; apply the stable or distribution backport that resolves the double-unregistration condition.

How to confirm the fix worked

Confirm the running kernel contains the renamed obtain_minor and release_minor functions and that the hso serial minor bitmap is updated atomically on allocation; re-test concurrent open/close sequences of hso ttys to verify no duplicate minors are issued.

Typical attack path

  1. Obtain local shell or user context on a system with the hso driver loaded
  2. Open several /dev/ttyHS* devices concurrently to trigger repeated minor allocation
  3. Close the devices in an order that causes the second unregistration path to execute
  4. Kernel dereferences null pointer and panics

How to detect it

Inspect kernel logs for null pointer dereference oops traces referencing hso_serial, tty_unregister_device, or get_free_serial_index; correlate with processes that opened multiple /dev/ttyHS* nodes shortly before the crash.

  • hso_serial
  • get_free_serial_index
  • tty_unregister_device
  • obtain_minor
  • release_minor

What your security team should do

  • Prioritize kernel updates on any hosts exposing the hso driver
  • Restrict local user access to tty device nodes until patches are applied
  • Monitor for kernel oops or panic logs containing hso or tty_unregister

The record

In the Linux kernel, the following vulnerability has been resolved: net: hso: fix null-ptr-deref during tty device unregistration Multiple ttys try to claim the same the minor number causing a double unregistration of the same device. The first unregistration succeeds but the next one results in a null-ptr-deref. The get_free_serial_index() function returns an available minor number but doesn't assign it immediately. The assignment is done by the caller later. But before this assignment, calls to get_free_serial_index() would return the same minor number. Fix this by modifying get_free_serial_index to assign the minor number immediately after one is found to be and rename it to obtain_minor() to better reflect what it does. Similary, rename set_serial_by_index() to release_minor() and modify it to free up the minor number of the given hso_serial. Every obtain_minor() should have corresponding release_minor() call.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 5.10.38-1
Debian:12 linux 0 5.10.38-1
Debian:13 linux 0 5.10.38-1
SUSE:Enterprise Storage 7.1 kernel-64kb 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Enterprise Storage 7.1 kernel-docs 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-obs-build 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-preempt 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-source 0 5.3.18-150300.59.153.2
SUSE:Enterprise Storage 7.1 kernel-syms 0 5.3.18-150300.59.153.1
SUSE:Linux Enterprise High Availability Extension 12 SP5 kernel-default 0 4.12.14-122.216.1
SUSE:Linux Enterprise High Availability Extension 15 SP2 kernel-default 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Availability Extension 15 SP3 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-default 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-default-base 0 5.3.18-150200.24.183.1.150200.9.93.2
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-docs 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-obs-build 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-preempt 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-source 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS kernel-syms 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-64kb 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-docs 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-obs-build 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-preempt 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-source 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS kernel-syms 0 5.3.18-150300.59.153.1
SUSE:Linux Enterprise Live Patching 12 SP5 kernel-default 0 4.12.14-122.216.1
SUSE:Linux Enterprise Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_56 0 1-8.3.1
SUSE:Linux Enterprise Live Patching 15 SP2 kernel-default 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Live Patching 15 SP2 kernel-livepatch-SLE15-SP2_Update_46 0 1-150200.5.3.2
SUSE:Linux Enterprise Live Patching 15 SP3 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Live Patching 15 SP3 kernel-livepatch-SLE15-SP3_Update_42 0 1-150300.7.3.2
SUSE:Linux Enterprise Micro 5.1 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Micro 5.1 kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Linux Enterprise Micro 5.1 kernel-rt 0 5.3.18-150300.161.1
SUSE:Linux Enterprise Micro 5.1 kernel-source-rt 0 5.3.18-150300.161.1
SUSE:Linux Enterprise Micro 5.2 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Micro 5.2 kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Linux Enterprise Micro 5.2 kernel-rt 0 5.3.18-150300.161.1
SUSE:Linux Enterprise Micro 5.2 kernel-source-rt 0 5.3.18-150300.161.1
SUSE:Linux Enterprise Real Time 12 SP5 kernel-rt 0 4.12.14-10.182.1
SUSE:Linux Enterprise Real Time 12 SP5 kernel-rt_debug 0 4.12.14-10.182.1
SUSE:Linux Enterprise Real Time 12 SP5 kernel-source-rt 0 4.12.14-10.182.1
SUSE:Linux Enterprise Real Time 12 SP5 kernel-syms-rt 0 4.12.14-10.182.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-default 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-ec2 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-source 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-syms 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-trace 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 11 SP4 LTSS EXTREME CORE kernel-xen 0 3.0.101-108.153.1
SUSE:Linux Enterprise Server 12 SP5 kernel-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server 12 SP5 kernel-default 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server 12 SP5 kernel-source 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server 12 SP5 kernel-source-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server 12 SP5 kernel-syms 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server 12 SP5 kernel-syms-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-default 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-default-base 0 5.3.18-150200.24.183.1.150200.9.93.2
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-docs 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-obs-build 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-preempt 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-source 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP2-LTSS kernel-syms 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-64kb 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-docs 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-obs-build 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-preempt 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-source 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-syms 0 5.3.18-150300.59.153.1
SUSE:Linux Enterprise Server 15 SP3-LTSS kernel-zfcpdump 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-default 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-source 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-source-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-syms 0 4.12.14-122.216.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 kernel-syms-azure 0 4.12.14-16.182.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-default 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-default-base 0 5.3.18-150200.24.183.1.150200.9.93.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-docs 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-obs-build 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-preempt 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-source 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 kernel-syms 0 5.3.18-150200.24.183.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-default 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-default-base 0 5.3.18-150300.59.153.2.150300.18.90.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-docs 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-obs-build 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-preempt 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-source 0 5.3.18-150300.59.153.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 kernel-syms 0 5.3.18-150300.59.153.1
SUSE:Linux Enterprise Software Development Kit 12 SP5 kernel-docs 0 4.12.14-122.216.1
SUSE:Linux Enterprise Software Development Kit 12 SP5 kernel-obs-build 0 4.12.14-122.216.1
SUSE:Linux Enterprise Workstation Extension 12 SP5 kernel-default 0 4.12.14-122.216.1
Ubuntu:16.04:LTS linux-hwe-edge 0 No fix
Ubuntu:18.04:LTS linux 0 4.15.0-144.148
Ubuntu:18.04:LTS linux-aws 0 4.15.0-1103.110
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-aws-5.4 0 5.4.0-1049.51~18.04.1
Ubuntu:18.04:LTS linux-azure 0 No fix
Ubuntu:18.04:LTS linux-azure-4.15 0 4.15.0-1115.128
Ubuntu:18.04:LTS linux-azure-5.3 0 No fix
Ubuntu:18.04:LTS linux-azure-5.4 0 5.4.0-1048.50~18.04.1
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-4.15 0 4.15.0-1100.113
Ubuntu:18.04:LTS linux-gcp-5.3 0 No fix
Ubuntu:18.04:LTS linux-gcp-5.4 0 5.4.0-1044.47~18.04.2
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-5.4 0 5.4.0-74.83~18.04.1
Ubuntu:18.04:LTS linux-hwe-edge 0 No fix
Ubuntu:18.04:LTS linux-ibm-5.4 0 5.4.0-1010.11~18.04.2
Ubuntu:18.04:LTS linux-kvm 0 4.15.0-1092.94
Ubuntu:18.04:LTS linux-oem 0 No fix
Ubuntu:18.04:LTS linux-oracle 0 4.15.0-1072.80
Ubuntu:18.04:LTS linux-oracle-5.0 0 No fix
Ubuntu:18.04:LTS linux-oracle-5.3 0 No fix
Ubuntu:18.04:LTS linux-oracle-5.4 0 5.4.0-1046.50~18.04.2
Ubuntu:18.04:LTS linux-raspi-5.4 0 5.4.0-1036.39~18.04.1
Ubuntu:20.04:LTS linux 0 No fix
Ubuntu:20.04:LTS linux 0 5.4.0-74.83
Ubuntu:20.04:LTS linux-aws 0 No fix
Ubuntu:20.04:LTS linux-aws 0 5.4.0-1049.51
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-1014.18~20.04.1
Ubuntu:20.04:LTS linux-aws-5.8 0 No fix
Ubuntu:20.04:LTS linux-azure 0 No fix
Ubuntu:20.04:LTS linux-azure 0 5.4.0-1048.50
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-1007.8~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-1019.24~20.04.1.1
Ubuntu:20.04:LTS linux-bluefield 0 No fix
Ubuntu:20.04:LTS linux-bluefield 0 5.4.0-1012.15
Ubuntu:20.04:LTS linux-gcp 0 No fix
Ubuntu:20.04:LTS linux-gcp 0 5.4.0-1044.47
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-1006.9~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 No fix
Ubuntu:20.04:LTS linux-gkeop 0 5.4.0-1016.17
Ubuntu:20.04:LTS linux-gkeop-5.15 0 5.15.0-1003.5~20.04.2
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-33.34~20.04.1
Ubuntu:20.04:LTS linux-hwe-5.8 0 No fix
Ubuntu:20.04:LTS linux-ibm 0 5.4.0-1003.4
Ubuntu:20.04:LTS linux-ibm-5.15 0 5.15.0-1033.36~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-1003.5~20.04.1
Ubuntu:20.04:LTS linux-iot 0 5.4.0-1001.3
Ubuntu:20.04:LTS linux-kvm 0 No fix
Ubuntu:20.04:LTS linux-kvm 0 5.4.0-1040.41
Ubuntu:20.04:LTS linux-lowlatency-hwe-5.15 0 5.15.0-33.34~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 No fix
Ubuntu:20.04:LTS linux-oracle 0 5.4.0-1046.50
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-1007.9~20.04.1
Ubuntu:20.04:LTS linux-oracle-5.8 0 No fix
Ubuntu:20.04:LTS linux-raspi 0 No fix
Ubuntu:20.04:LTS linux-raspi 0 5.4.0-1036.39
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-1015.17~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-1020.24
Ubuntu:22.04:LTS linux 0 5.13.0-19.19
Ubuntu:22.04:LTS linux-allwinner-5.19 0 No fix
Ubuntu:22.04:LTS linux-aws 0 5.13.0-1005.6
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-1008.8~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.13.0-1006.7
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-1007.7~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-1019.24.1
Ubuntu:22.04:LTS linux-azure-fde-5.19 0 No fix

Related vulnerabilities