OpenOffice WMF/EMF文件多个整数溢出漏洞 CVE-2006-5870 CNNVD-200612-653

9.3 AV AC AU C I A
发布: 2006-12-31
修订: 2018-10-17

OpenOffice(OOo)是美国阿帕奇(Apache)软件基金会的一款开源的办公软件套件。该套件包含文本文档、电子表格、演示文稿、绘图、数据库等。 OpenOffice在处理META_ESCAPE记录时存在截尾错误。在svtools\source\filter.vcl\wmf\winwmf.cxx文件中: case W_META_ESCAPE : ... sal_uInt32 i, nStringLen, nDXCount; ... aMemoryStream >> aPt.X() >> aPt.Y() >> nStringLen; sal_Unicode* pBuf = aString.AllocBuffer( (sal_uInt16)nStringLen ); for ( i = 0; i < nStringLen; i++ ) aMemoryStream >> pBuf[ i ]; nStringLen为sal_uInt32,被放到了sal_uInt16进行分配然后将最初的32位值用作了计数填充缓冲区,因此任何大于0xFFFF的长度都可能导致堆溢出。如果用户受骗打开了恶意的WMF文件或嵌入了该文件的文档(如Microsoft Word文档)的话,就可能导致通过覆盖函数指针或DWORD执行任意代码。 OpenOffice在处理EMR_POLYPOLYGON和EMR_POLYPOLYGON16记录时还存在整数溢出。在svtools\source\filter.vcl\wmf\enhwmf.cxx文件中: case EMR_POLYPOLYGON : INT32 i, nPoly, nGesPoints; ... *pWMF >> nPoly >> nGesPoints; ... pPtAry = (Point*) new char[ nGesPoints * sizeof(Point) ]; for ( i = 0; i < nGesPoints; i++ ) { *pWMF >> nX32 >> nY32; pPtAry[ i ] = Point( nX32, nY32 ); } 如果nGesPoints > (0x100000000/sizeof(Point))的话,nGesPoints *...

0%
暂无可用Exp或PoC
当前有4条受影响产品信息