🇰🇷 한글 설명
Linux 커널의 scsi: lpfc 드라이버에서 엔디언 처리 오류로 인해 발생하는 취약점입니다. 빅 엔디언 아키텍처에서 FCP 타겟이 구역화(zoned)될 경우, 잘못된 메모리 참조로 인해 메모리 범위 외 포인터 역참조가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 데이터를 읽는 방식(엔디언)이 서로 맞지 않아 발생하는 오류입니다. 이로 인해 특정 시스템에서 데이터 처리 중 메모리 오류가 발생하여 시스템이 갑자기 멈추거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: lpfc: Revise lpfc_prep_embed_io routine with proper endian macro usages
On big endian architectures, it is possible to run into a memory out of
bounds pointer dereference when FCP targets are zoned.
In lpfc_prep_embed_io, the memcpy(ptr, fcp_cmnd, sgl->sge_len) is
referencing a little endian formatted sgl->sge_len value. So, the memcpy
can cause big endian systems to crash.
Redefine the *sgl ptr as a struct sli4_sge_le to make it clear that we are
referring to a little endian formatted data structure. And, update the
routine with proper le32_to_cpu macro usages.
📍 영향받는 시스템
Big Endian 아키텍처를 사용하는 Linux 커널 (lpfc 드라이버 사용 환경)
⚔️ 공격 벡터
특정 조건(FCP 타겟 구역화)이 설정된 환경에서 잘못된 엔디언 값을 가진 데이터 구조를 처리할 때 발생
🛡️ 대응 방법
lpfc_prep_embed_io 루틴에 le32_to_cpu 매크로가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
커널 버전과 lpfc 모듈 정보를 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.
uname -a && modinfo lpfc 2>/dev/null