FastNetMon Community Edition 1.2.9부터 BGP NLRI(네트워크 계층 연결 정보) 디코더에 스택 기반 버퍼 오버플로가 포함되어 있습니다. src/bgp_protocol.cpp의 decode_bgp_subnet_encoding_ipv4_raw() 함수는 IPv4 접두사의 경우 <= 32인지 확인하지 않고 BGP 패킷(라인 99)에서 직접 prefix_bit_length를 읽습니다. 이 값은 ceil(prefix_bit_length / 8)을 계산하는 How_much_bytes_we_need_for_storing_certain_subnet_mask()에 전달되어 prefix_b에 대해 최대 32바이트를 반환합니다.
FastNetMon Community Edition 1.2.9부터 BGP NLRI(네트워크 계층 연결 정보) 디코더에 스택 기반 버퍼 오버플로가 포함되어 있습니다. src/bgp_protocol.cpp의 decode_bgp_subnet_encoding_ipv4_raw() 함수는 IPv4 접두사의 경우 <= 32인지 확인하지 않고 BGP 패킷(라인 99)에서 직접 prefix_bit_length를 읽습니다. 이 값은 ceil(prefix_bit_length / 8)을 계산하는 How_much_bytes_we_need_for_storing_certain_subnet_mask()에 전달되어 prefix_bit_length가 255인 경우 최대 32바이트를 반환합니다. 결과는 memcpy()(라인 106)에 대한 길이 인수로 사용되며 4바이트 uint32_t 스택 변수에 복사됩니다. (prefix_ipv4). 이로 인해 최대 28바이트의 스택 버퍼 오버플로가 발생하며 이는 임의 코드 실행에 악용될 수 있습니다. 또한 확인되지 않은 prefix_bit_length가 Convert_cidr_to_binary_netmask_local_function_copy()(111행)에 전달됩니다. 여기서 cidr > 32로 (32 - cidr)을 이동하면 정의되지 않은 동작이 발생합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준