🇰🇷 한글 설명
Linux 커널의 SMB 클라이언트에서 clean_demultiplex_info() 함수 호출 시 서버 재연결(reconnect) 작업이 적절히 취소되지 않아 발생하는 취약점입니다. 이로 인해 데멀티플렉스 스레드가 종료된 후에도 재연결 작업이 실행되면서 이미 해제된 메모리에 접근하는 Use-After-Free(UAF) 오류가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 네트워크 연결을 끊을 때, 나중에 다시 연결하라고 예약해둔 작업이 남아있어 문제가 생기는 현상입니다. 이미 삭제된 정보를 다시 사용하려고 시도하다가 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
smb: client: cancel reconnect work in clean_demultiplex_info()
clean_demultiplex_info() cancels server->echo delayed work but not
server->reconnect, which can cause a use-after-free when the
demultiplex thread exits while a reconnect work is still queued:
cifs_demultiplex_thread()
cifs_readv_from_socket()
cifs_reconnect()
__cifs_reconnect()
cifs_queue_server_reconn()
mod_delayed_work(cifsiod_wq, &server->reconnect, 0)
clean_demultiplex_info()
cancel_delayed_work_sync(&server->echo) // echo canceled
// reconnect NOT canceled
kfree_sensitive(server) // server freed
...later, on cifsiod_wq:
smb2_reconnect_server()
server->srv_count // UAF read of freed server
Fix this by canceling server->reconnect delayed work in
clean_demultiplex_info() before the server is freed, the same way
cifs_put_tcp_session() already does.
📍 영향받는 시스템
Linux Kernel (SMB client module 포함 버전)
⚔️ 공격 벡터
특정 네트워크 상황에서 SMB 연결을 강제로 해제하여 메모리 오류를 유도하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 clean_demultiplex_info() 내 재연결 작업 취소 로직을 적용해야 함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인