🇰🇷 한글 설명
Linux 커널의 RDMA/bnxt_re 드라이버에서 udata 검증 과정의 결함으로 인해 발생합니다. 드라이버 리소스가 해제된 후에도 udata 접근 실패 시 콜백이 재실행되어 이미 해제된 리소스에 접근할 수 있는 취약점이 존재합니다.
💡 쉬운 설명
컴퓨터의 메모리 관리 과정에서 이미 삭제된 정보를 다시 사용하려고 시도할 때 발생하는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/bnxt_re: Validate udata before executing commands
The destroy callbacks currently zero the udata output after tearing down
driver resources. If the userspace access fails, uverbs preserves the
uobject and allows the destroy callback to run again, even though the
driver resource has already been freed.
Call ib_no_udata_io() before teardown so udata failures are detected
while the resource is still intact, then return success after teardown
completes.
As part of this change, move ib_respond_empty_udata() to the start of
the create and modify flows. While this is not strictly required for
general create flows, as the core layer unwinds uobjects on failure, it
is necessary for create AH. In _rdma_create_ah(), the HW object is
otherwise leaked.
📍 영향받는 시스템
RDMA/bnxt_re 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
사용자 공간(Userspace)에서 특정 RDMA 명령을 조작하여 드라이버 리소스 해제 후 잘못된 메모리 접근 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인