我在我的网站上运行了恶意软件扫描程序,它将一堆压缩的 EXE 文件标记为潜在风险文件(这些文件由用户上传)。由于我能够在 Mac 上解压这些文件,所以我假设这些是真正的 ZIP 文件,而不仅仅是重命名的 PHP 文件。
所以 ZIP 文件对于我的网络服务器来说应该不会有任何风险,对吗?
答案1
如果它们确实是压缩的 Windows exe 文件,那么它们对您的 Linux 系统应该是无害的,除非您有像 Wine 这样可以尝试执行它们的程序。
但如果它们出现在你的网络路径中,它们可能是恶意软件,并且会带来大的给您的网站访问者带来风险(如果您最终被标记为恶意软件来源并且用户在尝试访问您的网站时收到令人讨厌的警告,那么您也将面临风险)。
答案2
因为我能够在我的 Mac 上解压缩这些文件,所以我认为这些是真正的 zip 文件,而不仅仅是重命名的 php 文件。
当你大概在这种情况下,您的假设可能并不总是成立。ZIP 存档即使你添加任意数据,它仍然有效,因此完全有可能创建一个文件,它既是包含无害数据的有效 ZIP 存档,又是恶意 PHP 脚本。这并不特别困难;只需将 PHP 代码和 ZIP 文件连接起来,并确保(例如使用__halt_compiler()
) PHP 将不会尝试解析附加的 ZIP 存档数据。
此技巧可合法用于创建自解压 ZIP 文件,但完全可以以同样的方式将任何其他隐藏数据或可执行代码添加到 ZIP 文件中。某些程序可能会拒绝打开此类经过修改的 ZIP 文件(但如果这样,则从技术上讲它们违反了 ZIP 格式规范),或者它们可能默认将该文件识别为非 ZIP 文件,但通常,如果您将此类文件输入需要 ZIP 文件的代码,则它可能会被接受为 ZIP 文件。
此类技巧更常见的恶意用途是将基于 ZIP 的容器(例如 JAR 文件)中的漏洞代码伪装成无害的东西(例如 GIF 图像,如吉法尔它可以被用作漏洞利用(虽然它可能只是一个漏洞),但是也没有理由不能用于其他方面,例如绕过一个简单的文件上传过滤器,该过滤器禁止上传 PHP 脚本但允许上传 ZIP 文件,而无需检查上传的文件是否同时是这两种文件。
答案3
您至少应该考虑两个值得注意的事项:
- 如果这些文件在您的网站上分发,如果有人从您的网站获取恶意软件,您可能要承担责任。至少您的网站可能会被标记为恶意软件。如果您决定忽略恶意软件扫描程序的警告,您至少应该通知上传者和可能的下载者该文件可能有害(因为从互联网下载的 EXE 有时是有害的)。
- 除了恶意软件扫描之外,您是否对这些文件进行过任何处理?自动处理附件或其他此类上传始终存在潜在危险,因为文件内容可能是任何内容。如果您的实用程序软件容易受到某些攻击,并且看似不错的 zip/exe 包含针对您的实用程序的有害内容,您甚至不需要执行 EXE 文件。我不会让我的服务器处理任何未通过恶意软件扫描的内容。
因此,根据你的服务器所做的事情,文件可能会潜在对您的服务器或其他用户有害。由于我对从互联网下载的 EXE 非常谨慎,我认为可能的下载者是这里最有风险的潜在用户。
答案4
我很惊讶没有人提到任何数据都可能对任何(有缺陷的)程序造成危害(或导致危害)。这就是模糊处理的基础。例如,您可能有一个 JPEG(或类似 JPEG)文件,它会导致(特定?)JPEG 解码器上的缓冲区溢出,从而导致从拒绝服务到任意代码执行等各种问题。这是为了破坏现有的数据处理程序;无需引入新的可执行文件!这就是需要沙盒、输入清理和最小特权原则的原因。
因此,就您的情况而言,ZIP 文件可能会对(特定?)ZIP 解码引擎造成问题。ZIP 文件无需包含本机可执行文件即可造成危害。
话虽如此,您的扫描仪在另一个更粗略的层面上工作。如果我所说的那种风险存在于这些文件中,那么您在处理它们的那一刻就已经受到了打击 :)。