🇰🇷 한글 설명
Linux 커널의 media: max9286 드라이버에서 max9286_v4l2_register() 함수가 v4l2_ctrl_new_std()로 생성한 v4l2_ctrl을, fwnode_graph_get_endpoint_by_id() 실패 시 해제하지 않아 메모리 누수가 발생합니다. 이 문제는 v4l2_ctrl_handler_free() 호출로 수정되었습니다.
💡 쉬운 설명
카메라 드라이버 초기화가 실패했을 때 사용하던 메모리를 제대로 반환하지 않는 버그입니다. 시간이 지나면서 시스템 메모리가 조금씩 낭비될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: max9286: Fix memleak in max9286_v4l2_register()
There is a kmemleak when testing the media/i2c/max9286.c with bpf mock
device:
kmemleak: 5 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
unreferenced object 0xffff88810defc400 (size 256):
comm "python3", pid 278, jiffies 4294737563 (age 31.978s)
hex dump (first 32 bytes):
28 06 a7 0a 81 88 ff ff 00 fe 22 12 81 88 ff ff (.........".....
10 c4 ef 0d 81 88 ff ff 10 c4 ef 0d 81 88 ff ff ................
backtrace:
[<00000000191de6a7>] __kmalloc_node+0x44/0x1b0
[<000000002f4912b7>] kvmalloc_node+0x34/0x180
[<0000000057dc4cae>] v4l2_ctrl_new+0x325/0x10f0 [videodev]
[<0000000026030272>] v4l2_ctrl_new_std+0x16f/0x210 [videodev]
[<00000000f0d9ea2f>] max9286_probe+0x76e/0xbff [max9286]
[<00000000ea8f6455>] i2c_device_probe+0x28d/0x680
[<0000000087529af3>] really_probe+0x17c/0x3f0
[<00000000b08be526>] __driver_probe_device+0xe3/0x170
[<000000004382edea>] driver_probe_device+0x49/0x120
[<000000007bde528a>] __device_attach_driver+0xf7/0x150
[<000000009f9c6ab4>] bus_for_each_drv+0x114/0x180
[<00000000c8aaf588>] __device_attach+0x1e5/0x2d0
[<0000000041cc06b9>] bus_probe_device+0x126/0x140
[<000000002309860d>] device_add+0x810/0x1130
[<000000002827bf98>] i2c_new_client_device+0x359/0x4f0
[<00000000593bdc85>] of_i2c_register_device+0xf1/0x110
max9286_v4l2_register() calls v4l2_ctrl_new_std(), but won't free the
created v412_ctrl when fwnode_graph_get_endpoint_by_id() failed, which
causes the memleak. Call v4l2_ctrl_handler_free() to free the v412_ctrl.
📍 영향받는 시스템
max9286 카메라 디시리얼라이저 드라이버를 사용하는 Linux 커널 (수정 전 버전)
⚔️ 공격 벡터
직접적인 원격 공격 경로는 확인되지 않았으며, 드라이버 초기화 실패 상황에서 메모리가 누수되는 안정성 문제입니다.
🛡️ 대응 방법
Linux 커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나, max9286_v4l2_register()에 v4l2_ctrl_handler_free() 호출을 추가하는 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전이 이 수정이 포함된 버전 이상인지 배포판의 보안 권고 또는 changelog에서 확인하며, max9286 모듈 사용 여부는 lsmod | grep max9286 로 확인할 수 있습니다.