RealPlayer是一款非常流行的媒体播放器,支持多种格式;HelixPlayer是其开源版本。 RealPlayer/HelixPlayer播放器的墙壁时钟在处理日期格式时存在缓冲区漏洞,远程攻击者可能利用此漏洞控制用户机器。 墙壁时钟(wallclock)功能没有正确地处理HH:mm:ss.f时间格式: 924 HX_RESULT 925 SmilTimeValue::parseWallClockValue(REF(const char*) pCh) 926 { ... 957 char buf[10]; /* Flawfinder: ignore */ ... 962 while (*pCh) 963 { ... 972 else if (isspace(*pCh) || *pCh == '+' || *pCh == '-' || *pCh == 'Z') 973 { 974 // this will find the last +, - or Z... which is what we want. 975 pTimeZone = pCh; 976 } ... 982 ++pCh; 983 } ... 1101 if (pTimePos) 1102 { 1103 //HH:MM... .... 1133 if (*(pos-1) == ':') 1134 { .... 1148 if (*(pos-1) == '.') 1149 { 1150 // find end. 1151 UINT32 len = 0; 1152 if (pTimeZone) 1153 { 1154 len = pTimeZone - pos; 1155 } 1156 else 1157 { 1158 len = end - pos; 1159 } 1160 strncpy(buf, pos, len); /* Flawfinder: ignore */ 在957行栈缓冲区声明为10字节,该行的标注导致FlawFinder程序忽略这个缓冲区。 962行开始的循环通过一个函数参数运行,该函数用于寻找表示时间格式中不同部分的字符。如果遇到了空格、"+"、"-"、或"Z"字符,就会记录下位置以备之后使用。如果找到了时间且包含有冒号和逗号,就会到达有漏洞的代码。...
RealPlayer是一款非常流行的媒体播放器,支持多种格式;HelixPlayer是其开源版本。 RealPlayer/HelixPlayer播放器的墙壁时钟在处理日期格式时存在缓冲区漏洞,远程攻击者可能利用此漏洞控制用户机器。 墙壁时钟(wallclock)功能没有正确地处理HH:mm:ss.f时间格式: 924 HX_RESULT 925 SmilTimeValue::parseWallClockValue(REF(const char*) pCh) 926 { ... 957 char buf[10]; /* Flawfinder: ignore */ ... 962 while (*pCh) 963 { ... 972 else if (isspace(*pCh) || *pCh == '+' || *pCh == '-' || *pCh == 'Z') 973 { 974 // this will find the last +, - or Z... which is what we want. 975 pTimeZone = pCh; 976 } ... 982 ++pCh; 983 } ... 1101 if (pTimePos) 1102 { 1103 //HH:MM... .... 1133 if (*(pos-1) == ':') 1134 { .... 1148 if (*(pos-1) == '.') 1149 { 1150 // find end. 1151 UINT32 len = 0; 1152 if (pTimeZone) 1153 { 1154 len = pTimeZone - pos; 1155 } 1156 else 1157 { 1158 len = end - pos; 1159 } 1160 strncpy(buf, pos, len); /* Flawfinder: ignore */ 在957行栈缓冲区声明为10字节,该行的标注导致FlawFinder程序忽略这个缓冲区。 962行开始的循环通过一个函数参数运行,该函数用于寻找表示时间格式中不同部分的字符。如果遇到了空格、"+"、"-"、或"Z"字符,就会记录下位置以备之后使用。如果找到了时间且包含有冒号和逗号,就会到达有漏洞的代码。 1154或1158行计算将要拷贝到栈缓冲区的数据长度,具体取决于是否存在时区。这两处计算都没有考虑buf缓冲区的常数长度,因此在1160行可能出现栈溢出。此外,该行不安全地使用strncpy()也被标记了忽略FlawFinder的标注。 如果用户受骗使用有漏洞的播放器加载了同步多媒体集成语言(SMIL)文件的话,就可能触发这个溢出,导致执行任意指令。 此外RealPlayer和HelixPlayer在处理畸形的.au文件时还可能将0用作除数,导致播放器崩溃。