🔍 CVE-2022-50091

5.5
CVSS Score
MEDIUM
2025-06-18
2026-11-05 20:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 locking/csd_lock 모듈에서 csdlock_debug 부팅 파라미터가 early_param으로 처리되어, CONFIG_SPARSEMEM=y 및 CONFIG_SPARSEMEM_VMEMMAP=n 환경(arm64 등)에서 static_branch_enable 호출 시 NULL 포인터 역참조로 커널 패닉이 발생할 수 있습니다. 이를 __setup 방식으로 변경하여 문제를 해결했습니다.

💡 쉬운 설명

리눅스 커널 부팅 옵션 처리 시점이 너무 빨라서 일부 시스템에서 커널이 부팅 중 멈추거나 패닉에 빠질 수 있는 문제입니다. 커널 업데이트로 옵션 처리 시점을 조정해 해결되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: locking/csd_lock: Change csdlock_debug from early_param to __setup The csdlock_debug kernel-boot parameter is parsed by the early_param() function csdlock_debug(). If set, csdlock_debug() invokes static_branch_enable() to enable csd_lock_wait feature, which triggers a panic on arm64 for kernels built with CONFIG_SPARSEMEM=y and CONFIG_SPARSEMEM_VMEMMAP=n. With CONFIG_SPARSEMEM_VMEMMAP=n, __nr_to_section is called in static_key_enable() and returns NULL, resulting in a NULL dereference because mem_section is initialized only later in sparse_init(). This is also a problem for powerpc because early_param() functions are invoked earlier than jump_label_init(), also resulting in static_key_enable() failures. These failures cause the warning "static key 'xxx' used before call to jump_label_init()". Thus, early_param is too early for csd_lock_wait to run static_branch_enable(), so changes it to __setup to fix these.

📍 영향받는 시스템

Linux 커널 (수정 이전 버전), 특히 arm64 및 powerpc 아키텍처에서 csdlock_debug 옵션을 사용하는 환경

⚔️ 공격 벡터

공격자가 직접 원격에서 악용하기 어렵고, 부팅 파라미터 설정 권한이 있는 로컬 관리자가 옵션을 지정했을 때 시스템 불안정(패닉)을 유발하는 형태입니다.

🛡️ 대응 방법

배포판의 최신 Linux 커널 패키지로 업데이트하여 수정 커밋이 포함된 버전을 사용하십시오.

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지와 대조해 수정 패치가 포함된 버전인지 확인하며, 해당 패치 이전 버전이면 취약할 수 있습니다.

Shell / Script
uname -r

📊 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