🇰🇷 한글 설명
리눅스 커널의 BLKSECDISCARD ioctl 처리 과정에서 정수 오버플로 취약점이 발견되었습니다. 공격자가 조작된 값을 전달할 경우 blkdev_issue_secure_erase() 함수 내에서 무한 루프가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 데이터를 안전하게 지우는 명령을 내릴 때, 숫자가 너무 커서 계산 오류가 발생하는 문제입니다. 이 오류를 이용하면 컴퓨터가 멈추거나 무한 루프에 빠질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
block: fix integer overflow in BLKSECDISCARD
I independently rediscovered
commit 22d24a544b0d49bbcbd61c8c0eaf77d3c9297155
block: fix overflow in blk_ioctl_discard()
but for secure erase.
Same problem:
uint64_t r[2] = {512, 18446744073709551104ULL};
ioctl(fd, BLKSECDISCARD, r);
will enter near infinite loop inside blkdev_issue_secure_erase():
a.out: attempt to access beyond end of device
loop0: rw=5, sector=3399043073, nr_sectors = 1024 limit=2048
bio_check_eod: 3286214 callbacks suppressed
📍 영향받는 시스템
정수 오버플로가 수정되지 않은 이전 버전의 리눅스 커널 (block layer 관련)
⚔️ 공격 벡터
로컬 사용자가 조작된 매개변수를 포함한 BLKSECDISCARD ioctl 시스템 호출을 실행
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인