🇰🇷 한글 설명
Linux 커널의 net/smc 구성 요소에서 SMC-Rv2 LLC 메시지가 할당된 버퍼 크기를 초과하여 처리되는 취약점이 발견되었습니다. 이로 인해 잘못된 메모리 영역의 rkey를 읽어 등록된 rtoken을 임의로 삭제하거나 잘못된 rtoken을 설치할 수 있는 문제가 발생합니다.
💡 쉬운 설명
네트워크 통신 과정에서 데이터가 정해진 그릇보다 크게 들어올 때, 그릇 밖의 다른 데이터까지 건드려 시스템의 보안 키를 마음대로 지우거나 조작할 수 있는 문제입니다. 이로 인해 네트워크 연결의 안정성이 깨지거나 보안 설정이 무력화될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/smc: carry oversized SMC-Rv2 LLC messages in the queue entry
smc_llc_rmt_delete_rkey() and smc_llc_save_add_link_rkeys() read the part
of a v2 message that does not fit into the 44-byte union smc_llc_msg, and
both bound themselves by the size of the buffer it landed in, not by what
arrived. On a link with a shared v2 receive buffer a 44-byte
DELETE_RKEY_V2 declaring 255 rkeys reaches rkey[9..254] in whatever an
earlier message left in lgr->wr_rx_buf_v2, and passes each of them to
smc_rtoken_delete(). One of those 255 matched a registered rtoken and
deleted it. An ADD_LINK on such a link installs up to 255 rtokens from
the same bytes.
Copy the tail into the queue entry, so its length is the length of the
message that arrived, and declare the rkeys that fit inline as a member of
the union instead of reaching them through a cast. The same
DELETE_RKEY_V2 now processes the 9 rkeys it carries. The copy is limited
to the longest tail the two functions can read, so the peer does not pick
the size of the entry.
The bound the previous patch placed on links without a shared v2 receive
buffer is no longer needed.
📍 영향받는 시스템
Linux Kernel (net/smc 모듈을 사용하는 시스템)
⚔️ 공격 벡터
조작된 크기의 SMC-Rv2 LLC 메시지를 전송하여 공유 수신 버퍼 내의 잘못된 메모리 영역을 참조하도록 유도
🛡️ 대응 방법
SMC-Rv2 메시지 처리 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인