🇰🇷 한글 설명
Linux 커널의 SCTP 프로토콜 구현에서 sctp_wait_for_connect() 함수가 대기 중 소켓 잠금을 해제할 때 발생하는 레이스 컨디션 취약점입니다. 이 과정에서 비정상적인 ABORT 처리가 발생하면 소켓 연결이 해제될 수 있으며, 이후 dangling pointer를 참조하게 되어 시스템 오류나 보안 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 연결을 기다리는 동안 갑작스러운 연결 끊김이 발생하면, 컴퓨터가 이미 사라진 연결 정보를 계속 사용하려고 시도하는 오류입니다. 이로 인해 시스템이 충돌하거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sctp: check RCV_SHUTDOWN after the sendmsg connect wait
sctp_wait_for_connect() drops the socket lock while it sleeps. An
out-of-the-blue ABORT can then be processed from the socket backlog and
unlink the association. If a concurrent shutdown(fd, SHUT_RD) sets
RCV_SHUTDOWN, the waiter breaks with err == 0 before checking
asoc->base.dead. Its final sctp_association_put() can then free the
association, leaving sctp_sendmsg_to_asoc() to continue with a dangling
pointer.
Check RCV_SHUTDOWN along with the wait error in sctp_sendmsg_to_asoc()
before using the association again. The check only accesses the socket,
so it needs no additional association reference. Return the existing
-ESRCH so that sctp_sendmsg() skips freeing a new association that may
already have been destroyed.
Keep sctp_wait_for_connect() unchanged to preserve its behavior for the
connect() caller.
📍 영향받는 시스템
SCTP 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특수하게 조작된 SCTP ABORT 패킷을 전송하여 연결 해제와 동시에 레이스 컨디션 유도
🛡️ 대응 방법
SCTP 관련 보안 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.