🇰🇷 한글 설명
리눅스 커널의 cgroup UNIX getname 훅에서 bpf_setsockopt() 및 bpf_getsockopt() 호출이 허용되어 발생하는 취약점입니다. 해당 훅은 소켓 잠금(socket lock)을 획득하지 않은 상태에서 실행되므로, BPF 프로그램을 통해 sock_owned_by_me() 경고를 유발할 수 있습니다.
💡 쉬운 설명
특정 시스템 관리 기능(BPF)을 사용할 때, 데이터 보호를 위한 잠금 장치 없이 소켓 정보에 접근하여 시스템 오류나 경고를 일으킬 수 있는 문제입니다. 이를 방지하기 위해 해당 경로에서의 잘못된 접근을 차단하는 패치가 적용되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Disallow bpf_{g,s}etsockopt() in cgroup UNIX getname hooks
_bpf_setsockopt() and _bpf_getsockopt() call sock_owned_by_me() for
full sockets, so these helpers expect the socket lock to be held.
BPF_CGROUP_UNIX_GETPEERNAME and BPF_CGROUP_UNIX_GETSOCKNAME run BPF
programs without acquiring the socket lock. A program attached to
either hook can therefore trigger the sock_owned_by_me() warning by
calling bpf_setsockopt() or bpf_getsockopt().
Disallow bpf_setsockopt() and bpf_getsockopt() for CGROUP_UNIX_GETPEERNAME
and CGROUP_UNIX_GETSOCKNAME.
📍 영향받는 시스템
Linux Kernel (cgroup UNIX getname 훅을 사용하는 버전)
⚔️ 공격 벡터
cgroup UNIX getname 훅에 연결된 BPF 프로그램을 통해 소켓 잠금 없이 bpf_setsockopt/getsockopt 함수를 호출
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인