LIVE555 Media Server是一款RTSP服务器程序,可提供各种媒体文件流服务。 LIVE555媒体服务器在处理畸形的请求数据时存在漏洞,远程攻击者可能利用此漏洞导致服务器不可用。 LIVE555媒体服务器的parseRTSPRequestString()函数没有检查客户端数据的数量(reqStrSize)是否大于或等于8字节。因为该函数使用了无符数字,因此7 - 8不是-1而是4294967295,这就导致到达了分配内存的末尾而出现崩溃。以下是liveMedia/RTSPCommon文件中有漏洞的代码: Boolean parseRTSPRequestString(char const* reqStr, unsigned reqStrSize, ... unsigned i; for (i = 0; i < resultCmdNameMaxSize-1 && i < reqStrSize; ++i) { ... // Skip over the prefix of any "rtsp://" or "rtsp:/" URL that follows: unsigned j = i+1; while (j < reqStrSize && (reqStr[j] == ' ' || reqStr[j] == '\t')) ++j; for (j = i+1; j < reqStrSize-8; ++j) { ...
LIVE555 Media Server是一款RTSP服务器程序,可提供各种媒体文件流服务。 LIVE555媒体服务器在处理畸形的请求数据时存在漏洞,远程攻击者可能利用此漏洞导致服务器不可用。 LIVE555媒体服务器的parseRTSPRequestString()函数没有检查客户端数据的数量(reqStrSize)是否大于或等于8字节。因为该函数使用了无符数字,因此7 - 8不是-1而是4294967295,这就导致到达了分配内存的末尾而出现崩溃。以下是liveMedia/RTSPCommon文件中有漏洞的代码: Boolean parseRTSPRequestString(char const* reqStr, unsigned reqStrSize, ... unsigned i; for (i = 0; i < resultCmdNameMaxSize-1 && i < reqStrSize; ++i) { ... // Skip over the prefix of any "rtsp://" or "rtsp:/" URL that follows: unsigned j = i+1; while (j < reqStrSize && (reqStr[j] == ' ' || reqStr[j] == '\t')) ++j; for (j = i+1; j < reqStrSize-8; ++j) { ...