🇰🇷 한글 설명
Linux 커널의 RDMA/core 구성 요소에서 메모리 할당 실패 시 mkey가 누수되는 취약점이 발견되었습니다. 고정된 핸들을 처리하는 과정에서 새로운 페이지 할당에 실패할 경우 오류 처리가 제대로 이루어지지 않아 자원 누수가 발생할 수 있었습니다. 이를 해결하기 위해 추가적인 메모리 할당 없이 페이지를 이동시키는 새로운 함수를 도입하여 문제를 수정했습니다.
💡 쉬운 설명
컴퓨터의 데이터 전송 통로(RDMA)에서 오래된 데이터를 정리할 때, 메모리가 부족하면 정리해야 할 데이터 정보가 사라져 버리는 문제가 있었습니다. 이로 인해 시스템의 메모리가 조금씩 낭비될 수 있었으나, 메모리 부족 상황에서도 안전하게 데이터를 옮길 수 있도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/core: Fix FRMR aging push to queue error flow
Aging pools with pinned handles requires moving handles from the
active queue to a non-empty inactive queue that might fail on new page
allocation, we are currently not handling the fault and leaking any mkey
that fails the push.
Fix by Introducing push_queue_to_queue_locked() that fills the
destination's partial tail page from the source and then splices the
remaining source pages onto the destination, performing no allocation.
Replace the per-handle move loop in age_pinned_pool() and the
open-coded splice in pool_aging_work() with calls to the helper.
As the helper cannot fail under memory pressure, removing a class of
GFP_ATOMIC allocations under the pool lock and simplifying the error
flow.
📍 영향받는 시스템
Linux Kernel (RDMA/core 구성 요소가 포함된 버전)
⚔️ 공격 벡터
직접적인 공격보다는 시스템 메모리 압박 상황에서 자원 누수를 유발하여 시스템 성능 저하를 일으킬 수 있음
🛡️ 대응 방법
RDMA 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이상인지 확인