🇰🇷 한글 설명
Linux 커널의 neighbour 모듈에서 NDTPA_INTERVAL_PROBE_TIME_MS 설정 시 유효성 검사가 누락되어 발생한 취약점입니다. 매우 큰 값을 입력할 경우 정수 오버플로 및 타입 캐스팅 오류로 인해 최소값 검사를 우회하고 타이머 동작에 문제를 일으킬 수 있습니다.
💡 쉬운 설명
네트워크 연결 상태를 확인하는 시간 설정에 잘못된 값을 넣을 수 있는 보안 허점이 발견되었습니다. 공격자가 이 허점을 이용해 시스템의 네트워크 관리 타이머를 비정상적으로 작동시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
neighbour: Enforce min/max to NDTPA_INTERVAL_PROBE_TIME_MS.
NDTPA_INTERVAL_PROBE_TIME_MS sets .type and .min but misses
.validation_type, so no validation is applied:
# ynl --family rt-neigh --do setneightbl \
--json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 0}}'
# ynl --family rt-neigh --dump getneightbl --output-json | \
jq '.[] | select(.name == "arp_cache" and has("config"))
| .parms["interval-probe-time-ms"]'
0
Moreover, nla_get_msecs() uses msecs_to_jiffies(), and u64 is
silently cast to u32, so a larger value can bypass the min check:
e.g. 4294967296 == 0x100000000
# ynl --family rt-neigh --do setneightbl \
--json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 4294967296}}'
# ynl --family rt-neigh --dump getneightbl --output-json | \
jq '.[] | select(.name == "arp_cache" and has("config"))
| .parms["interval-probe-time-ms"]'
0
msecs_to_jiffies() returns MAX_JIFFY_OFFSET if the value is
larger than INT_MAX. Also, INT_MAX ms overflows int NEIGH_VAR()
when HZ > 1000 (Alpha, MIPS), and passing a negative integer to
queue_delayed_work(unsigned long delay) causes sign extension,
which wraps around the expiry time to the past, resulting in it
being handled as 0 delay in the timer wheel.
Let's use NLA_POLICY_FULL_RANGE() and limit the max to 1 day.
The same max check is applied to sysctl as well.
Note that this controls the probe interval for NTF_MANAGED
entries, so the max of 1 day is unlikely to break any
deployments.
📍 영향받는 시스템
Linux Kernel (NDTPA_INTERVAL_PROBE_TIME_MS 설정이 가능한 버전)
⚔️ 공격 벡터
네트워크 설정 도구(ynl 등)를 통해 유효하지 않은 매우 큰 정수 값을 interval-probe-time-ms 파라미터로 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 NLA_POLICY_FULL_RANGE() 및 최대값 제한(1일)이 적용되도록 조치
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux