🇰🇷 한글 설명
Linux 커널의 coresight 드라이버에서 ACPI 버퍼(buf.pointer)가 해제되지 않아 메모리 누수가 발생하는 문제입니다. 버퍼를 acpi_get_dsd_graph() 반환 전에 해제하지 않아 kmemleak에서 누수가 탐지되었으며, 해당 버퍼를 acpi_coresight_parse_graph() 함수로 옮기고 함수 종료 전에 해제하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터 내부에서 사용이 끝난 임시 메모리를 반납하지 않아 조금씩 메모리가 낭비되는 문제입니다. 장기간 실행되는 시스템에서 가용 메모리가 줄어들 수 있으나 직접적인 피해는 제한적입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
coresight: Fix memory leak in acpi_buffer->pointer
There are memory leaks reported by kmemleak:
...
unreferenced object 0xffff00213c141000 (size 1024):
comm "systemd-udevd", pid 2123, jiffies 4294909467 (age 6062.160s)
hex dump (first 32 bytes):
04 00 00 00 02 00 00 00 18 10 14 3c 21 00 ff ff ...........<!...
00 00 00 00 00 00 00 00 03 00 00 00 10 00 00 00 ................
backtrace:
[<000000004b7c9001>] __kmem_cache_alloc_node+0x2f8/0x348
[<00000000b0fc7ceb>] __kmalloc+0x58/0x108
[<0000000064ff4695>] acpi_os_allocate+0x2c/0x68
[<000000007d57d116>] acpi_ut_initialize_buffer+0x54/0xe0
[<0000000024583908>] acpi_evaluate_object+0x388/0x438
[<0000000017b2e72b>] acpi_evaluate_object_typed+0xe8/0x240
[<000000005df0eac2>] coresight_get_platform_data+0x1b4/0x988 [coresight]
...
The ACPI buffer memory (buf.pointer) should be freed. But the buffer
is also used after returning from acpi_get_dsd_graph().
Move the temporary variables buf to acpi_coresight_parse_graph(),
and free it before the function return to prevent memory leak.
📍 영향받는 시스템
메모리 누수 수정 이전의 Linux 커널 (coresight 드라이버를 사용하는 ACPI 기반 ARM64 시스템)
⚔️ 공격 벡터
로컬 사용자나 시스템 드라이버가 반복적으로 해당 경로를 트리거하여 메모리를 고갈시키는 서비스 거부(DoS) 형태로 악용될 수 있음
🛡️ 대응 방법
패치된 Linux 커널 버전으로 업데이트 (벤더 제공 최신 커널 적용 후 재부팅)
🔧 검증 코드
출력된 커널 버전이 해당 CVE 수정이 포함된 배포판 커널 버전 이상인지 벤더 보안 공지나 changelog에서 확인하며, 구버전이면 취약한 것으로 판단합니다.