🇰🇷 한글 설명
Linux 커널의 netfilter nf_tables에서 패킷 판정이 NF_STOLEN일 때 skb가 이미 해제되었을 수 있음에도 skb 필드에 접근하는 문제가 해결되었습니다. 트레이싱이 활성화된 경우 이로 인해 use-after-free가 발생할 수 있어, 트레이스 상태에 nf_trace 사본을 캐싱하고 trace id를 미리 계산하며 STOLEN일 때는 mark 접근 및 패킷 덤프를 건너뛰도록 수정되었습니다.
💡 쉬운 설명
리눅스 커널의 방화벽 기능이 이미 메모리에서 해제된 네트워크 패킷 데이터를 읽으려고 시도하던 문제입니다. 이를 악용하면 시스템 메모리를 손상시키거나 권한 상승이 가능할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nf_tables: avoid skb access on nf_stolen
When verdict is NF_STOLEN, the skb might have been freed.
When tracing is enabled, this can result in a use-after-free:
1. access to skb->nf_trace
2. access to skb->mark
3. computation of trace id
4. dump of packet payload
To avoid 1, keep a cached copy of skb->nf_trace in the
trace state struct.
Refresh this copy whenever verdict is != STOLEN.
Avoid 2 by skipping skb->mark access if verdict is STOLEN.
3 is avoided by precomputing the trace id.
Only dump the packet when verdict is not "STOLEN".
📍 영향받는 시스템
nf_tables 및 트레이싱 기능을 사용하는 Linux 커널 (수정 이전의 안정 브랜치 및 배포판 커널)
⚔️ 공격 벡터
로컬 또는 네트워크 공격자가 특정 netfilter 규칙과 트레이싱 설정 환경에서 패킷을 유도해 해제된 skb 메모리에 접근하게 함으로써 크래시 또는 권한 상승을 시도
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트된 커널로 업그레이드하고 재부팅
🔧 검증 코드
출력된 커널 버전이 배포판의 보안 패치 적용 버전 이상인지 확인하며, 패키지 배포 공지의 CVE-2022-49622 수정 버전과 비교합니다.
uname -r && (dpkg -l 'linux-image*' 2>/dev/null || rpm -qa 'kernel*' 2>/dev/null) | head -n 5