🇰🇷 한글 설명
Linux 커널의 브리지(net/bridge) 모듈에서 br_multicast_dev_del() 함수에 남아 있던 오래된 rcu_barrier() 호출을 제거하는 수정입니다. 해당 호출이 네트워크 네임스페이스 정리 중 RTNL 락을 장시간 점유하여 시스템 교착 상태와 유사한 대기 현상을 일으킬 수 있었습니다.
💡 쉬운 설명
리눅스 커널의 네트워크 브리지 기능에서 가상 네트워크를 삭제할 때 시스템이 오래 멈추는 문제가 있었습니다. 이를 해결하기 위해 불필요한 대기 코드를 제거한 수정입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: bridge: remove stale rcu_barrier() in br_multicast_dev_del()
This rcu_barrier() came from a time call_rcu() calls were used in
net/bridge/br_multicast.c.
Now kfree_rcu() is there, we can remove this problematic rcu_barrier()
which causes extreme RTNL pressure in many syzbot reports.
INFO: task syz-executor:77945 is blocked on a mutex likely owned by task kworker/u1024:5:36537.
task:kworker/u1024:5 state:D stack:24616 pid:36537 tgid:36537 ppid:2 task_flags:0x4208060 flags:0x00080000 last_sleep:612797637337
Workqueue: netns cleanup_net
Call Trace:
<TASK>
[<ffffffff81914eaa>] context_switch+0xf2a/0x1730 kernel/sched/core.c:6483
[<ffffffff81201143>] __schedule+0x1133/0x43a0 kernel/sched/core.c:8411
[<ffffffff8120446b>] __schedule_loop kernel/sched/core.c:8514 [inline]
[<ffffffff8120446b>] schedule+0xab/0x260 kernel/sched/core.c:8529
[<ffffffff8121a093>] schedule_timeout+0xc3/0x2b0 kernel/time/sleep_timeout.c:75
[<ffffffff81205347>] do_wait_for_common kernel/sched/completion.c:100 [inline]
[<ffffffff81205347>] __wait_for_common kernel/sched/completion.c:121 [inline]
[<ffffffff81205347>] wait_for_common kernel/sched/completion.c:132 [inline]
[<ffffffff81205347>] wait_for_completion+0x2c7/0x5d0 kernel/sched/completion.c:153
[<ffffffff81b8f27f>] rcu_barrier+0x49f/0x620 kernel/rcu/tree.c:3888
[<ffffffff860091b3>] br_multicast_dev_del+0x303/0x350 net/bridge/br_multicast.c:4459
[<ffffffff85fb5dbc>] br_dev_uninit+0x1c/0x40 net/bridge/br_device.c:157
[<ffffffff8568058c>] unregister_netdevice_many_notify+0x1c1c/0x2300 net/core/dev.c:12599
[<ffffffff8562be43>] ops_exit_rtnl_list net/core/net_namespace.c:187 [inline]
[<ffffffff8562be43>] ops_undo_list+0x3d3/0x940 net/core/net_namespace.c:248
📍 영향받는 시스템
수정 이전의 Linux 커널 (브리지 모듈 사용 시 영향, 정확한 버전 범위는 확인 불가)
⚔️ 공격 벡터
로컬 사용자가 네트워크 네임스페이스와 브리지 장치를 반복 생성/삭제하여 커널 대기 상태를 유발하는 서비스 거부(DoS) 형태로 악용 가능성이 있음
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널 보안 업데이트를 설치하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 해당 수정이 포함된 패치 버전과 비교하며, 수정이 포함된 이후 버전이면 적용된 것입니다.