🇰🇷 한글 설명
리눅스 커널의 blk-cgroup 구성 요소에서 부모 데이터 페이지의 참조 횟수(refcount)를 해제하는 순서가 잘못되어 발생하는 Use-After-Free(UAF) 취약점입니다. 특정 cgroup 정책이 부모 데이터 페이지가 해제된 후에도 해당 페이지에 접근할 수 있어 메모리 손상이나 권한 상승을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 관리 규칙이 어긋나서, 이미 사용이 끝난 메모리 영역을 시스템이 다시 사용하려고 할 때 발생하는 오류입니다. 공격자가 이 허점을 이용하면 시스템의 제어권을 뺏거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
blk-cgroup: dropping parent refcount after pd_free_fn() is done
Some cgroup policies will access parent pd through child pd even
after pd_offline_fn() is done. If pd_free_fn() for parent is called
before child, then UAF can be triggered. Hence it's better to guarantee
the order of pd_free_fn().
Currently refcount of parent blkg is dropped in __blkg_release(), which
is before pd_free_fn() is called in blkg_free_work_fn() while
blkg_free_work_fn() is called asynchronously.
This patch make sure pd_free_fn() called from removing cgroup is ordered
by delaying dropping parent refcount after calling pd_free_fn() for
child.
BTW, pd_free_fn() will also be called from blkcg_deactivate_policy()
from deleting device, and following patches will guarantee the order.
📍 영향받는 시스템
blk-cgroup 기능을 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
특정 cgroup 정책을 조작하여 부모와 자식 데이터 페이지 간의 해제 순서를 어긋나게 유도하는 방식
🛡️ 대응 방법
해당 취약점이 수정된 최신 리눅스 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 취약점이 해결된 패치 버전 이상인지 확인