🇰🇷 한글 설명
Linux 커널의 xprtrdma 구성 요소에서 RDMA 서버가 오류 형식의 응답을 보낼 때, NFS v3 클라이언트가 콜백 서비스(bc_serv)가 존재하지 않음에도 이를 콜백 호출로 잘못 처리하는 취약점입니다. 이로 인해 커널 내에서 NULL 포인터 역참조가 발생하여 시스템이 충돌하거나 중단될 수 있습니다.
💡 쉬운 설명
네트워크 통신 중 잘못된 응답을 받았을 때 컴퓨터의 핵심 시스템(커널)이 존재하지 않는 주소를 참조하려고 시도하여 시스템이 멈추는 문제입니다. 공격자가 특수하게 조작된 네트워크 응답을 보내면 시스템을 강제로 다운시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xprtrdma: treat all calls not a bcall when bc_serv is NULL
When a rdma server returns a fault format reply, nfs v3 client may
treats it as a bcall when bc service is not exist.
The debug message at rpcrdma_bc_receive_call are,
[56579.837169] RPC: rpcrdma_bc_receive_call: callback XID
00000001, length=20
[56579.837174] RPC: rpcrdma_bc_receive_call: 00 00 00 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 04
After that, rpcrdma_bc_receive_call will meets NULL pointer as,
[ 226.057890] BUG: unable to handle kernel NULL pointer dereference at
00000000000000c8
...
[ 226.058704] RIP: 0010:_raw_spin_lock+0xc/0x20
...
[ 226.059732] Call Trace:
[ 226.059878] rpcrdma_bc_receive_call+0x138/0x327 [rpcrdma]
[ 226.060011] __ib_process_cq+0x89/0x170 [ib_core]
[ 226.060092] ib_cq_poll_work+0x26/0x80 [ib_core]
[ 226.060257] process_one_work+0x1a7/0x360
[ 226.060367] ? create_worker+0x1a0/0x1a0
[ 226.060440] worker_thread+0x30/0x390
[ 226.060500] ? create_worker+0x1a0/0x1a0
[ 226.060574] kthread+0x116/0x130
[ 226.060661] ? kthread_flush_work_fn+0x10/0x10
[ 226.060724] ret_from_fork+0x35/0x40
...
📍 영향받는 시스템
Linux kernel (xprtrdma/rpcrdma 관련 모듈 사용 시스템)
⚔️ 공격 벡터
RDMA를 사용하는 네트워크 환경에서 조작된 오류 응답(fault format reply)을 전송하여 커널 NULL 포인터 역참조 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.