🇰🇷 한글 설명
Linux 커널의 BPF sockmap에서 vsock 및 unix 소켓 지원이 추가됨에 따라, tls_sw_has_ctx_tx/rx 함수가 모든 소켓을 inet_connection_sock으로 잘못 가정하여 발생하는 취약점입니다. 이로 인해 vsock이나 af_unix 소켓 사용 시 잘못된 포인터가 반환되어 페이지 폴트(Page Fault) 및 시스템 오류가 발생할 수 있습니다.
💡 쉬운 설명
리눅스 시스템이 특정 통신 방식(vsock, unix 소켓)을 처리할 때, 데이터 형식을 잘못 판단하여 시스템이 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다. 이는 잘못된 메모리 주소를 참조하려고 시도할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Add sk_is_inet and IS_ICSK check in tls_sw_has_ctx_tx/rx
As the introduction of the support for vsock and unix sockets in sockmap,
tls_sw_has_ctx_tx/rx cannot presume the socket passed in must be IS_ICSK.
vsock and af_unix sockets have vsock_sock and unix_sock instead of
inet_connection_sock. For these sockets, tls_get_ctx may return an invalid
pointer and cause page fault in function tls_sw_ctx_rx.
BUG: unable to handle page fault for address: 0000000000040030
Workqueue: vsock-loopback vsock_loopback_work
RIP: 0010:sk_psock_strp_data_ready+0x23/0x60
Call Trace:
? __die+0x81/0xc3
? no_context+0x194/0x350
? do_page_fault+0x30/0x110
? async_page_fault+0x3e/0x50
? sk_psock_strp_data_ready+0x23/0x60
virtio_transport_recv_pkt+0x750/0x800
? update_load_avg+0x7e/0x620
vsock_loopback_work+0xd0/0x100
process_one_work+0x1a7/0x360
worker_thread+0x30/0x390
? create_worker+0x1a0/0x1a0
kthread+0x112/0x130
? __kthread_cancel_work+0x40/0x40
ret_from_fork+0x1f/0x40
v2:
- Add IS_ICSK check
v3:
- Update the commits in Fixes
📍 영향받는 시스템
vsock 및 unix 소켓을 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특정 소켓 유형(vsock, af_unix)을 사용하는 네트워크 통신 환경을 통해 시스템 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 IS_ICSK 체크 로직을 포함해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.