🇰🇷 한글 설명
리눅스 커널의 net/sched 모듈 내 act_mirred 액션에서 취약점이 해결되었습니다. 이그레스(egress)에서 인그레스(ingress)로 트래픽 방향을 전환할 때 패킷을 Rx 백로그에 넣도록 변경하여, 동일 소켓의 락을 보유한 상태에서 Rx 경로를 재진입하면서 발생하는 교착상태(deadlock)를 방지합니다. 이 수정은 tcp_v4_rcv 재귀 호출로 인한 시스템 행(hang) 문제를 해결합니다.
💡 쉬운 설명
네트워크 패킷을 방향만 바꿔 다시 처리하는 과정에서 같은 자원을 두 번 잠그려 하면 시스템이 멈출 수 있었습니다. 이번 수정은 패킷을 대기열에 넣어 순서대로 처리하도록 바꿔 이 멈춤 현상을 막습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: act_mirred: use the backlog for mirred ingress
The test Davide added in commit ca22da2fbd69 ("act_mirred: use the backlog
for nested calls to mirred ingress") hangs our testing VMs every 10 or so
runs, with the familiar tcp_v4_rcv -> tcp_v4_rcv deadlock reported by
lockdep.
The problem as previously described by Davide (see Link) is that
if we reverse flow of traffic with the redirect (egress -> ingress)
we may reach the same socket which generated the packet. And we may
still be holding its socket lock. The common solution to such deadlocks
is to put the packet in the Rx backlog, rather than run the Rx path
inline. Do that for all egress -> ingress reversals, not just once
we started to nest mirred calls.
In the past there was a concern that the backlog indirection will
lead to loss of error reporting / less accurate stats. But the current
workaround does not seem to address the issue.
📍 영향받는 시스템
패치가 적용되지 않은 Linux 커널 (act_mirred 트래픽 제어 기능을 사용하는 시스템)
⚔️ 공격 벡터
로컬 또는 네트워크 트래픽 조작을 통해 mirred 리다이렉션을 유발하여 커널 교착상태로 서비스 거부(DoS)를 일으킬 수 있음
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트를 적용하여 수정된 Linux 커널로 업그레이드
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 CVE-2024-26740 수정이 포함된 패치 버전과 비교하여, 같거나 이후 버전이면 수정된 것입니다.