Perl용 2.041 이전 소켓 버전에는 범위를 벗어난 힙 읽기가 있습니다. Socket.xs에서 pack_ip_mreq_source()는 인수를 읽기 전에 소스 인수의 길이를 확인하므로 대신 이전 multiaddr 인수에서 전달된 바이트 길이를 테스트합니다. 두 주소 모두 4바이트 필드를 차지하므로 유효한 다중 주소를 사용하면 모든 길이의 소스가 검사를 통과할 수 있으며 소스는 고정 크기 복사본과 함께 4바이트 imr_sourceaddr 필드에 복사됩니다. 4바이트보다 짧은 소스는
Perl용 2.041 이전 소켓 버전에는 범위를 벗어난 힙 읽기가 있습니다.
Socket.xs에서 pack_ip_mreq_source()는 인수를 읽기 전에 소스 인수의 길이를 확인하므로 대신 이전 multiaddr 인수에서 전달된 바이트 길이를 테스트합니다. 두 주소 모두 4바이트 필드를 차지하므로 유효한 다중 주소를 사용하면 모든 길이의 소스가 검사를 통과할 수 있으며 소스는 고정 크기 복사본과 함께 4바이트 imr_sourceaddr 필드에 복사됩니다. 4바이트보다 짧은 소스는 거부되지 않으며 복사본은 버퍼 끝에서 최대 3바이트까지 읽습니다.
4바이트보다 짧은 소스 값으로 pack_ip_mreq_source()를 호출하면 인접한 힙 메모리가 반환된 압축 구조로 복사됩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 91.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 91.00 |
VPI 공식 vpi-v1 기준