🔍 CVE-2022-50702

0.0
CVSS Score
UNKNOWN
2025-12-24
2026-11-10 12:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 vdpa_sim 모듈에서 vdpasim_net_init()과 vdpasim_blk_init() 함수가 device_register() 실패 시 kobject 참조 카운트를 제대로 감소시키지 않아 dev_set_name()으로 할당된 이름 문자열이 메모리 누수되는 문제입니다. put_device()를 호출하여 해결되었습니다.

💡 쉬운 설명

가상 네트워크·블록 장치를 만드는 커널 모듈이 초기화 실패 시 일부 메모리를 해제하지 않습니다. 이로 인해 모듈을 반복 로드하면 사용 가능한 메모리가 조금씩 줄어듭니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init() Inject fault while probing module, if device_register() fails in vdpasim_net_init() or vdpasim_blk_init(), but the refcount of kobject is not decreased to 0, the name allocated in dev_set_name() is leaked. Fix this by calling put_device(), so that name can be freed in callback function kobject_cleanup(). (vdpa_sim_net) unreferenced object 0xffff88807eebc370 (size 16): comm "modprobe", pid 3848, jiffies 4362982860 (age 18.153s) hex dump (first 16 bytes): 76 64 70 61 73 69 6d 5f 6e 65 74 00 6b 6b 6b a5 vdpasim_net.kkk. backtrace: [<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150 [<ffffffff81731d53>] kstrdup+0x33/0x60 [<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110 [<ffffffff82d87aab>] dev_set_name+0xab/0xe0 [<ffffffff82d91a23>] device_add+0xe3/0x1a80 [<ffffffffa0270013>] 0xffffffffa0270013 [<ffffffff81001c27>] do_one_initcall+0x87/0x2e0 [<ffffffff813739cb>] do_init_module+0x1ab/0x640 [<ffffffff81379d20>] load_module+0x5d00/0x77f0 [<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0 [<ffffffff83c4d505>] do_syscall_64+0x35/0x80 [<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0 (vdpa_sim_blk) unreferenced object 0xffff8881070c1250 (size 16): comm "modprobe", pid 6844, jiffies 4364069319 (age 17.572s) hex dump (first 16 bytes): 76 64 70 61 73 69 6d 5f 62 6c 6b 00 6b 6b 6b a5 vdpasim_blk.kkk. backtrace: [<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150 [<ffffffff81731d53>] kstrdup+0x33/0x60 [<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110 [<ffffffff82d87aab>] dev_set_name+0xab/0xe0 [<ffffffff82d91a23>] device_add+0xe3/0x1a80 [<ffffffffa0220013>] 0xffffffffa0220013 [<ffffffff81001c27>] do_one_initcall+0x87/0x2e0 [<ffffffff813739cb>] do_init_module+0x1ab/0x640 [<ffffffff81379d20>] load_module+0x5d00/0x77f0 [<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0 [<ffffffff83c4d505>] do_syscall_64+0x35/0x80 [<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0

📍 영향받는 시스템

패치 이전의 Linux 커널 (vdpa_sim_net, vdpa_sim_blk 모듈을 사용하는 시스템)

⚔️ 공격 벡터

로컬 사용자가 모듈 로드·실패를 반복 유발하여 커널 메모리를 고갈시키는 서비스 거부 형태이며, 원격 공격 경로는 확인되지 않음

🛡️ 대응 방법

커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나 배포판 보안 업데이트를 적용

🔧 검증 코드

커널 버전이 수정 패치가 포함된 버전 이상인지 배포판 공지와 비교하고, vdpa_sim 모듈이 로드되어 있지 않다면 이 취약점의 영향을 받지 않습니다.

Shell / Script
uname -r; lsmod | grep vdpa

💻 영향받는 소프트웨어

Linux Kernel