🇰🇷 한글 설명
Linux 커널의 net/smc 모듈에서 연결 해제 시 수신(rx) 태스크릿을 비우기 전에 연결을 먼저 해제하여 발생하는 취약점입니다. 이로 인해 해제된 메모리 영역을 참조하는 Use-After-Free 오류가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 연결을 끊는 과정에서 데이터 처리가 완전히 끝나지 않았는데 메모리를 먼저 지워버리는 문제입니다. 이로 인해 시스템이 잘못된 메모리 주소를 참조하여 오류가 발생하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/smc: unregister the connection before draining the rx tasklet
smc_conn_free() calls smc_ism_unset_conn() only while the link group is
still on its device list, and never sets conn->killed.
smc_lgr_terminate_sched() unlinks the group immediately and defers killing
its connections to a work item, so a connection freed in that window keeps
its smcd->conn[] slot with both gates in smcd_handle_irq() open, and the
device can re-arm the receive tasklet after tasklet_kill() has returned. On
the DMB-nocopy path the ghost send buffer is freed right after that drain,
so the re-armed tasklet dereferences it.
Unregister unconditionally and drain before the detach at both teardown
sites, mirroring rmb_desc, which smc_buf_unuse() releases after the drain.
Clear conn->sndbuf_desc before freeing it as well, so a reader that samples
the pointer cannot get one that is already freed.
📍 영향받는 시스템
SMC(Shared Memory Communications) 모듈을 사용하는 Linux Kernel
⚔️ 공격 벡터
특수하게 조작된 네트워크 패킷을 통해 연결 해제 프로세스를 유도하여 메모리 오류 유발
🛡️ 대응 방법
SMC 모듈의 연결 해제 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인