File是用于查看文件类型信息的命令行工具。 File工具处理某些畸形文件时存在漏洞,攻击者可能利用这些漏洞通过诱使用户处理恶意文件导致file工具溢出或崩溃。 如果用户使用file在32位系统上查看了很大的文件,则可能触发整数溢出,导致执行任意指令: + len = ms->o.size - ms->o.left; + /* * 4 is for octal representation, + 1 is for NUL */ + psize = len * 4 + 1; + assert(psize > len); 在32位系统上,如果len为1.35GB的话,len * 4 + 1 = 5.4GB == 1.4GB,因此assert可以通过,触发缓冲区溢出。 file的glib库没有正确地处理识别OS/2 REXX文件的正则表达式,所捆绑的magic文件包含以下两行: 100 regex/c =^\\s*call\\s+rxfuncadd.*sysloadfu OS/2 REXX batch file text 100 regex/c =^\\s*say\ [\'\'\"] OS/2 REXX batch file text 如果用户受骗使用file处理了包含有大量换行字符的特制文档的话,就可能会耗尽大量CPU资源。
File是用于查看文件类型信息的命令行工具。 File工具处理某些畸形文件时存在漏洞,攻击者可能利用这些漏洞通过诱使用户处理恶意文件导致file工具溢出或崩溃。 如果用户使用file在32位系统上查看了很大的文件,则可能触发整数溢出,导致执行任意指令: + len = ms->o.size - ms->o.left; + /* * 4 is for octal representation, + 1 is for NUL */ + psize = len * 4 + 1; + assert(psize > len); 在32位系统上,如果len为1.35GB的话,len * 4 + 1 = 5.4GB == 1.4GB,因此assert可以通过,触发缓冲区溢出。 file的glib库没有正确地处理识别OS/2 REXX文件的正则表达式,所捆绑的magic文件包含以下两行: 100 regex/c =^\\s*call\\s+rxfuncadd.*sysloadfu OS/2 REXX batch file text 100 regex/c =^\\s*say\ [\'\'\"] OS/2 REXX batch file text 如果用户受骗使用file处理了包含有大量换行字符的特制文档的话,就可能会耗尽大量CPU资源。