🔍 CVE-2025-71078

7.8
CVSS Score
HIGH
2026-01-13
2026-10-19 19:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 powerpc/64s/slb 아키텍처에서 SLB 프리로드 과정 중 멀티히트(multi-hit) 오류가 발생하는 취약점입니다. 프로세스가 CPU 간 이동 시 MMU 컨텍스트 전환을 건너뛰면서 하드웨어 SLB와 소프트웨어 프리로드 캐시 간의 불일치가 발생하여 시스템 오류를 유발할 수 있습니다.

💡 쉬운 설명

컴퓨터의 메모리 주소를 빠르게 찾는 장치(SLB)에서 정보가 서로 맞지 않아 충돌이 발생하는 문제입니다. 이로 인해 시스템이 예상치 못한 오류를 일으키거나 멈출 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: powerpc/64s/slb: Fix SLB multihit issue during SLB preload On systems using the hash MMU, there is a software SLB preload cache that mirrors the entries loaded into the hardware SLB buffer. This preload cache is subject to periodic eviction — typically after every 256 context switches — to remove old entry. To optimize performance, the kernel skips switch_mmu_context() in switch_mm_irqs_off() when the prev and next mm_struct are the same. However, on hash MMU systems, this can lead to inconsistencies between the hardware SLB and the software preload cache. If an SLB entry for a process is evicted from the software cache on one CPU, and the same process later runs on another CPU without executing switch_mmu_context(), the hardware SLB may retain stale entries. If the kernel then attempts to reload that entry, it can trigger an SLB multi-hit error. The following timeline shows how stale SLB entries are created and can cause a multi-hit error when a process moves between CPUs without a MMU context switch. CPU 0 CPU 1 ----- ----- Process P exec swapper/1 load_elf_binary begin_new_exc activate_mm switch_mm_irqs_off switch_mmu_context switch_slb /* * This invalidates all * the entries in the HW * and setup the new HW * SLB entries as per the * preload cache. */ context_switch sched_migrate_task migrates process P to cpu-1 Process swapper/0 context switch (to process P) (uses mm_struct of Process P) switch_mm_irqs_off() switch_slb load_slb++ /* * load_slb becomes 0 here * and we evict an entry from * the preload cache with * preload_age(). We still * keep HW SLB and preload * cache in sync, that is * because all HW SLB entries * anyways gets evicted in * switch_slb during SLBIA. * We then only add those * entries back in HW SLB, * which are currently * present in preload_cache * (after eviction). */ load_elf_binary continues... setup_new_exec() slb_setup_new_exec() sched_switch event sched_migrate_task migrates process P to cpu-0 context_switch from swapper/0 to Process P switch_mm_irqs_off() /* * Since both prev and next mm struct are same we don't call * switch_mmu_context(). This will cause the HW SLB and SW preload * cache to go out of sync in preload_new_slb_context. Because there * was an SLB entry which was evicted from both HW and preload cache * on cpu-1. Now later in preload_new_slb_context(), when we will try * to add the same preload entry again, we will add this to the SW * preload cache and then will add it to the HW SLB. Since on cpu-0 * this entry was never invalidated, hence adding this entry to the HW * SLB will cause a SLB multi-hit error. */ load_elf_binary cont ---truncated---

📍 영향받는 시스템

Hash MMU를 사용하는 PowerPC 64-bit 시스템 (Linux Kernel)

⚔️ 공격 벡터

특정 프로세스가 여러 CPU를 이동하며 실행될 때 발생하는 커널 내부의 동기화 로직 결함 이용

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.

🔧 검증 코드

출력 결과에서 PowerPC 아키텍처 여부와 현재 커널 버전을 확인하여 패치 적용 여부를 판단합니다.

Shell / Script
uname -a && grep -i 'powerpc' /proc/cpuinfo

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel