🇰🇷 한글 설명
Linux 커널의 pm8001 SCSI 드라이버에서 SAS/STP 작업이 중단될 때 Use-After-Free 취약점이 발생합니다. I/O 완료 처리 과정에서 상위 계층이 작업을 먼저 해제한 후 드라이버가 해당 메모리에 다시 접근함으로써 문제가 발생하며, 이를 해결하기 위해 함수 호출 순서를 변경했습니다.
💡 쉬운 설명
컴퓨터가 이미 사용이 끝나서 지워버린 메모리 공간을 다시 사용하려고 시도할 때 발생하는 오류입니다. 이로 인해 시스템이 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task
Currently a use-after-free may occur if a sas_task is aborted by the upper
layer before we handle the I/O completion in mpi_ssp_completion() or
mpi_sata_completion().
In this case, the following are the two steps in handling those I/O
completions:
- Call complete() to inform the upper layer handler of completion of
the I/O.
- Release driver resources associated with the sas_task in
pm8001_ccb_task_free() call.
When complete() is called, the upper layer may free the sas_task. As such,
we should not touch the associated sas_task afterwards, but we do so in the
pm8001_ccb_task_free() call.
Fix by swapping the complete() and pm8001_ccb_task_free() calls ordering.
📍 영향받는 시스템
Linux kernel (pm8001 SCSI driver 사용 시스템)
⚔️ 공격 벡터
특정 SCSI I/O 작업의 중단 및 완료 과정을 정교하게 조작하여 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인