🔍 CVE-2025-38581

5.5
CVSS Score
MEDIUM
2025-08-19
2026-11-05 22:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 CCP(AMD 암호화 코프로세서) 드라이버에서, CONFIG_CRYPTO_DEV_CCP_DEBUGFS가 활성화된 상태로 ccp 장치를 unbind 후 다시 bind하면 디버그파일시스템 디렉터리 포인터가 해제 후 NULL로 초기화되지 않아 NULL 포인터 역참조 커널 패닉이 발생합니다. 패치는 ccp5_debugfs_destroy에서 디렉터리 제거 후 ccp_debugfs_dir를 NULL로 설정해 재바인딩 시 디렉터리를 정상 재생성하도록 합니다.

💡 쉬운 설명

AMD 보안 칩 드라이버를 껐다 켜면 리눅스가 갑자기 멈추는 버그입니다. 디버그 기능이 켜져 있는 시스템에서만 발생하며, 수정으로 재시작 시 정상 동작하도록 고쳐집니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

디버그파일시스템 옵션이 활성화된 AMD CCP 장치를 사용하는 수정 이전 Linux 커널 버전 (AMD Ryzen/EPYC 계열 PSP 탑재 시스템)

⚔️ 공격 벡터

로컬 관리자 권한으로 sysfs의 unbind/bind 경로를 반복 조작해 커널 패닉(서비스 거부)을 유발할 수 있음

🛡️ 대응 방법

패키지 배포판의 보안 업데이트 또는 해당 커밋이 포함된 최신 Linux 커널로 업데이트 후 재부팅

🔧 검증 코드

출력된 커널 버전이 수정된 배포판 버전 이상인지 확인하고, CONFIG_CRYPTO_DEV_CCP_DEBUGFS=y 또는 =m 이면 해당 버그에 영향을 받을 수 있는 설정이므로 업데이트 필요 여부를 판단합니다.

Shell / Script
uname -r && grep -E 'CONFIG_CRYPTO_DEV_CCP_DEBUGFS' /boot/config-$(uname -r) 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel