Zephyr의 WireGuard 하위 시스템(subsys/net/lib/wireguard)에서 wg_crypto.c의 wg_process_data_message()는 인바운드 전송 데이터 페이로드를 암호 해독 전에 CONFIG_WIREGUARD_BUF_LEN 바이트의 고정 풀 버퍼로 선형화합니다. net_buf_linearize(buf->data, data_len, pkt->buffer, ..., data_len) 호출은 공격자가 파생한 data_len을 대상 용량과 복사본 길이로 전달하여 함수의 내부 len = min(len, dst_len) 경계를 무효화했습니다. data_len은 수신된 UDP da에서 파생됩니다.
Zephyr의 WireGuard 하위 시스템(subsys/net/lib/wireguard)에서 wg_crypto.c의 wg_process_data_message()는 인바운드 전송 데이터 페이로드를 암호 해독 전에 CONFIG_WIREGUARD_BUF_LEN 바이트의 고정 풀 버퍼로 선형화합니다. net_buf_linearize(buf->data, data_len, pkt->buffer, ..., data_len) 호출은 공격자가 파생한 data_len을 대상 용량과 복사본 길이로 전달하여 함수의 내부 len = min(len, dst_len) 경계를 무효화했습니다. data_len은 수신된 UDP 데이터그램 길이에서 파생되며 wg_ctrl_recv()에 의해 하한만 지정됩니다(상한은 없음). data_len이 CONFIG_WIREGUARD_BUF_LEN을 초과하는 경우 — 예: 버퍼 길이가 링크 MTU 아래로 줄어들거나, MTU가 버퍼 크기보다 큰 링크에서 또는 이를 초과하는 재조립된 IPv4/IPv6 조각을 통해 — 기본 memcpy는 풀 버퍼의 끝을 지나서 쓰기, 즉 범위를 벗어난 쓰기(CWE-787)를 수행합니다. 오버플로는 Poly1305 인증 확인 전에 발생하므로 유효한 인증자가 아닌 유효한 수신자 세션 인덱스만 필요하며 네트워크를 통해 악의적이거나 손상된 피어(또는 설정된 세션을 구동하는 경로상의 공격자)가 도달할 수 있어 원격 메모리 손상이 발생하고 최소한 안정적인 서비스 거부가 발생합니다. Zephyr 4.4.0에 제공된 WireGuard 구현에 결함이 있었습니다. 수정 사항은 명시적인 data_len > CONFIG_WIREGUARD_BUF_LEN 거부를 추가하고 net_buf_max_len(buf)를 대상 용량으로 전달하는 선형화 호출을 수정합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 74.00 |
| 악용 신호(PoC 존재) | ×1.20 |
| VPI | 88.80 |
VPI 공식 vpi-v1 기준