🇰🇷 한글 설명
리눅스 커널의 block 계층에서 blktrace 디버그파일시스템 항목이 정리되지 않는 문제가 해결되었습니다. 커밋 99d055b4fd4b 이후 del_gendisk() 이후에도 ioctl로 blktrace를 활성화할 수 있어, 디스크를 닫을 때 shutdown이 이루어지지 않으면 debugfs 항목이 누수될 수 있었습니다. 수정은 disk_release()에서 blktrace를 종료하도록 변경한 것입니다.
💡 쉬운 설명
디스크를 분리한 뒤에도 디스크 추적 기능이 남아 임시 정보가 정리되지 않고 쌓이는 문제였습니다. 이번 수정으로 디스크가 해제될 때 추적 기능도 함께 정리되도록 바뀌었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
block: fix blktrace debugfs entries leakage
Commit 99d055b4fd4b ("block: remove per-disk debugfs files in
blk_unregister_queue") moves blk_trace_shutdown() from
blk_release_queue() to blk_unregister_queue(), this is safe if blktrace
is created through sysfs, however, there is a regression in corner
case.
blktrace can still be enabled after del_gendisk() through ioctl if
the disk is opened before del_gendisk(), and if blktrace is not shutdown
through ioctl before closing the disk, debugfs entries will be leaked.
Fix this problem by shutdown blktrace in disk_release(), this is safe
because blk_trace_remove() is reentrant.
📍 영향받는 시스템
block 계층의 blktrace 기능을 사용하는 Linux 커널 (수정 커밋 이전 버전, 정확한 영향 범위는 배포판 커널 버전 확인 필요)
⚔️ 공격 벡터
디스크를 열어 둔 상태에서 del_gendisk() 이후 ioctl로 blktrace를 활성화하는 로컬 사용자 조작으로 debugfs 항목이 누수되며, 주로 자원 누수 및 서비스 안정성 영향이 있습니다.
🛡️ 대응 방법
패키지 업데이트로 커널을 최신 보안 수정 버전으로 갱신하고 재부팅하세요.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 upstream 수정 커밋 포함 여부와 비교하여, 수정된 버전 이상이면 패치가 적용된 것으로 판단합니다.