🇰🇷 한글 설명
Linux 커널 xscale ethernet 드라이버에서 ixp46x 칩셋에만 존재하는 PTP 지원을 확인하지 않고 무조건 ixp46x_ptp_find()를 호출하여 NULL 포인터 역참조(dereference) 오류 발생. tcpdump나 ethtool -T 명령 실행 시 Segmentation fault로 시스템 중단.
💡 쉬운 설명
네트워크 드라이버가 지원하지 않는 기능을 무조건 실행하려다가 시스템이 충돌하는 문제. 네트워크 분석 도구 사용 시 장비가 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ethernet: xscale: Check for PTP support properly
In ixp4xx_get_ts_info() ixp46x_ptp_find() is called
unconditionally despite this feature only existing on
ixp46x, leading to the following splat from tcpdump:
root@OpenWrt:~# tcpdump -vv -X -i eth0
(...)
Unable to handle kernel NULL pointer dereference at virtual address
00000238 when read
(...)
Call trace:
ptp_clock_index from ixp46x_ptp_find+0x1c/0x38
ixp46x_ptp_find from ixp4xx_get_ts_info+0x4c/0x64
ixp4xx_get_ts_info from __ethtool_get_ts_info+0x90/0x108
__ethtool_get_ts_info from __dev_ethtool+0xa00/0x2648
__dev_ethtool from dev_ethtool+0x160/0x234
dev_ethtool from dev_ioctl+0x2cc/0x460
dev_ioctl from sock_ioctl+0x1ec/0x524
sock_ioctl from sys_ioctl+0x51c/0xa94
sys_ioctl from ret_fast_syscall+0x0/0x44
(...)
Segmentation fault
Check for ixp46x in ixp46x_ptp_find() before trying to set up
PTP to avoid this.
To avoid altering the returned error code from ixp4xx_hwtstamp_set()
which before this patch was -EOPNOTSUPP, we return -EOPNOTSUPP
from ixp4xx_hwtstamp_set() if ixp46x_ptp_find() fails no matter
the error code. The helper function ixp46x_ptp_find() helper
returns -ENODEV.
📍 영향받는 시스템
Linux kernel ixp4xx series ethernet driver (OpenWrt, Linksys, Netgear 등 ARM 임베디드 라우터)
⚔️ 공격 벡터
로컬 권한 사용자가 tcpdump나 ethtool -T 명령 실행으로 DoS 유발
🛡️ 대응 방법
Linux 커널 패치 적용 (ixp46x 칩셋 확인 후 PTP 초기화)
🔧 검증 코드
커널 버전 표시 후 'Requested operation not supported' 메시지면 정상, 'NULL pointer dereference' 오류면 취약한 상태
uname -r && ethtool -T eth0 2>&1 | head -1