🔍 CVE-2022-49220

5.5
CVSS Score
MEDIUM
2025-02-26
2026-11-05 20:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 dax 서브시스템에서 dax_fs_exit() 호출 시 inode를 flush하지 않고 캐시를 파괴하는 문제가 있습니다. 이로 인해 nd_pmem 모듈을 로드 후 언로드할 때 dax_cache에 객체가 남아 커널 BUG가 발생할 수 있습니다. 수정은 캐시 파괴 전에 rcu_barrier()를 호출하는 것입니다.

💡 쉬운 설명

리눅스 커널의 메모리 관리 부분에서 정리 순서가 잘못되어, 특정 드라이버 모듈을 제거할 때 시스템이 오류 상태가 될 수 있습니다. 커널 업데이트로 정리 순서를 고치면 문제가 해결됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: dax: make sure inodes are flushed before destroy cache A bug can be triggered by following command $ modprobe nd_pmem && modprobe -r nd_pmem [ 10.060014] BUG dax_cache (Not tainted): Objects remaining in dax_cache on __kmem_cache_shutdown() [ 10.060938] Slab 0x0000000085b729ac objects=9 used=1 fp=0x000000004f5ae469 flags=0x200000000010200(slab|head|node) [ 10.062433] Call Trace: [ 10.062673] dump_stack_lvl+0x34/0x44 [ 10.062865] slab_err+0x90/0xd0 [ 10.063619] __kmem_cache_shutdown+0x13b/0x2f0 [ 10.063848] kmem_cache_destroy+0x4a/0x110 [ 10.064058] __x64_sys_delete_module+0x265/0x300 This is caused by dax_fs_exit() not flushing inodes before destroy cache. To fix this issue, call rcu_barrier() before destroy cache.

📍 영향받는 시스템

nd_pmem/DAX 기능을 사용하는 Linux 커널 (수정 전 버전, 영구 메모리 장치 환경)

⚔️ 공격 벡터

로컬 권한을 가진 사용자가 nd_pmem 모듈을 적재 후 제거하여 커널 BUG(서비스 거부)를 유발할 수 있음

🛡️ 대응 방법

패치된 Linux 커널 버전으로 업데이트하거나, 배포판의 보안 업데이트를 적용하세요.

🔧 검증 코드

출력된 커널 버전을 배포판의 패치 목록과 비교하고, dax/nd_pmem 모듈이 로드되어 있지 않다면 이 취약점에 노출되지 않은 상태입니다.

Shell / Script
uname -r && (lsmod | grep -E 'nd_pmem|dax') 2>/dev/null; ls /sys/module/dax 2>/dev/null

📊 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