MODPlug Tracker多个缓冲区溢出漏洞

- AV AC AU C I A
发布: 2025-03-27
修订: 2025-03-27

MODPlug Tracker(也称为OpenMPT)允许用户在基于Windows的PC上创建音乐。 OpenMPT的ReadITProject函数没有过滤ITP文件中的文本字段,允许攻击者覆盖全局变量,执行恶意代码。请注意libmodplug中不支持ITP文件。 soundlib/Load_it.cpp中的漏洞代码: BOOL CSoundFile::ReadITProject(LPCBYTE lpStream, DWORD dwMemLength) { ... // Song name // name string length memcpy(&id,lpStream+streamPos,sizeof(DWORD)); len = id; streamPos += sizeof(DWORD); // name string memcpy(&m_szNames[0],lpStream+streamPos,len); streamPos += len; ... (other overflows) ... 此外,攻击者还可以通过无效的nLength值触发ReadSample函数的多个模块中的堆溢出。如下所示nLength每次增加6字节(mem),在某些情况下会将这个值乘以2,然后将得到的值用于分配pIns->pSample。如果攻击者能够强制程序分配0字节的话,就会通过memcpy指令溢出内存。 soundlib/Sndfile.cpp中的漏洞代码: UINT CSoundFile::ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR lpMemFile, DWORD dwMemLength) //------------------------------------------------------------------------------------------------ { UINT len = 0, mem = pIns->nLength+6; if ((!pIns) || (pIns->nLength < 4) || (!lpMemFile)) return 0; if (pIns->nLength >...

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