🇰🇷 한글 설명
Linux 커널의 bpf sockmap 구성 요소에서 bpf_msg_push_data 함수 사용 시 테일 프래그먼트 오프셋 계산 오류가 발생합니다. 데이터 삽입 과정에서 오른쪽 프래그먼트의 오프셋이 잘못 계산되어 스캐터리스트 레이아웃의 불일치를 초래할 수 있습니다.
💡 쉬운 설명
데이터를 중간에 끼워 넣을 때 위치를 계산하는 공식에 오류가 있어 데이터 구조가 꼬이는 문제입니다. 이로 인해 시스템 메모리 관리의 일관성이 깨질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: sockmap: fix tail fragment offset in bpf_msg_push_data
When bpf_msg_push_data() inserts data in the middle of a scatterlist
entry, it splits the original entry into a left fragment and a right
fragment.
The right fragment offset is page-local, but the code advances it with
`start`, which is the message-global insertion point. For inserts into a
non-first SG entry, this over-advances the offset and leaves the split
layout inconsistent.
Advance the right fragment offset by the fragment-local delta,
`start - offset`, which matches the length removed from the front of the
original entry.
📍 영향받는 시스템
Linux kernel (bpf sockmap 기능이 활성화된 버전)
⚔️ 공격 벡터
특권 권한을 가진 사용자가 조작된 BPF 프로그램을 로드하여 메모리 레이아웃 불일치를 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인