🇰🇷 한글 설명
Linux 커널의 qla2xxx 드라이버에서 purex 아이템을 부적절하게 해제하여 발생하는 메모리 손상 취약점입니다. qla2xxx_process_purls_iocb 함수 내의 오류 처리 경로에서 동적 할당되지 않은 풀(pool) 메모리에 kfree()를 호출함으로써 문제가 발생합니다.
💡 쉬운 설명
컴퓨터 메모리를 빌려 쓰고 돌려줄 때, 빌린 방식과 다른 방법으로 돌려주려다 시스템이 고장 나는 문제입니다. 이 과정에서 메모리가 엉망이 되어 시스템이 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Fix improper freeing of purex item
In qla2xxx_process_purls_iocb(), an item is allocated via
qla27xx_copy_multiple_pkt(), which internally calls
qla24xx_alloc_purex_item().
The qla24xx_alloc_purex_item() function may return a pre-allocated item
from a per-adapter pool for small allocations, instead of dynamically
allocating memory with kzalloc().
An error handling path in qla2xxx_process_purls_iocb() incorrectly uses
kfree() to release the item. If the item was from the pre-allocated
pool, calling kfree() on it is a bug that can lead to memory corruption.
Fix this by using the correct deallocation function,
qla24xx_free_purex_item(), which properly handles both dynamically
allocated and pre-allocated items.
📍 영향받는 시스템
qla2xxx 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특정 SCSI 명령(PURL)을 처리하는 과정에서 오류를 유도하여 메모리 손상을 일으킴
🛡️ 대응 방법
커널을 최신 보안 패치가 적용된 버전으로 업데이트하거나 qla24xx_free_purex_item()이 적용된 패치를 적용함
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인