🇰🇷 한글 설명
Linux 커널의 netdevsim 드라이버에서 nsim_dev_resources_register() 함수가 실패했을 때 nsim_drv_probe()에서 메모리가 해제되지 않아 메모리 누수가 발생하는 문제입니다. 리소스 등록 중 일부가 실패하면 할당된 메모리가 참조되지 않은 채 남게 됩니다.
💡 쉬운 설명
이 취약점은 시스템이 일부 작업에 실패했을 때 사용하던 메모리를 제대로 반환하지 않는 버그입니다. 시간이 지나면 사용 가능한 메모리가 줄어들어 시스템 성능 저하나 불안정을 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netdevsim: fix memory leak in nsim_drv_probe() when nsim_dev_resources_register() failed
If some items in nsim_dev_resources_register() fail, memory leak will
occur. The following is the memory leak information.
unreferenced object 0xffff888074c02600 (size 128):
comm "echo", pid 8159, jiffies 4294945184 (age 493.530s)
hex dump (first 32 bytes):
40 47 ea 89 ff ff ff ff 01 00 00 00 00 00 00 00 @G..............
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
backtrace:
[<0000000011a31c98>] kmalloc_trace+0x22/0x60
[<0000000027384c69>] devl_resource_register+0x144/0x4e0
[<00000000a16db248>] nsim_drv_probe+0x37a/0x1260
[<000000007d1f448c>] really_probe+0x20b/0xb10
[<00000000c416848a>] __driver_probe_device+0x1b3/0x4a0
[<00000000077e0351>] driver_probe_device+0x49/0x140
[<0000000054f2465a>] __device_attach_driver+0x18c/0x2a0
[<000000008538f359>] bus_for_each_drv+0x151/0x1d0
[<0000000038e09747>] __device_attach+0x1c9/0x4e0
[<00000000dd86e533>] bus_probe_device+0x1d5/0x280
[<00000000839bea35>] device_add+0xae0/0x1cb0
[<000000009c2abf46>] new_device_store+0x3b6/0x5f0
[<00000000fb823d7f>] bus_attr_store+0x72/0xa0
[<000000007acc4295>] sysfs_kf_write+0x106/0x160
[<000000005f50cb4d>] kernfs_fop_write_iter+0x3a8/0x5a0
[<0000000075eb41bf>] vfs_write+0x8f0/0xc80
📍 영향받는 시스템
메모리 누수 수정이 포함되지 않은 netdevsim 드라이버를 사용하는 Linux 커널 버전 (netdevsim은 주로 테스트·개발용 가상 네트워크 장치 드라이버)
⚔️ 공격 벡터
로컬 사용자가 netdevsim 장치 생성(예: sysfs new_device 쓰기)을 반복적으로 실패시켜 커널 메모리를 점진적으로 소모시키는 방식
🛡️ 대응 방법
Linux 커널을 해당 메모리 누수가 수정된 최신 안정 버전으로 업데이트하거나 배포판의 보안 패치를 적용하세요.
🔧 검증 코드
출력된 커널 버전을 배포판의 패치 목록과 대조해 수정된 버전인지 확인하고, netdevsim 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep -w netdevsim || echo 'netdevsim 모듈 미로드')