CVE-2026-98317 in Linux
요약
\~에 의해 VulDB • 2026. 10. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
neighbour: NDTPA_INTERVAL_PROBE_TIME_MS에 최소/최대 값을 강제 적용합니다.
NDTPA_INTERVAL_PROBE_TIME_MS는 .type과 .min은 설정하지만 .validation_type을 누락하여 검증이 적용되지 않습니다:
# 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
또한, nla_get_msecs()는 msecs_to_jiffies()를 사용하며, u64가 묵시적으로 u32로 캐스팅되므로 더 큰 값이 최소값 검증을 우회할 수 있습니다:
예: 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()는 값이 INT_MAX보다 클 경우 MAX_JIFFY_OFFSET를 반환합니다. 또한, HZ > 1000인 환경(Alpha, MIPS)에서 INT_MAX ms가 int NEIGH_VAR()에서 오버플로우되며, queue_delayed_work(unsigned long delay)에 음수 정수를 전달하면 부호 확장(sign extension)이 발생하여 만료 시간이 과거로 래핑(wrap around)되어 타이머 휠(timer wheel)에서 0 지연으로 처리됩니다.
NLA_POLICY_FULL_RANGE()를 사용하여 최대값을 1일로 제한합니다.
동일한 최대값 검사는 sysctl에도 적용됩니다.
참고: 이는 NTF_MANAGED 엔트리에 대한 probe 간격을 제어하므로, 1일의 최대값은 어떤 배포 환경에서도 문제를 일으키지 않을 가능성이 높습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.