🇰🇷 한글 설명
Linux 커널의 rxrpc 프로토콜 구현에서 인터럽트가 비활성화된 상태로 IP 계층의 MTU 크기를 확인하려 할 때 발생하는 취약점입니다. 이로 인해 커널 경고(WARNING)가 발생하며 시스템 안정성에 영향을 줄 수 있습니다. 해당 문제는 MTU 확인 함수 호출 위치를 인터럽트가 활성화된 상위 스택으로 이동함으로써 해결되었습니다.
💡 쉬운 설명
컴퓨터의 핵심 엔진인 커널이 아주 중요한 작업을 하는 동안, 하지 말아야 할 방식으로 다른 정보를 물어보려다 충돌이 발생하는 문제입니다. 이 충돌은 시스템에 경고를 띄우거나 예기치 않은 동작을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rxrpc: Fix irq-disabled in local_bh_enable()
The rxrpc_assess_MTU_size() function calls down into the IP layer to find
out the MTU size for a route. When accepting an incoming call, this is
called from rxrpc_new_incoming_call() which holds interrupts disabled
across the code that calls down to it. Unfortunately, the IP layer uses
local_bh_enable() which, config dependent, throws a warning if IRQs are
enabled:
WARNING: CPU: 1 PID: 5544 at kernel/softirq.c:387 __local_bh_enable_ip+0x43/0xd0
...
RIP: 0010:__local_bh_enable_ip+0x43/0xd0
...
Call Trace:
<TASK>
rt_cache_route+0x7e/0xa0
rt_set_nexthop.isra.0+0x3b3/0x3f0
__mkroute_output+0x43a/0x460
ip_route_output_key_hash+0xf7/0x140
ip_route_output_flow+0x1b/0x90
rxrpc_assess_MTU_size.isra.0+0x2a0/0x590
rxrpc_new_incoming_peer+0x46/0x120
rxrpc_alloc_incoming_call+0x1b1/0x400
rxrpc_new_incoming_call+0x1da/0x5e0
rxrpc_input_packet+0x827/0x900
rxrpc_io_thread+0x403/0xb60
kthread+0x2f7/0x310
ret_from_fork+0x2a/0x230
ret_from_fork_asm+0x1a/0x30
...
hardirqs last enabled at (23): _raw_spin_unlock_irq+0x24/0x50
hardirqs last disabled at (24): _raw_read_lock_irq+0x17/0x70
softirqs last enabled at (0): copy_process+0xc61/0x2730
softirqs last disabled at (25): rt_add_uncached_list+0x3c/0x90
Fix this by moving the call to rxrpc_assess_MTU_size() out of
rxrpc_init_peer() and further up the stack where it can be done without
interrupts disabled.
It shouldn't be a problem for rxrpc_new_incoming_call() to do it after the
locks are dropped as pmtud is going to be performed by the I/O thread - and
we're in the I/O thread at this point.
📍 영향받는 시스템
Linux kernel (rxrpc module 사용 환경)
⚔️ 공격 벡터
네트워크를 통한 rxrpc 프로토콜 패킷 전송을 유도하여 커널 경고 및 불안정성 유발
🛡️ 대응 방법
rxrpc 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.