🔍 CVE-2022-50206

5.5
CVSS Score
MEDIUM
2025-06-18
2026-08-15 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 arm64 아키텍처에서 insn_emulation sysctl을 동시에 설정할 때 발생하는 커널 Oops 취약점입니다. emulation_proc_handler 함수가 table->data를 변경하는 과정에서 경합 조건이 발생하여 NULL 포인터 역참조 오류를 유발할 수 있습니다.

💡 쉬운 설명

리눅스 시스템의 특정 설정값을 동시에 여러 번 바꾸려고 시도할 때 시스템이 충돌하여 멈출 수 있는 문제입니다. 이는 시스템의 안정성을 해치고 예기치 않은 오류를 발생시킬 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: arm64: fix oops in concurrently setting insn_emulation sysctls emulation_proc_handler() changes table->data for proc_dointvec_minmax and can generate the following Oops if called concurrently with itself: | Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010 | Internal error: Oops: 96000006 [#1] SMP | Call trace: | update_insn_emulation_mode+0xc0/0x148 | emulation_proc_handler+0x64/0xb8 | proc_sys_call_handler+0x9c/0xf8 | proc_sys_write+0x18/0x20 | __vfs_write+0x20/0x48 | vfs_write+0xe4/0x1d0 | ksys_write+0x70/0xf8 | __arm64_sys_write+0x20/0x28 | el0_svc_common.constprop.0+0x7c/0x1c0 | el0_svc_handler+0x2c/0xa0 | el0_svc+0x8/0x200 To fix this issue, keep the table->data as &insn->current_mode and use container_of() to retrieve the insn pointer. Another mutex is used to protect against the current_mode update but not for retrieving insn_emulation as table->data is no longer changing.

📍 영향받는 시스템

arm64 아키텍처를 사용하는 Linux 커널 버전

⚔️ 공격 벡터

동시에 여러 프로세스가 insn_emulation 관련 sysctl 값을 수정하려고 시도하는 경합 조건 공격

🛡️ 대응 방법

커널 패치를 적용하여 table->data가 변경되지 않도록 수정하고 container_of()를 사용하도록 업데이트해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.

Shell / Script
uname -a

📊 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