🇰🇷 한글 설명
Linux 커널의 net/sched: cls_route 구성 요소에서 route4 분류기가 fastmap 캐시를 사용하는 과정 중 Use-After-Free(UAF) 취약점이 발견되었습니다. 필터가 삭제되는 시점과 읽기 작업이 캐시에 필터를 기록하는 시점 사이의 경쟁 상태(Race Condition)로 인해 이미 해제된 메모리에 접근할 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 빠르게 찾기 위해 임시 저장소(캐시)를 사용하는데, 데이터가 삭제되는 순간에 잘못된 정보가 저장되어 이미 사라진 데이터를 다시 읽으려다 오류가 발생하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: cls_route: fix fastmap use-after-free on filter
The route4 classifier maintains a 16-slot fastmap cache that stores raw
struct route4_filter pointers indexed by (id, iif). The reader
(route4_classify) populates this cache via route4_set_fastmap() for every
classified packet that hits a filter. The writer (route4_delete,
route4_change) clears the cache via route4_reset_fastmap() before
RCU-deferred kfree of the filter.
This creates a UAF race:
1. Reader walks the RCU-protected bucket chain, finds filter f
2. Writer unlinks f, calls route4_reset_fastmap(), then tcf_queue_work()
3. Reader calls route4_set_fastmap() and writes f into the cache
*after* the writer's reset, caching a pointer about to be freed
4. After the RCU grace period, kfree(f) executes
5. Next classified packet on the same (id, iif) tuple hits the stale
fastmap entry and reads f->res from freed memory
Reproduced with an mdelay(100) accelerator in route4_set_fastmap() and a
concurrent add/delete stress test (provided by both zdi and Santosh).
Both triggered KASAN slab-use-after-free reports in the route4 fastmap
paths.
Fix:
Introduce a per-filter boolean dying flag to suppress stale fastmap
republishing by in-flight readers.
📍 영향받는 시스템
Linux kernel (net/sched: cls_route 모듈을 사용하는 시스템)
⚔️ 공격 벡터
네트워크 패킷 분류 과정에서 특정 조건(id, iif 튜플)을 이용한 경쟁 상태를 유도하여 해제된 메모리 참조 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 필터의 dying flag 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux