🇰🇷 한글 설명
Linux 커널의 blk-mq 구성 요소에서 하드웨어 큐의 수를 줄일 때 태그(tags)가 제대로 해제되지 않는 메모리 누수 취약점이 발견되었습니다. 이로 인해 특정 조건에서 사용되지 않는 태그가 메모리에 남아 시스템 자원이 점진적으로 고갈될 수 있습니다.
💡 쉬운 설명
컴퓨터가 일을 처리하기 위해 사용하는 '번호표'를 다 쓰고 나서 돌려줘야 하는데, 일부 번호표를 돌려주지 않고 계속 가지고 있는 버그입니다. 이 현상이 반복되면 컴퓨터의 메모리가 부족해져 시스템 성능이 떨어지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
blk-mq: fix tags leak when shrink nr_hw_queues
Although we don't need to realloc set->tags[] when shrink nr_hw_queues,
we need to free them. Or these tags will be leaked.
How to reproduce:
1. mount -t configfs configfs /mnt
2. modprobe null_blk nr_devices=0 submit_queues=8
3. mkdir /mnt/nullb/nullb0
4. echo 1 > /mnt/nullb/nullb0/power
5. echo 4 > /mnt/nullb/nullb0/submit_queues
6. rmdir /mnt/nullb/nullb0
In step 4, will alloc 9 tags (8 submit queues and 1 poll queue), then
in step 5, new_nr_hw_queues = 5 (4 submit queues and 1 poll queue).
At last in step 6, only these 5 tags are freed, the other 4 tags leaked.
📍 영향받는 시스템
Linux kernel (blk-mq 및 null_blk 모듈 사용 환경)
⚔️ 공격 벡터
로컬 사용자가 null_blk 장치를 생성하고 하드웨어 큐의 수를 변경하는 과정을 반복하여 메모리 자원을 고갈시키는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 blk-mq 태그 누수 수정 사항을 반영해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.