🇰🇷 한글 설명
Linux 커널의 net/smc 모듈에서 smc_llc_event_handler() 함수가 CONFIRM_LINK 또는 ADD_LINK_CONT 요청을 처리할 때 기존 qentry 존재 여부를 확인하지 않아 발생하는 취약점입니다. 악의적인 피어가 중복 요청을 보낼 경우 기존 할당된 포인터를 덮어쓰게 되어 kmalloc-96 객체가 해제되지 않고 메모리 누수가 발생합니다.
💡 쉬운 설명
데이터를 처리하는 과정에서 이미 작업 중인 데이터가 있는데 새로운 데이터를 덮어씌워 버리는 문제입니다. 이로 인해 컴퓨터의 메모리가 조금씩 낭비되어 시스템 성능에 영향을 줄 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/smc: fix qentry overwrite for CONFIRM_LINK and ADD_LINK_CONT in smc_llc_event_handler()
The SMC_LLC_CONFIRM_LINK / SMC_LLC_ADD_LINK_CONT branch in
smc_llc_event_handler() stores an incoming qentry into the local LLC flow
without first checking whether a qentry is already pending. If a malicious or
buggy peer sends a second CONFIRM_LINK or ADD_LINK_CONT request while a flow is
active and flow->qentry is already set, smc_llc_flow_qentry_set() overwrites the
pointer without freeing the previous allocation, leaking one kmalloc-96 object
per spurious message.
The sibling SMC_LLC_DELETE_LINK branch already has the correct !flow->qentry
guard. Apply the same guard to the CONFIRM_LINK/ADD_LINK_CONT branch so that a
duplicate message when qentry is already occupied falls through to break and is
freed by the kfree(qentry) at the out: label, rather than silently leaking the
existing allocation.
The response direction (smc_llc_rx_response()) is unaffected: it already guards
with flow->qentry at the equivalent site and drops duplicate responses
correctly.
📍 영향받는 시스템
Linux Kernel (net/smc 모듈을 사용하는 버전)
⚔️ 공격 벡터
악의적이거나 버그가 있는 피어가 활성화된 흐름 중에 중복된 CONFIRM_LINK 또는 ADD_LINK_CONT 요청을 전송
🛡️ 대응 방법
smc_llc_event_handler() 내의 해당 분기에 qentry 존재 여부를 확인하는 가드(guard) 로직을 적용한 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.