🇰🇷 한글 설명
Linux 커널의 TI netcp 드라이버에서 knav_dma_open_channel 함수가 오류 발생 시 일관되지 않은 값을 반환하여 시스템 충돌을 유발하는 취약점입니다. 기존에는 오류 시 ERR_PTR을 반환했으나, 이를 NULL로 표준화하여 netcp_free_navigator_resources 호출 시 발생하는 정렬 예외(alignment exception) 및 커널 패닉을 방지합니다.
💡 쉬운 설명
장치를 작동시키는 과정에서 오류가 났을 때, 컴퓨터가 잘못된 신호를 받아 시스템이 갑자기 멈추거나 꺼지는 현상이 발생할 수 있습니다. 이 문제를 해결하기 위해 오류가 발생하면 명확하게 '없음'이라는 신호를 보내도록 수정했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ethernet: ti: netcp: Standardize knav_dma_open_channel to return NULL on error
Make knav_dma_open_channel consistently return NULL on error instead
of ERR_PTR. Currently the header include/linux/soc/ti/knav_dma.h
returns NULL when the driver is disabled, but the driver
implementation does not even return NULL or ERR_PTR on failure,
causing inconsistency in the users. This results in a crash in
netcp_free_navigator_resources as followed (trimmed):
Unhandled fault: alignment exception (0x221) at 0xfffffff2
[fffffff2] *pgd=80000800207003, *pmd=82ffda003, *pte=00000000
Internal error: : 221 [#1] SMP ARM
Modules linked in:
CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.17.0-rc7 #1 NONE
Hardware name: Keystone
PC is at knav_dma_close_channel+0x30/0x19c
LR is at netcp_free_navigator_resources+0x2c/0x28c
[... TRIM...]
Call trace:
knav_dma_close_channel from netcp_free_navigator_resources+0x2c/0x28c
netcp_free_navigator_resources from netcp_ndo_open+0x430/0x46c
netcp_ndo_open from __dev_open+0x114/0x29c
__dev_open from __dev_change_flags+0x190/0x208
__dev_change_flags from netif_change_flags+0x1c/0x58
netif_change_flags from dev_change_flags+0x38/0xa0
dev_change_flags from ip_auto_config+0x2c4/0x11f0
ip_auto_config from do_one_initcall+0x58/0x200
do_one_initcall from kernel_init_freeable+0x1cc/0x238
kernel_init_freeable from kernel_init+0x1c/0x12c
kernel_init from ret_from_fork+0x14/0x38
[... TRIM...]
Standardize the error handling by making the function return NULL on
all error conditions. The API is used in just the netcp_core.c so the
impact is limited.
Note, this change, in effect reverts commit 5b6cb43b4d62 ("net:
ethernet: ti: netcp_core: return error while dma channel open issue"),
but provides a less error prone implementation.
📍 영향받는 시스템
Linux kernel (TI netcp driver 사용 시스템, 특히 Keystone 하드웨어 기반 ARM 시스템)
⚔️ 공격 벡터
로컬 공격자가 드라이버 오류를 유도하여 커널 패닉(DoS)을 일으킬 수 있음
🛡️ 대응 방법
Linux 커널을 최신 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.