🇰🇷 한글 설명
Linux 커널의 MIPS 아키텍처에서 CONFIG_CPUMASK_OFFSTACK 설정 시 메모리 오염이 발생하는 취약점입니다. cpumask_var_t가 포인터로 처리되어 sizeof 연산 시 포인터 크기만 계산됨으로써 copy_from_user()가 마스크 포인터를 덮어쓰는 문제가 있었습니다.
💡 쉬운 설명
컴퓨터의 두뇌 역할을 하는 커널이 데이터를 저장할 공간을 잘못 계산하여, 중요한 메모리 정보를 엉뚱한 데이터로 덮어씌울 수 있는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 공격에 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mips: sched: Fix CPUMASK_OFFSTACK memory corruption
This patch addresses a critical memory management flaw. When
CONFIG_CPUMASK_OFFSTACK is enabled, cpumask_var_t is a pointer.
Consequently, sizeof(new_mask) evaluates to the pointer size, causing
copy_from_user() to clobber the mask pointer. Furthermore, the old
logic performed copy_from_user() before allocating the mask.
Fix this by allocating new_mask first. To handle variable-sized user
masks correctly, use cpumask_size() to truncate overly large user masks
or pad undersized masks with zeros before copying the data directly into
the allocated buffer.
📍 영향받는 시스템
CONFIG_CPUMASK_OFFSTACK 옵션이 활성화된 MIPS 아키텍처 기반 Linux 커널
⚔️ 공격 벡터
사용자 공간에서 조작된 크기의 CPU 마스크 데이터를 커널로 전달하여 메모리 오염 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트 및 패치 적용
🔧 검증 코드
출력 결과에 mips 아키텍처가 포함되어 있는지 확인하고, 커널 버전이 해당 패치가 적용된 이후 버전인지 확인합니다.