🇰🇷 한글 설명
Linux 커널의 qlcnic 네트워크 드라이버에서 펌웨어 ROM 섹션을 검증할 때 정수 오버플로 및 경계 검사 미흡으로 인해 발생하는 취약점입니다. 악의적으로 조작된 펌웨어 파일을 로드할 경우 드라이버가 할당된 메모리 범위를 벗어나 데이터를 읽는 메모리 손상 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 장치를 작동시키는 소프트웨어(펌웨어)를 읽어올 때, 잘못된 숫자를 사용하여 컴퓨터의 허용된 영역 밖을 읽어버리는 보안 결함입니다. 해커가 조작된 파일을 보내면 시스템의 중요한 정보를 훔쳐보거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: qlcnic: validate unified ROM sections before loading
The unified ROM parser reads directory, product, and data-descriptor fields
from the firmware file. Existing validation forms table and data ends with
unchecked additions and multiplications. Malformed values can wrap before
they are compared with the firmware size. The parser also dereferences
typed pointers at firmware-controlled offsets.
Valid descriptor extents alone are insufficient for the consumers. The
loader reads a fixed-size bootloader regardless of its declared size, the
version parser assumes a 17-byte tail, and a partial final firmware word is
read as a full u64. A truncated image can therefore make the driver read
beyond the firmware allocation during validation or loading.
Replace the pointer-returning parser with bounded range helpers. Validate
table entry sizes, descriptor indices, section ranges, the fixed
bootloader load length, and the version tail before exposing any section.
Read all file fields with unaligned little-endian accessors and assemble a
partial final word from only the bytes that remain. Apply the same range
checks to the legacy image before reading its fixed fields.
📍 영향받는 시스템
Linux kernel (qlcnic driver 포함 버전)
⚔️ 공격 벡터
조작된 펌웨어 파일을 네트워크 드라이버를 통해 로드하도록 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인