🔍 CVE-2021-47261

7.8
CVSS Score
HIGH
2024-05-21
2026-08-04 10:16
✅ 완료

🇰🇷 한글 설명

Linux 커널의 IB/mlx5 드라이버에서 CQ(Completion Queue) 조각 버퍼를 초기화할 때 잘못된 버퍼를 참조하는 취약점이 발견되었습니다. CQ 크기 확장 시 잘못된 버퍼를 초기화함으로써 현재 버퍼의 범위를 벗어난 메모리에 접근하게 되어 커널 패닉(Kernel Panic)을 유발할 수 있습니다.

💡 쉬운 설명

컴퓨터의 핵심 운영체제인 리눅스에서 데이터를 처리하는 통로의 크기를 늘릴 때, 엉뚱한 메모리 공간을 건드려 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: IB/mlx5: Fix initializing CQ fragments buffer The function init_cq_frag_buf() can be called to initialize the current CQ fragments buffer cq->buf, or the temporary cq->resize_buf that is filled during CQ resize operation. However, the offending commit started to use function get_cqe() for getting the CQEs, the issue with this change is that get_cqe() always returns CQEs from cq->buf, which leads us to initialize the wrong buffer, and in case of enlarging the CQ we try to access elements beyond the size of the current cq->buf and eventually hit a kernel panic. [exception RIP: init_cq_frag_buf+103] [ffff9f799ddcbcd8] mlx5_ib_resize_cq at ffffffffc0835d60 [mlx5_ib] [ffff9f799ddcbdb0] ib_resize_cq at ffffffffc05270df [ib_core] [ffff9f799ddcbdc0] llt_rdma_setup_qp at ffffffffc0a6a712 [llt] [ffff9f799ddcbe10] llt_rdma_cc_event_action at ffffffffc0a6b411 [llt] [ffff9f799ddcbe98] llt_rdma_client_conn_thread at ffffffffc0a6bb75 [llt] [ffff9f799ddcbec8] kthread at ffffffffa66c5da1 [ffff9f799ddcbf50] ret_from_fork_nospec_begin at ffffffffa6d95ddd Fix it by getting the needed CQE by calling mlx5_frag_buf_get_wqe() that takes the correct source buffer as a parameter.

📍 영향받는 시스템

Linux kernel (mlx5_ib driver components)

⚔️ 공격 벡터

로컬 공격자가 RDMA 관련 CQ 크기 조정 작업을 유도하여 커널 패닉(DoS)을 발생시킴

🛡️ 대응 방법

mlx5_frag_buf_get_wqe() 함수를 사용하여 올바른 소스 버퍼를 참조하도록 커널 패치를 적용하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel