🇰🇷 한글 설명
Linux 커널의 mlx5e 드라이버 내 kTLS 처리 과정에서 페이지 참조 횟수(refcounting)를 잘못 계산하는 취약점이 발견되었습니다. 대형 폴리오(large folios)를 사용하는 환경에서 get_page()와 page_ref_inc() API가 혼용되어 사용됨에 따라, 메모리 해제 시 참조 횟수가 과도하게 감소하여 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
메모리를 관리하는 규칙이 일관되지 않아, 컴퓨터가 사용 중인 메모리를 너무 빨리 해제해 버리는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 예상치 못한 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/mlx5e: kTLS, Fix incorrect page refcounting
The kTLS tx handling code is using a mix of get_page() and
page_ref_inc() APIs to increment the page reference. But on the release
path (mlx5e_ktls_tx_handle_resync_dump_comp()), only put_page() is used.
This is an issue when using pages from large folios: the get_page()
references are stored on the folio page while the page_ref_inc()
references are stored directly in the given page. On release the folio
page will be dereferenced too many times.
This was found while doing kTLS testing with sendfile() + ZC when the
served file was read from NFS on a kernel with NFS large folios support
(commit 49b29a573da8 ("nfs: add support for large folios")).
📍 영향받는 시스템
NFS large folios 지원 기능이 활성화된 커널을 사용하는 Linux 시스템 (mlx5e 드라이버 사용 환경)
⚔️ 공격 벡터
로컬 공격자가 kTLS와 sendfile()을 결합하여 특정 메모리 관리 경로를 트리거함으로써 시스템 불안정 유도
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인