🇰🇷 한글 설명
Linux 커널 netfilter의 nft_inner 모듈에서 softirq가 프로세스 컨텍스트의 패킷 처리 중 percpu 영역(내부 헤더 오프셋)을 인터럽트하여 잘못된 값을 참조하는 문제가 수정되었습니다. 수정 사항은 bh를 비활성화한 상태에서 플래그, skbuff 쿠키, 터널 타입을 검증한 뒤에만 percpu 값을 복원하도록 변경합니다.
💡 쉬운 설명
리눅스 방화벽 기능이 네트워크 패킷을 처리하는 도중 다른 작업이 끼어들어 잘못된 정보를 읽을 수 있는 문제입니다. 이로 인해 패킷 검사가 올바르게 되지 않을 수 있어 패치가 적용되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nft_inner: incorrect percpu area handling under softirq
Softirq can interrupt ongoing packet from process context that is
walking over the percpu area that contains inner header offsets.
Disable bh and perform three checks before restoring the percpu inner
header offsets to validate that the percpu area is valid for this
skbuff:
1) If the NFT_PKTINFO_INNER_FULL flag is set on, then this skbuff
has already been parsed before for inner header fetching to
register.
2) Validate that the percpu area refers to this skbuff using the
skbuff pointer as a cookie. If there is a cookie mismatch, then
this skbuff needs to be parsed again.
3) Finally, validate if the percpu area refers to this tunnel type.
Only after these three checks the percpu area is restored to a on-stack
copy and bh is enabled again.
After inner header fetching, the on-stack copy is stored back to the
percpu area.
📍 영향받는 시스템
nftables(netfilter)의 내부 헤더 처리 기능을 사용하는 Linux 커널 (패치 적용 전 안정/LTS 커널 버전)
⚔️ 공격 벡터
네트워크로 조작된 터널 패킷을 전송해 softirq 인터럽트 타이밍을 유도하여 커널의 잘못된 메모리 상태를 발생시키는 방식이며, 정확한 악용 조건은 공개된 정보가 제한적입니다.
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트 커널로 업그레이드한 뒤 재부팅하세요.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지(CVE-2024-56638 수정 커널)와 비교하여, 패치된 버전이면 해당 취약점이 해결된 것입니다.
uname -r && (dpkg -l linux-image-$(uname -r) 2>/dev/null || rpm -q kernel 2>/dev/null) | head -5