🇰🇷 한글 설명
Linux 커널의 CIPSO 옵션 제거 함수(cipso_v4_skbuff_delattr)가 CIPSO 바이트를 지운 뒤 뒤따르는 IP 옵션(SRR, RR, TS, Router Alert)의 캐시된 오프셋을 갱신하지 않는 문제입니다. 이로 인해 잘못된 바이트를 참조하게 되어 메모리 손상이 발생할 수 있습니다.
💡 쉬운 설명
패킷에서 특정 보안 옵션을 지울 때 뒤에 있는 다른 옵션들의 위치 정보가 갱신되지 않습니다. 그래서 커널이 엉뚱한 데이터를 옵션으로 읽어 잘못 복사할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cipso: adjust cached option offsets when removing CIPSO
cipso_v4_skbuff_delattr() removes the CIPSO bytes but does not adjust
cached offsets for options that follow them.
For example, with a valid 10-byte CIPSO option followed by a seven-byte
RR option, parsing records rr at offset 30. Removing CIPSO moves RR to
offset 20, while the cached offset remains 30. Consumers such as
ip_forward_options() and __ip_options_echo() then access the wrong bytes;
the latter may interpret packet data as the option length and copy it into
fixed-size option storage.
Mirror cipso_v4_delopt() and subtract cipso_len from the srr, rr, ts and
router_alert offsets when they follow CIPSO. cipso_len is the distance
the first memmove() shifts those options. The later header move and
network-header reset relocate the bytes and their offset base together.
📍 영향받는 시스템
CIPSO 옵션 처리를 포함하는 Linux 커널 (수정 커밋 이전 버전, 정확한 영향 범위는 커널 배포판 패치 정보 확인 필요)
⚔️ 공격 벡터
CIPSO 옵션과 RR 등 후속 IP 옵션이 포함된 조작된 IP 패킷을 전송하여 커널이 잘못된 바이트를 옵션 길이로 해석하게 만듭니다.
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 Linux 커널 보안 업데이트를 적용하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 해당 CVE 패치가 포함된 버전과 비교하여, 같거나 높은 패치 버전이면 조치된 것으로 판단합니다.