🇰🇷 한글 설명
Linux 커널의 SCSI 코어에서 scsi_schedule_eh 함수를 사용할 때 에러 핸들러 스레드가 깨어나지 않을 수 있는 취약점이 발견되었습니다. 호스트의 에러 복구 상태 설정과 명령 처리 상태 확인 사이에 메모리 순서가 보장되지 않아 발생하는 레이스 컨디션 문제입니다. 이를 해결하기 위해 RCU를 사용하여 에러 상태가 전역적으로 가시화된 후 상태 확인이 이루어지도록 수정되었습니다.
💡 쉬운 설명
컴퓨터의 저장 장치(SCSI)에 오류가 발생했을 때, 이를 고치기 위한 복구 프로그램이 제대로 작동하지 않고 멈춰버릴 수 있는 문제입니다. 이로 인해 시스템이 오류를 스스로 해결하지 못하고 먹통이 될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: core: wake eh reliably when using scsi_schedule_eh
Drivers which use the scsi_schedule_eh function to run the error handler
currently risk the error handler thread never waking once all commands are
timed out or inactive. There is no enforced memory order between setting
the host into error recovery state and counting busy commands. This can
result in a race with scsi_dec_host_busy where neither CPU sees both
conditions of all commands inactive and the host error state to request
waking the error handler.
To fix this, run the scsi_schedule_eh's scsi_eh_wakeup from a new work item
which will use rcu to ensure scsi_schedule_eh's call to scsi_host_busy will
occur after the error state is globally visible and will be seen by any
current scsi_dec_host_busy callers.
📍 영향받는 시스템
scsi_schedule_eh 함수를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
직접적인 공격보다는 특정 하드웨어 오류 상황에서 시스템이 응답하지 않는 서비스 거부(DoS) 상태를 유발할 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 릴리스 버전인지 확인