Cloudanix VulnDB

CVE-2025-38581

None

CVSS

—

EPSS

0.2%

Published

Aug 19, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux kernel's handling of certain crypto hardware can cause the entire system to crash when the hardware driver is reloaded.

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

What it actually does

NULL pointer dereference in ccp5_debugfs_setup during device rebind when CONFIG_CRYPTO_DEV_CCP_DEBUGFS is enabled, triggered because ccp_debugfs_dir is not reset to NULL after debugfs directory destruction.

Why it matters to the business

Systems using AMD CCP crypto hardware can experience kernel crashes and reboots during device driver reload or PCI device rebind operations, leading to unplanned downtime and potential loss of cryptographic acceleration services.

How an attack unfolds

An attacker with sufficient privileges to write to PCI driver sysfs attributes performs unbind followed by bind on the CCP device; the missing NULL reset causes debugfs_create_dir to dereference a freed or invalid pointer, resulting in an immediate kernel oops.

How to fix it

Update the Linux kernel to the fixed commit a25ab6dfa0ce323ec308966988be6b675eb9d3e5 or later stable release containing the ccp_debugfs_dir = NULL assignment after ccp5_debugfs_destroy; rebuild and deploy the kernel package containing this change.

How to confirm the fix worked

After applying the update, repeat the unbind/bind sequence on the CCP device and confirm no kernel NULL pointer oops occurs; verify the presence of the commit in the running kernel source or package changelog.

Typical attack path

  1. Identify system with CONFIG_CRYPTO_DEV_CCP_DEBUGFS enabled and CCP PCI device present
  2. Write PCI address to /sys/bus/pci/drivers/ccp/unbind
  3. Write same PCI address to /sys/bus/pci/drivers/ccp/bind
  4. Kernel executes ccp5_init path that calls ccp5_debugfs_setup without valid directory pointer
  5. Trigger NULL pointer write and kernel panic

How to detect it

Search kernel logs and dmesg for BUG: kernel NULL pointer dereference combined with call traces containing ccp5_debugfs_setup, ccp5_init, or debugfs_create_dir during PCI bind operations; correlate with sysfs writes to ccp driver unbind/bind attributes.

  • BUG: kernel NULL pointer dereference.*ccp
  • ccp5_debugfs_setup+0x87/0x170
  • echo.*ccp/unbind
  • echo.*ccp/bind

What your security team should do

  • Prioritize kernel upgrade on all systems exposing CCP devices with debugfs crypto support enabled
  • Disable CONFIG_CRYPTO_DEV_CCP_DEBUGFS at build time where the feature is not required
  • Monitor kernel logs for ccp-related oops messages on systems that cannot be immediately updated

The record

In the Linux kernel, the following vulnerability has been resolved: crypto: ccp - Fix crash when rebind ccp device for ccp.ko When CONFIG_CRYPTO_DEV_CCP_DEBUGFS is enabled, rebinding the ccp device causes the following crash: $ echo '0000:0a:00.2' > /sys/bus/pci/drivers/ccp/unbind $ echo '0000:0a:00.2' > /sys/bus/pci/drivers/ccp/bind [ 204.976930] BUG: kernel NULL pointer dereference, address: 0000000000000098 [ 204.978026] #PF: supervisor write access in kernel mode [ 204.979126] #PF: error_code(0x0002) - not-present page [ 204.980226] PGD 0 P4D 0 [ 204.981317] Oops: Oops: 0002 [#1] SMP NOPTI ... [ 204.997852] Call Trace: [ 204.999074] <TASK> [ 205.000297] start_creating+0x9f/0x1c0 [ 205.001533] debugfs_create_dir+0x1f/0x170 [ 205.002769] ? srso_return_thunk+0x5/0x5f [ 205.004000] ccp5_debugfs_setup+0x87/0x170 [ccp] [ 205.005241] ccp5_init+0x8b2/0x960 [ccp] [ 205.006469] ccp_dev_init+0xd4/0x150 [ccp] [ 205.007709] sp_init+0x5f/0x80 [ccp] [ 205.008942] sp_pci_probe+0x283/0x2e0 [ccp] [ 205.010165] ? srso_return_thunk+0x5/0x5f [ 205.011376] local_pci_probe+0x4f/0xb0 [ 205.012584] pci_device_probe+0xdb/0x230 [ 205.013810] really_probe+0xed/0x380 [ 205.015024] __driver_probe_device+0x7e/0x160 [ 205.016240] device_driver_attach+0x2f/0x60 [ 205.017457] bind_store+0x7c/0xb0 [ 205.018663] drv_attr_store+0x28/0x40 [ 205.019868] sysfs_kf_write+0x5f/0x70 [ 205.021065] kernfs_fop_write_iter+0x145/0x1d0 [ 205.022267] vfs_write+0x308/0x440 [ 205.023453] ksys_write+0x6d/0xe0 [ 205.024616] __x64_sys_write+0x1e/0x30 [ 205.025778] x64_sys_call+0x16ba/0x2150 [ 205.026942] do_syscall_64+0x56/0x1e0 [ 205.028108] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 205.029276] RIP: 0033:0x7fbc36f10104 [ 205.030420] Code: 89 02 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 8d 05 e1 08 2e 00 8b 00 85 c0 75 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 f3 c3 66 90 41 54 55 49 89 d4 53 48 89 f5 This patch sets ccp_debugfs_dir to NULL after destroying it in ccp5_debugfs_destroy, allowing the directory dentry to be recreated when rebinding the ccp device. Tested on AMD Ryzen 7 1700X.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.3-1
Linux Kernel 4.13.0 5.4.297
Mageia:9 kernel 0 6.6.105-1.mga9
Mageia:9 kernel-linus 0 6.6.105-1.mga9
Mageia:9 kmod-virtualbox 0 7.1.10-10.mga9
Mageia:9 kmod-xtables-addons 0 3.24-86.mga9
Mageia:9 mageia-repos 0 9-4.mga9
Mageia:9 meta-task 0 9-4.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_15 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_15 0 1-150600.13.3.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.70.1.150600.12.30.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.70.1.150600.12.30.2
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.70.1
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities