🇰🇷 한글 설명
Linux 커널의 IPv6 flowlabel 처리 과정에서 RCU(Read-Copy-Update) 해제 전 옵션 메모리가 조기에 해제되는 취약점이 발견되었습니다. 이로 인해 /proc/net/ip6_flowlabel을 읽는 과정에서 해제된 메모리에 접근하여 시스템 충돌(Crash)이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 네트워크 정보를 정리하는 과정에서, 아직 사용 중인 정보를 너무 빨리 지워버려 발생하는 문제입니다. 이로 인해 시스템이 잘못된 정보를 읽으려다 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ipv6: flowlabel: defer exclusive option free until RCU teardown
`ip6fl_seq_show()` walks the global flowlabel hash under the seq-file
RCU read-side lock and prints `fl->opt->opt_nflen` when an option block
is present.
Exclusive flowlabels currently free `fl->opt` as soon as `fl->users`
drops to zero in `fl_release()`. However, the surrounding
`struct ip6_flowlabel` remains visible in the global hash table until
later garbage collection removes it and `fl_free_rcu()` finally tears it
down.
A concurrent `/proc/net/ip6_flowlabel` reader can therefore race that
early `kfree()` and dereference freed option state, triggering a crash
in `ip6fl_seq_show()`.
Fix this by keeping `fl->opt` alive until `fl_free_rcu()`. That matches
the lifetime already required for the enclosing flowlabel while readers
can still reach it under RCU.
📍 영향받는 시스템
Linux kernel (IPv6 flowlabel 관련 모듈 사용 시스템)
⚔️ 공격 벡터
로컬 사용자가 /proc/net/ip6_flowlabel 파일을 반복적으로 읽어 레이스 컨디션(Race Condition) 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 flowlabel 옵션의 해제 시점을 RCU teardown 이후로 연장해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.