CVE-2026-98613 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 19.

리눅스 커널에서 다음 취약점이 해결되었습니다:

bpf: 로컬 kptr 및 그래프 루트를 통해 소유권 깊이 제한

프로그램 할당 객체는 참조된 kptr을 통해 다른 로컬 객체를 소유할 수 있습니다. bpf_obj_free_fields()는 RCU를 통해 객체 저장소가 해제되기 전에 __bpf_obj_drop_impl()을 통해 이러한 포인터를 동기적으로 따라갑니다. 따라서 자기 참조형 로컬 kptr 타입은 임의로 깊은 객체 체인을 허용하며, 헤드(drop)를 제거하면 커널 스택이 고갈될 수 있습니다. 긴 비순환(acyclic) 타입 체인도 동일한 문제를 가집니다.

btf_check_and_fixup_fields()는 여전히 참조된 kptr이 커널 타입만 가리킨다고 가정하고, 리스트 및 rbtree 루트를 통한 소유권만 확인합니다. 기존 규칙은 그래프 전용 순환(graph-only cycles)에 대해 충분합니다: 각 그래프 엣지의 대상에는 노드가 포함되어야 하므로, 순환 내의 모든 타입은 루트와 노드를 모두 갖게 됩니다. 이 규칙은 하나의 루트가 다른 루트를 소유하는 것을 거부하여 모든 순환을 차단합니다. 또한 그래프 전용 체인을 3개 유형의 길이로 제한하거나(첫 번째 유형이 노드를 포함할 경우 2개), 더 긴 비순환 체인은 보수적으로 거부합니다. bpf_kptr_xchg() 지원이 로컬 kptr에 도입되면서 발생한 버그는 누락된 그래프 전용 순환이 아니라, 누락된 로컬-kptr 엣지입니다.

해당 제한을 그래프 루트와 로컬 참조 kptr을 아우르는bounded ownership walk로 대체합니다. 모든 BTF 레코드가 수정(fixup)된 후에 이를 실행하고, 8개 이상의 레코드 보유 타입보다 깊은 순환과 경로를 거부하며, 남은 할당량(budget)과 비교하는 동안 각 유형의 접미사 깊이(suffix depth)를 캐시합니다. 이는 기존 규칙에 의해 거부되었던 더 긴 비순환 그래프 전용 레이아웃도 허용하므로, 해당 BTF 테스트를 적절히 업데이트해야 합니다.

재귀적 소멸이 BPF 호출 체인 아래에서 실행될 수 있으므로, 이 경계는 MAX_CALL_FRAMES와 독립적으로 유지됩니다. 특수 필드 메타데이터가 없는 일반 로컬 포인터 대상은 재귀 없이 종료되는 마지막 drop만 추가합니다. 비소유 kptr 및 커널-BTF kptr은 로컬 레코드를 통해 재귀하지 않으며 walk 범위 밖에 있습니다. 로컬 percpu-kptr 엣지도 포함하되, 현재 특수 필드가 있는 percpu 객체 할당은 금지되어 있으므로 해당 제한을 완화해도 소유권 경계를 우회할 수 없습니다.

btf_check_and_fixup_fields()는 별도로 할당된 맵 레코드를 포함하여 graph_root.value_rec를 계속 초기화합니다. 소유권 관계는 불변의 프로그램 BTF에 속하며, BTF 로드 시점에만 유효성 검사가 필요합니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-422200

EPSS

0.00000

출처

Do you know our Splunk app?

Download it now for free!