🔍 CVE-2026-93259

0.0
CVSS Score
UNKNOWN
2026-09-24
2026-10-19 10:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 powerpc/irq 구성에서 CONFIG_PPC_KERNEL_PCREL 모드 사용 시, 인라인 어셈블리 코드의 r2 레지스터 clobber 목록이 누락된 취약점입니다. 이로 인해 인터럽트 처리 중 레지스터 값이 손상되어 커널 크래시가 발생하거나 부팅에 실패할 수 있습니다.

💡 쉬운 설명

컴퓨터의 핵심 부품인 CPU가 작업을 처리할 때 사용하는 임시 저장 공간(레지스터)을 제대로 관리하지 못해 발생하는 오류입니다. 이 오류가 발생하면 시스템이 갑자기 멈추거나 컴퓨터가 켜지지 않을 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: powerpc/irq: Fix missing r2 clobber in PCREL inline assembly In CONFIG_PPC_KERNEL_PCREL mode, r2 is no longer reserved for the TOC pointer and is available as a caller-saved register [0]. Both call_do_irq() and call_do_softirq() use inline assembly to call functions with stack switching, but fail to list r2 in their clobber lists. This causes the compiler to assume r2 is preserved across these calls, leading to register corruption when the called functions (__do_irq and __do_softirq) clobber r2. As a result of this kernel crash during interrupt handling is seen and the kernel fails to boot: BUG: Unable to handle kernel data access on write at 0xc000000404697638 Faulting instruction address: 0xc0000000000181ec Oops: Kernel access of bad area, sig: 11 [#1] NIP [c0000000000181ec] __do_IRQ+0x6c/0xc0 With older GCC, the compiler would conservatively allocate callee-saved registers (like r31) for values spanning function calls, accidentally avoiding the bug: <__do_IRQ>: 00 00 00 60 nop a6 02 08 7c mflr r0 f8 ff e1 fb std r31,-8(r1) f0 ff c1 fb std r30,-16(r1) 2d 03 10 06 pla r31,53297316 ... 3d e8 ff 4b bl c0000000000165ac <__do_irq> 00 00 21 e8 ld r1,0(r1) 28 00 4d e9 ld r10,40(r13) 40 00 21 38 addi r1,r1,64 2a f9 aa 7f stdx r29,r10,r31 With newer GCC 14, the compiler uses r2 for such values, exposing the missing clobber specification: <__do_IRQ>: 00 00 00 60 nop a6 02 08 7c mflr r0 f0 ff c1 fb std r30,-16(r1) f8 ff e1 fb std r31,-8(r1) 29 02 10 06 pla r2,36252592 # c0000000022aadc0 <__irq_regs> ... 85 dc ff 4b bl c000000000015ee0 <__do_irq> 00 00 21 e8 ld r1,0(r1) 28 00 2d e9 ld r9,40(r13) 30 00 21 38 addi r1,r1,48 2a 11 c9 7f stdx r30,r9,r2 Fix this by adding r2 to the clobber list for both call_do_irq() and call_do_softirq() when CONFIG_PPC_KERNEL_PCREL is enabled. [0]: https://www.mail-archive.com/[email protected]/msg313226.html

📍 영향받는 시스템

Linux Kernel (powerpc architecture with CONFIG_PPC_KERNEL_PCREL enabled)

⚔️ 공격 벡터

Local/Physical (시스템 인터럽트 발생을 유도하여 커널 크래시 유발)

🛡️ 대응 방법

Linux 커널을 최신 패치가 적용된 버전으로 업데이트하여 call_do_irq() 및 call_do_softirq()의 clobber 목록에 r2를 추가해야 합니다.

🔧 검증 코드

커널 버전과 CONFIG_PPC_KERNEL_PCREL 설정이 활성화(y)되어 있는지 확인하여 취약한 환경인지 판단합니다.

Shell / Script
uname -a && grep CONFIG_PPC_KERNEL_PCREL /boot/config-$(uname -r) 2>/dev/null

💻 영향받는 소프트웨어

Linux Kernel