Cloudanix VulnDB

CVE-2026-43413

Medium · 5.5

CVSS

5.5

EPSS

0.1%

Published

May 8, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in some Linux storage drivers can let someone with local access crash or destabilize the machine by triggering a storage rescan.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a local denial-of-service flaw in the Linux kernel SCSI SAS handling path for systems using the hisi_sas driver. A user-triggered SCSI rescan can cause the kernel to scan a non-existent secondary channel on hardware that supports only one channel, leading to a NULL pointer dereference in sas_find_dev_by_rphy(). The result is a kernel oops and potential system crash, hang, or degraded storage availability. The issue does not provide confidentiality or integrity impact by itself; the primary impact is availability loss.

Why it matters to the business

Affected Linux systems with HiSilicon SAS storage controllers can be disrupted by a local user or process that can trigger SCSI host scans, potentially causing outages for workloads that depend on those hosts or attached storage. Because the flaw affects kernel availability, exploitation can interrupt applications, databases, virtualization hosts, or storage services running on affected hardware. The CVSS score is moderate, EPSS is very low, it is not listed in CISA KEV, and no public exploit maturity is indicated, so broad internet-scale exploitation is unlikely; however, the operational impact can still be high on exposed multi-user or administration-heavy systems.

How an attack unfolds

An attacker first obtains local access to an affected Linux system using the hisi_sas driver. They then identify a SCSI host backed by the vulnerable SAS driver and invoke a user-controlled SCSI scan through the sysfs SCSI host scan interface. The kernel processes the request through store_scan(), sas_user_scan(), and scsi_scan_host_selected(). Because the driver advertises or exposes channel handling inconsistent with the hardware capability, the scan path attempts to operate on channel 1 even though the controller supports only one channel. This reaches sas_find_dev_by_rphy() with an unexpected NULL object and triggers a NULL pointer dereference. Depending on kernel panic settings and system resilience, this can produce a kernel oops, crash the host, or leave storage-related services impaired until recovery or reboot.

How to fix it

Apply a Linux kernel update that includes the upstream fix for the hisi_sas user_scan() NULL pointer dereference. Because no fixed package versions were provided, use the corrected kernel versions from the operating system, distribution, appliance, or hardware vendor that supplies the affected kernel. Prioritize systems where the hisi_sas or hisi_sas_v3_hw modules are loaded, especially production storage, virtualization, database, and multi-user hosts. If immediate patching is not possible, reduce exposure by limiting local shell access, restricting sudo or administrative workflows that can write to SCSI sysfs scan files, monitoring and controlling writes to /sys/class/scsi_host/host*/scan, and removing or disabling unused hisi_sas hardware/drivers where operationally safe. Kernel live patching may be suitable if the vendor provides coverage for this specific fix; otherwise schedule a reboot into a fixed kernel.

How to confirm the fix worked

Confirm whether the system is exposed by checking for the vulnerable hardware/driver path: verify whether hisi_sas_main or hisi_sas_v3_hw is loaded, whether HiSilicon SAS controllers are present, and whether the running kernel build contains the vendor backport for this fix. Validate remediation by booting into the vendor-fixed kernel and confirming the vulnerable modules are updated or the patch is present in the kernel changelog/source package. Review /proc/modules, lsmod output, modinfo output, distribution package metadata, and kernel release notes. On non-production test systems only, a controlled SCSI rescan can be used to confirm the kernel no longer oopses; do not perform crash-validation on production hosts.

Typical attack path

  1. Gain local access to an affected Linux host where the hisi_sas kernel driver is loaded.
  2. Confirm the presence of SCSI hosts associated with HiSilicon SAS hardware.
  3. Trigger a user-initiated SCSI rescan through the sysfs SCSI host scan interface.
  4. Cause the kernel to scan an unsupported channel for the hisi_sas controller.
  5. Trigger a NULL pointer dereference in the SAS/SCSI scan path.
  6. Cause a kernel oops, system instability, host crash, or storage service disruption.

How to detect it

