🇰🇷 한글 설명
Linux 커널의 scsi: pm80xx 드라이버에서 모듈 제거(rmmod) 시 배열 인덱스 범위를 벗어나는 취약점이 발견되었습니다. 익스팬더(Expander)를 사용하는 환경에서 장치의 phy ID가 로컬 범위를 초과하여 잘못된 메모리 위치에 접근할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 연결하는 드라이버가 장치를 제거할 때, 잘못된 번호를 참조하여 시스템 메모리의 엉뚱한 곳을 건드리는 문제입니다. 이로 인해 시스템이 불안정해지거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod
Since commit f7b705c238d1 ("scsi: pm80xx: Set phy_attached to zero when
device is gone") UBSAN reports:
UBSAN: array-index-out-of-bounds in drivers/scsi/pm8001/pm8001_sas.c:786:17
index 28 is out of range for type 'pm8001_phy [16]'
on rmmod when using an expander.
For a direct attached device, attached_phy contains the local phy id.
For a device behind an expander, attached_phy contains the remote phy
id, not the local phy id.
I.e. while pm8001_ha will have pm8001_ha->chip->n_phy local phys, for a
device behind an expander, attached_phy can be much larger than
pm8001_ha->chip->n_phy (depending on the amount of phys of the
expander).
E.g. on my system pm8001_ha has 8 phys with phy ids 0-7. One of the
ports has an expander connected. The expander has 31 phys with phy ids
0-30.
The pm8001_ha->phy array only contains the phys of the HBA. It does not
contain the phys of the expander. Thus, it is wrong to use attached_phy
to index the pm8001_ha->phy array for a device behind an expander.
Thus, we can only clear phy_attached for devices that are directly
attached.
📍 영향받는 시스템
Linux kernel (scsi: pm80xx driver using expander)
⚔️ 공격 벡터
로컬 시스템에서 특정 SCSI 장치 모듈을 제거(rmmod)하는 동작을 통해 유발 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 커널 패치 버전 이후인지 확인하십시오.