🇰🇷 한글 설명
Linux 커널의 BPF 서브시스템에서 pkt_len이 유효하지 않은 패킷을 리다이렉트하는 문제가 해결되었습니다. syzbot이 보고한 이 문제는 bpf_prog_test_run_skb()가 빈 skb를 리다이렉트하여 fq_codel_drop()이 아무 skb도 없는 flow를 드롭하려다 발생했습니다. 패치는 포워딩 전에 패킷 길이를 검증하도록 수정했습니다.
💡 쉬운 설명
리눅스 커널 내부의 패킷 처리 기능에서 내용이 없는 빈 데이터를 잘못 전달하여 시스템이 비정상 동작할 수 있었던 문제입니다. 이제 전달 전에 데이터 길이를 확인하도록 고쳐졌습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Don't redirect packets with invalid pkt_len
Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
skbs, that is, the flow->head is null.
The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
run a bpf prog which redirects empty skbs.
So we should determine whether the length of the packet modified by bpf
prog or others like bpf_prog_test is valid before forwarding it directly.
📍 영향받는 시스템
패치 이전의 Linux 커널 (BPF 및 fq_codel 큐잉 디사이플린을 사용하는 버전)
⚔️ 공격 벡터
잘못된 길이의 패킷을 BPF 프로그램 경로로 유도하여 커널 크래시 또는 비정상 동작을 일으키는 방식 (로컬 또는 BPF 실행 권한 필요)
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널 업데이트를 설치하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 확인해 배포판의 패치된 커널 버전(벤더 보안 공지 기준)과 비교하며, 해당 수정이 포함된 버전 이상이면 패치된 것입니다.