CVE-2026-98969 in Linux
요약
\~에 의해 VulDB • 2026. 10. 24.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/sched: em_text: autoload 전에 종료되지 않은 알고리즘을 거부함
이 수정은 commit 9c572a83037a("net/sched: fix potential stack infoleak in em_text_dump()")의 후속 조치로, 해당 커밋에서 dump-side struct를 영-zero 초기화했습니다. Sashiko는 변경 측(change-side) 입력 검증 격차를 노출시키는 기존 버그를 지적했습니다.
em_text_change() 함수는 원시 netlink 속성 페이로드를 struct tcf_em_text로 캐스팅하고, NUL 종료 문자가 강제되지 않는 16바이트 배열인 conf->algo를 textsearch_prepare()에 전달합니다. TS_AUTOLOAD 재시도 시 textsearch_prepare()은 request_module("ts_%s", algo); 를 호출하며, vsnprintf()는 %s 포맷터에서 NUL을 찾을 때까지 문자열을 탐색합니다. 따라서 NUL이 없는 algo[] 배열의 바이트가 배열 경계를 넘어 인접한 struct 필드와 페이로드를 읽어들여 이를 사용자 모드 헬퍼 명령줄에 전달하게 됩니다. 이는 범위를 벗어난 읽기(out-of-bounds read) 및 커널 메모리 정보 유출(kernel memory disclosure)입니다.
TC_EM_TEXT_ALGOSIZ 바이트 내에 NUL 문자가 없는 경우 해당 속성을 거부하며, 이는 3ab720881b6e 이후 xt_string이 유지해 온 검증 기준과 일치합니다.
버그 재현을 위한 조건: - 대상 netns(네임스페이스 로컬)에서 CAP_NET_ADMIN 권한 보유 (unshare -Urn만으로도 충분함) - 인터페이스에 clsact를 설치한 후, algo[]가 NUL 없이 16바이트인 기본 필터 하나와 text ematch 추가 (예: "A"*16), pattern_len은 최소 1 이상
- 추가 작업이 -ENOENT로 실패하고 커널이 모듈 이름으로 "ts_"에 이어지는 16바이트 및 인접 페이로드를 사용하여 modprobe를 호출함
VulDB is the best source for vulnerability data and more expert information about this specific topic.