🇰🇷 한글 설명
Linux 커널의 GRE 터널링 구현에서 SEQ 또는 CSUM 기능 사용 시 lockless TX 설정이 누락되는 회귀 문제가 발견되었습니다. 이로 인해 ndo_start_xmit 호출 시 _xmit_lock을 다시 획득하게 되어, 언더레이 장치와의 ABBA 데드락(Deadlock)이 발생할 위험이 있습니다.
💡 쉬운 설명
네트워크 터널을 만드는 과정에서 시스템의 잠금(Lock) 관리 방식에 오류가 생겨 컴퓨터가 멈출 수 있는 문제입니다. 특정 네트워크 기능을 사용할 때 서로 다른 작업이 자원을 차지하려고 버티다가 시스템이 응답하지 않는 상태가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: gre: fix lltx regression for GRE tunnels with SEQ/CSUM
Before commit 00d066a4d4ed ("netdev_features: convert NETIF_F_LLTX to
dev->lltx"), NETIF_F_LLTX was set unconditionally in both
__gre_tunnel_init() and ip6gre_tnl_init_features() alongside
GRE_FEATURES:
dev->features |= GRE_FEATURES | NETIF_F_LLTX;
When that commit converted NETIF_F_LLTX to the dev->lltx flag, it
placed 'dev->lltx = true' after the SEQ/CSUM early returns instead
of before them. This causes GRE/GRETAP/ip6gre tunnels with SEQ or
CSUM+encap to lose lockless TX, reintroducing _xmit_lock acquisition
around their ndo_start_xmit. Since GRE xmit re-enters the stack via
ip_tunnel_xmit(), holding _xmit_lock risks ABBA deadlock with the
underlay device.
CPU0 CPU1
---- ----
lock(&qdisc_xmit_lock_key#6);
lock(&qdisc_xmit_lock_key#3);
lock(&qdisc_xmit_lock_key#6);
lock(&qdisc_xmit_lock_key#3);
Fix by moving dev->lltx = true before the early returns in both
functions, restoring the original unconditional behavior.
📍 영향받는 시스템
SEQ 또는 CSUM 기능을 사용하는 GRE, GRETAP, ip6gre 터널을 사용하는 Linux 커널
⚔️ 공격 벡터
직접적인 공격보다는 특정 네트워크 트래픽 패턴을 유도하여 시스템 데드락을 유발하는 방식
🛡️ 대응 방법
커널 패치(commit 00d066a4d4ed 관련 수정 사항)를 적용하여 dev->lltx 설정을 조기 반환문 이전으로 이동
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux