🇰🇷 한글 설명
Linux 커널의 qla2xxx SCSI 드라이버에서 qla2x00_probe_one() 함수의 오류 처리 경로(probe_failed)에 메모리 누수가 존재합니다. 어댑터 base_vha 초기화가 실패할 때 qla2x00_create_host()에서 할당된 fab_scan_rp의 scan.l 메모리가 해제되지 않습니다. 이 문제는 커널 수정으로 scan.l 메모리를 해제하여 해결되었습니다.
💡 쉬운 설명
Fibre Channel 저장장치 드라이버가 사용을 마친 메모리를 정리하지 않고 실패 시 그대로 남겨두는 결함입니다. 시간이 지나면 시스템의 사용 가능한 메모리가 점차 줄어들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Fix memory leak in qla2x00_probe_one()
There is a memory leak reported by kmemleak:
unreferenced object 0xffffc900003f0000 (size 12288):
comm "modprobe", pid 19117, jiffies 4299751452 (age 42490.264s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000629261a8>] __vmalloc_node_range+0xe56/0x1110
[<0000000001906886>] __vmalloc_node+0xbd/0x150
[<000000005bb4dc34>] vmalloc+0x25/0x30
[<00000000a2dc1194>] qla2x00_create_host+0x7a0/0xe30 [qla2xxx]
[<0000000062b14b47>] qla2x00_probe_one+0x2eb8/0xd160 [qla2xxx]
[<00000000641ccc04>] local_pci_probe+0xeb/0x1a0
The root cause is traced to an error-handling path in qla2x00_probe_one()
when the adapter "base_vha" initialize failed. The fab_scan_rp "scan.l" is
used to record the port information and it is allocated in
qla2x00_create_host(). However, it is not released in the error handling
path "probe_failed".
Fix this by freeing the memory of "scan.l" when an error occurs in the
adapter initialization process.
📍 영향받는 시스템
Linux 커널의 qla2xxx(QLogic Fibre Channel HBA) 드라이버를 사용하는 시스템 (수정 이전 커널 버전)
⚔️ 공격 벡터
원격 공격 경로는 명확하지 않으며, 어댑터 초기화 실패 상황에서 발생하는 로컬 메모리 누수로 자원 고갈을 유발할 수 있습니다.
🛡️ 대응 방법
Linux 커널을 해당 수정이 포함된 최신 안정 버전 또는 배포판의 보안 업데이트로 업그레이드하십시오.
🔧 검증 코드
출력된 커널 버전이 수정이 포함된 버전 이상인지 배포판 공지와 대조하고, qla2xxx 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && lsmod | grep qla2xxx