[하루한줄]VoIPmonitor BoF to RCE
URL
VoIPmonitor is vulnerable to a buffer overflow when using the live sniffer
Target
VoIPmonitor 27.6
Explain
오픈소스 network packet sniffer인 VoIPmonitor에서 RCE취약점이 발견되었습니다.
char callidstr[1024] = "";
if(packetS->sipDataLen) {
void *memptr = memmem(packetS->data_()+ packetS->sipDataOffset,
packetS->sipDataLen, "\r\n", 2);
if(memptr) {
memcpy(description, packetS->data_()+ packetS->sipDataOffset,
(char *)memptr - (char*)(packetS->data_()+ packetS->sipDataOffset));
description[(char*)memptr - (char*)(packetS->data_()+
packetS->sipDataOffset)] = '\0';
printf("%s\n", description);
}
// ...
}
위는 함수 save_packet_sqp
의 코드입니다. 변수 description
은 1024 bytes 크기로 고정되어 있는 SIP request 값을 저장하는 배열입니다. description
의 크기보다 큰 request를 보내 버퍼오버플로우가 가능합니다. Stack canary, RELRO 등 표준 memory corruption 보호 기법이 없으므로 버퍼오버플로우를 통한 원격코드 실행이 가능합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.