To determine whether this flaw was already triggered, review kernel logs, persistent journal logs, crash dump records, and centralized syslog/SIEM data for kernel oops or panic events involving the SCSI/SAS scan path. Relevant log sources include journalctl -k, /var/log/kern.log, /var/log/messages, /var/log/syslog, pstore, kdump/vmcore records, crash directories, auditd logs, sudo logs, shell history, and EDR process/file telemetry. Look for writes to /sys/class/scsi_host/host*/scan followed closely by kernel messages showing NULL pointer dereference, Internal error: Oops, sas_find_dev_by_rphy, sas_target_alloc, scsi_scan_host_selected, sas_user_scan, store_scan, and loaded modules such as hisi_sas_main or hisi_sas_v3_hw. A strong indication of exploitation or accidental triggering is a local process writing to the SCSI scan sysfs file shortly before a kernel oops with the described call trace. Distinguish malicious activity from legitimate storage administration by correlating with change tickets, maintenance windows, administrator sessions, package updates, multipath/storage rescans, and hardware events.

  • Unable to handle kernel NULL pointer dereference at virtual address 00000000000008b0
  • Internal error: Oops: 0000000096000004
  • sas_find_dev_by_rphy+0x44/0x118
  • sas_target_alloc+0x24/0xb0
  • scsi_alloc_target+0x290/0x330
  • __scsi_scan_target+0x88/0x258
  • scsi_scan_channel+0x74/0xb8
  • scsi_scan_host_selected+0x170/0x188
  • sas_user_scan+0xfc/0x148
  • store_scan+0x10c/0x180
  • dev_attr_store+0x20/0x40
  • sysfs_kf_write+0x84/0xa8
  • kernfs_fop_write_iter+0x130/0x1c8
  • /sys/class/scsi_host/host*/scan
  • hisi_sas_v3_hw
  • hisi_sas_main
  • Modules linked in: arm_spe_pmu
  • Comm: bash Kdump: loaded
  • ESR = 0x0000000096000004
  • FSC = 0x04: level 0 translation fault

What your security team should do

  • Inventory Linux systems using HiSilicon SAS controllers or loaded hisi_sas/hisi_sas_v3_hw modules.
  • Prioritize patching for production systems where storage availability is business-critical or where multiple administrators/users have local access.
  • Update to a vendor-fixed kernel and reboot, or apply an approved live patch if available.
  • Until patched, restrict local access and tightly control permissions or sudo rules that allow writes to /sys/class/scsi_host/host*/scan.
  • Add monitoring for kernel oops signatures involving sas_find_dev_by_rphy, sas_user_scan, scsi_scan_host_selected, and hisi_sas modules.
  • Review recent kernel logs for evidence of prior crashes or oops events matching this call trace.
  • Ensure crash dump collection, watchdog behavior, and service failover are functioning for affected storage hosts.

The record

