🔍 CVE-2025-39745

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

🇰🇷 한글 설명

Linux 커널의 CONFIG_PREEMPT_RT 옵션이 활성화된 환경에서 rcutorture 테스트 실행 시 rcutorture_one_extend_check() 함수에서 경고(splat)가 발생하는 취약점입니다. RT 커널에서는 Disable BH 작업이 preempt_count()의 SOFTIRQ 비트를 변경하지 않기 때문에, softirq_count()를 사용하여 BH 비활성화 여부를 확인하도록 수정되었습니다.

💡 쉬운 설명

실시간 성능을 지원하는 리눅스 커널에서 특정 테스트를 수행할 때 시스템 오류 경고가 발생하는 문제입니다. 시스템이 멈추는 치명적인 문제는 아니지만, 커널의 상태를 잘못 판단할 수 있는 논리적 오류를 바로잡은 것입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: rcutorture: Fix rcutorture_one_extend_check() splat in RT kernels For built with CONFIG_PREEMPT_RT=y kernels, running rcutorture tests resulted in the following splat: [ 68.797425] rcutorture_one_extend_check during change: Current 0x1 To add 0x1 To remove 0x0 preempt_count() 0x0 [ 68.797533] WARNING: CPU: 2 PID: 512 at kernel/rcu/rcutorture.c:1993 rcutorture_one_extend_check+0x419/0x560 [rcutorture] [ 68.797601] Call Trace: [ 68.797602] <TASK> [ 68.797619] ? lockdep_softirqs_off+0xa5/0x160 [ 68.797631] rcutorture_one_extend+0x18e/0xcc0 [rcutorture 2466dbd2ff34dbaa36049cb323a80c3306ac997c] [ 68.797646] ? local_clock+0x19/0x40 [ 68.797659] rcu_torture_one_read+0xf0/0x280 [rcutorture 2466dbd2ff34dbaa36049cb323a80c3306ac997c] [ 68.797678] ? __pfx_rcu_torture_one_read+0x10/0x10 [rcutorture 2466dbd2ff34dbaa36049cb323a80c3306ac997c] [ 68.797804] ? __pfx_rcu_torture_timer+0x10/0x10 [rcutorture 2466dbd2ff34dbaa36049cb323a80c3306ac997c] [ 68.797815] rcu-torture: rcu_torture_reader task started [ 68.797824] rcu-torture: Creating rcu_torture_reader task [ 68.797824] rcu_torture_reader+0x238/0x580 [rcutorture 2466dbd2ff34dbaa36049cb323a80c3306ac997c] [ 68.797836] ? kvm_sched_clock_read+0x15/0x30 Disable BH does not change the SOFTIRQ corresponding bits in preempt_count() for RT kernels, this commit therefore use softirq_count() to check the if BH is disabled.

📍 영향받는 시스템

CONFIG_PREEMPT_RT=y 옵션으로 빌드된 Linux 커널

⚔️ 공격 벡터

로컬 시스템에서 rcutorture 테스트를 실행할 수 있는 권한이 필요함 (Local)

🛡️ 대응 방법

해당 수정 사항이 반영된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

출력 결과에 CONFIG_PREEMPT_RT=y가 포함되어 있는지 확인하여 대상 커널 여부를 판단합니다.

Shell / Script
uname -a && grep CONFIG_PREEMPT_RT /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