🇰🇷 한글 설명
Linux 커널의 mlx5e 드라이버에서 기존 conntrack(ct) 엔트리를 교체할 때 label mapping을 해제하지 않아 메모리 누수가 발생하는 문제입니다. 이 결함으로 인해 커널 메모리가 지속적으로 소모될 수 있습니다. 수정은 label mapping을 올바르게 해제하도록 변경하는 것입니다.
💡 쉬운 설명
네트워크 장비를 제어하는 리눅스 커널 드라이버가 더 이상 쓰지 않는 메모리를 반환하지 않아 시간이 지날수록 메모리가 줄어듭니다. 이 문제는 패치를 적용해 해결할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/mlx5e: Release the label when replacing existing ct entry
Cited commit doesn't release the label mapping when replacing existing ct
entry which leads to following memleak report:
unreferenced object 0xffff8881854cf280 (size 96):
comm "kworker/u48:74", pid 23093, jiffies 4296664564 (age 175.944s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<000000002722d368>] __kmalloc+0x4b/0x1c0
[<00000000cc44e18f>] mapping_add+0x6e8/0xc90 [mlx5_core]
[<000000003ad942a7>] mlx5_get_label_mapping+0x66/0xe0 [mlx5_core]
[<00000000266308ac>] mlx5_tc_ct_entry_create_mod_hdr+0x1c4/0xf50 [mlx5_core]
[<000000009a768b4f>] mlx5_tc_ct_entry_add_rule+0x16f/0xaf0 [mlx5_core]
[<00000000a178f3e5>] mlx5_tc_ct_block_flow_offload_add+0x10cb/0x1f90 [mlx5_core]
[<000000007b46c496>] mlx5_tc_ct_block_flow_offload+0x14a/0x630 [mlx5_core]
[<00000000a9a18ac5>] nf_flow_offload_tuple+0x1a3/0x390 [nf_flow_table]
[<00000000d0881951>] flow_offload_work_handler+0x257/0xd30 [nf_flow_table]
[<000000009e4935a4>] process_one_work+0x7c2/0x13e0
[<00000000f5cd36a7>] worker_thread+0x59d/0xec0
[<00000000baed1daf>] kthread+0x28f/0x330
[<0000000063d282a4>] ret_from_fork+0x1f/0x30
Fix the issue by correctly releasing the label mapping.
📍 영향받는 시스템
Linux 커널의 mlx5e(Mellanox ConnectX 계열 NIC) 드라이버 및 conntrack 하드웨어 오프로딩 기능을 사용하는 시스템
⚔️ 공격 벡터
직접적인 원격 공격 경로보다는 트래픽이 많은 상황에서 자원 고갈을 유발할 수 있는 메모리 누수 결함입니다.
🛡️ 대응 방법
커널을 Linux 커널 제공사 또는 배포판의 수정된 버전으로 업데이트하여 해당 커밋 수정 사항을 적용합니다.
🔧 검증 코드
출력된 커널 버전이 해당 CVE 수정이 포함된 배포판 패치 버전 이상인지 배포사 보안 공지와 대조하여 확인하며, mlx5 드라이버 사용 여부는 lsmod | grep mlx5로 추가 확인합니다.