In the Linux kernel, the following vulnerability has been resolved: scsi: hisi_sas: Fix NULL pointer exception during user_scan() user_scan() invokes updated sas_user_scan() for channel 0, and if successful, iteratively scans remaining channels (1 to shost->max_channel) via scsi_scan_host_selected() in commit 37c4e72b0651 ("scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans"). However, hisi_sas supports only one channel, and the current value of max_channel is 1. sas_user_scan() for channel 1 will trigger the following NULL pointer exception: [ 441.554662] Unable to handle kernel NULL pointer dereference at virtual address 00000000000008b0 [ 441.554699] Mem abort info: [ 441.554710] ESR = 0x0000000096000004 [ 441.554718] EC = 0x25: DABT (current EL), IL = 32 bits [ 441.554723] SET = 0, FnV = 0 [ 441.554726] EA = 0, S1PTW = 0 [ 441.554730] FSC = 0x04: level 0 translation fault [ 441.554735] Data abort info: [ 441.554737] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 [ 441.554742] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 441.554747] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 441.554752] user pgtable: 4k pages, 48-bit VAs, pgdp=00000828377a6000 [ 441.554757] [00000000000008b0] pgd=0000000000000000, p4d=0000000000000000 [ 441.554769] Internal error: Oops: 0000000096000004 [#1] SMP [ 441.629589] Modules linked in: arm_spe_pmu arm_smmuv3_pmu tpm_tis_spi hisi_uncore_sllc_pmu hisi_uncore_pa_pmu hisi_uncore_l3c_pmu hisi_uncore_hha_pmu hisi_uncore_ddrc_pmu hisi_uncore_cpa_pmu hns3_pmu hisi_ptt hisi_pcie_pmu tpm_tis_core spidev spi_hisi_sfc_v3xx hisi_uncore_pmu spi_dw_mmio fuse hclge hclge_common hisi_sec2 hisi_hpre hisi_zip hisi_qm hns3 hisi_sas_v3_hw sm3_ce sbsa_gwdt hnae3 hisi_sas_main uacce hisi_dma i2c_hisi dm_mirror dm_region_hash dm_log dm_mod [ 441.670819] CPU: 46 UID: 0 PID: 6994 Comm: bash Kdump: loaded Not tainted 7.0.0-rc2+ #84 PREEMPT [ 441.691327] pstate: 81400009 (Nzcv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) [ 441.698277] pc : sas_find_dev_by_rphy+0x44/0x118 [ 441.702896] lr : sas_find_dev_by_rphy+0x3c/0x118 [ 441.707502] sp : ffff80009abbba40 [ 441.710805] x29: ffff80009abbba40 x28: ffff082819a40008 x27: ffff082810c37c08 [ 441.717930] x26: ffff082810c37c28 x25: ffff082819a40290 x24: ffff082810c37c00 [ 441.725054] x23: 0000000000000000 x22: 0000000000000001 x21: ffff082819a40000 [ 441.732179] x20: ffff082819a40290 x19: 0000000000000000 x18: 0000000000000020 [ 441.739304] x17: 0000000000000000 x16: ffffb5dad6bda690 x15: 00000000ffffffff [ 441.746428] x14: ffff082814c3b26c x13: 00000000ffffffff x12: ffff082814c3b26a [ 441.753553] x11: 00000000000000c0 x10: 000000000000003a x9 : ffffb5dad5ea94f4 [ 441.760678] x8 : 000000000000003a x7 : ffff80009abbbab0 x6 : 0000000000000030 [ 441.767802] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000 [ 441.774926] x2 : ffff08280f35a300 x1 : ffffb5dad7127180 x0 : 0000000000000000 [ 441.782053] Call trace: [ 441.784488] sas_find_dev_by_rphy+0x44/0x118 (P) [ 441.789095] sas_target_alloc+0x24/0xb0 [ 441.792920] scsi_alloc_target+0x290/0x330 [ 441.797010] __scsi_scan_target+0x88/0x258 [ 441.801096] scsi_scan_channel+0x74/0xb8 [ 441.805008] scsi_scan_host_selected+0x170/0x188 [ 441.809615] sas_user_scan+0xfc/0x148 [ 441.813267] store_scan+0x10c/0x180 [ 441.816743] dev_attr_store+0x20/0x40 [ 441.820398] sysfs_kf_write+0x84/0xa8 [ 441.824054] kernfs_fop_write_iter+0x130/0x1c8 [ 441.828487] vfs_write+0x2c0/0x370 [ 441.831880] ksys_write+0x74/0x118 [ 441.835271] __arm64_sys_write+0x24/0x38 [ 441.839182] invoke_syscall+0x50/0x120 [ 441.842919] el0_svc_common.constprop.0+0xc8/0xf0 [ 441.847611] do_el0_svc+0x24/0x38 [ 441.850913] el0_svc+0x38/0x158 [ 441.854043] el0t_64_sync_handler+0xa0/0xe8 [ 441.858214] el0t_64_sync+0x1ac/0x1b0 [ 441.861865] Code: aa1303e0 97ff70a8 34ffff80 d10a4273 (f9445a75) [ 441.867946] ---[ end trace 0000000000000000 ]--- Therefore ---truncated---

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities