🇰🇷 한글 설명
Linux 커널의 can: softing 드라이버 내 fw_parse() 함수에서 펌웨어 레코드의 범위를 적절히 검증하지 않아 발생하는 취약점입니다. 잘린 레코드를 처리할 때 펌웨어 블록의 경계를 초과하여 읽거나, DPRAM 쓰기 시 경계 검사 미흡으로 인해 메모리 오염이 발생할 수 있습니다.
💡 쉬운 설명
펌웨어 파일의 끝부분을 제대로 확인하지 않아, 잘못된 데이터가 들어왔을 때 시스템의 허용된 메모리 범위를 벗어나 데이터를 읽거나 쓸 수 있는 문제입니다. 이를 통해 공격자가 시스템의 중요한 메모리 영역을 조작할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: softing: fw_parse(): validate firmware record spans
fw_parse() reads a fixed record header, a firmware-provided payload,
and a trailing checksum without knowing the end of the firmware blob. A
truncated record can therefore make those reads exceed the blob.
The same record also supplies addresses and lengths for writes into
DPRAM. The generic loader uses wrap-prone mixed signed arithmetic for its
bounds check, while the application loader does not bound the staging
copy at all.
Pass the firmware end to the parser and validate the full source record.
Use a signed wide offset for generic DPRAM records and validate the
application staging span against the mapped DPRAM before copying.
📍 영향받는 시스템
Linux kernel (can: softing driver 포함 버전)
⚔️ 공격 벡터
조작되거나 잘린(truncated) 펌웨어 파일을 로드하여 메모리 경계 초과 읽기/쓰기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 fw_parse()의 경계 검증 로직을 적용해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.