🇰🇷 한글 설명
리눅스 커널의 microchip-spi FPGA 드라이버에서 mpf_ops_parse_header() 함수가 비트스트림의 header_size 값을 읽을 때 발생하는 취약점입니다. header_size가 0인 경우, 잘못된 인덱스 계산으로 인해 버퍼 시작 지점 이전의 메모리를 읽는 Out-of-Bounds(OOB) Read 오류가 발생합니다.
💡 쉬운 설명
FPGA 장치를 설정하는 과정에서 데이터 크기가 0으로 잘못 입력되면, 컴퓨터가 허용되지 않은 메모리 영역을 읽으려 시도하여 오류가 발생할 수 있습니다. 이는 시스템의 안정성을 해치거나 잘못된 정보를 읽어올 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fpga: microchip-spi: fix zero header_size OOB read in mpf_ops_parse_header()
mpf_ops_parse_header() reads header_size from the bitstream at
MPF_HEADER_SIZE_OFFSET (24). When header_size is zero, the expression
*(buf + header_size - 1) reads one byte before the buffer start.
Since initial_header_size is set to 71 in mpf_ops, the fpga-mgr core
guarantees the buffer is large enough to reach MPF_HEADER_SIZE_OFFSET.
The only real gap is the zero header_size case, which cannot be
resolved by providing a larger buffer, so return -EINVAL.
📍 영향받는 시스템
Linux kernel (microchip-spi FPGA driver 포함 버전)
⚔️ 공격 벡터
조작된 비트스트림 파일을 FPGA 드라이버를 통해 로드하여 메모리 경계 외 읽기 유도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 header_size가 0일 경우 오류를 반환하도록 수정
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인