外部图片漏洞

7

如何通过标签包含外部图片,会出现哪些安全漏洞,以及如何避免这些漏洞?

目前我只在提交时检查图像的扩展名和mime类型(可以在提交后更改),并且在将URL放入src属性之前对其进行了消毒处理。


2
我可以问一下你是如何具体检查扩展名的?当你说URL提交后事情可以改变时,你是指用户还是你自己可以改变? - Rhys
用户(存储图像的服务器所有者)肯定可以做到。在 .htaccess 中加入 AddHandler 并将 .jpeg 标记为可执行并不难。所有的网络嗅探器都是这样制作的。 - Noobie
3个回答

4

这里可能需要区分的是,谁有风险。

如果你只是存储URL,而不上传图片到你的服务器,那么你的网站可能是安全的,任何潜在的风险都是针对访问你的网站的用户。

本质上,你正在信任浏览器制造商的可靠性。事情可能很好,但如果用户使用的某个浏览器出现了安全漏洞,涉及到不正确解析包含恶意代码的图像,那么就是你的用户将为此付出代价(你可能会发现GIFAR很有趣)。

关键在于你是否信任浏览器制造商制作安全软件,以及你是否信任你的用户不会上传包含特定浏览器漏洞的图像URL。现在可能是安全的,但下一个版本可能就不安全了。


谢谢!感谢您提供的好答案和分享有关GIFAR的信息。 - Noobie

3

可能会被攻击的主要漏洞是,当损坏的图像导致浏览器内部缓冲区溢出时,允许任意代码执行。

如果您只将图像放入<img>标签中,则不应该存在与发送替代MIME类型有关的漏洞,但绝不要低估一些Web浏览器开发者愚蠢的能力...


那么主要问题是浏览器吗?有没有一些方法来保护这些外部图片或其他内容? - Noobie
1
下载它们,扫描已知漏洞。但我担心没有人这样做,这通常是为什么实际使用安全浏览器非常重要的原因。我希望有一些报告/项目能够找出今天所有网络浏览器的安全性。当我看到我的操作系统更新频率时,我认为浏览器也应该每两天更新一次。 - hakre

3
显然,您没有对数据进行任何检查,因此数据可以是任何东西(远程服务器报告的MIME类型并不一定真实)。另外,正如您所说,由于提交后从未查看过远程服务器上的数据,因此远程服务器上的数据可能已更改。
因此,如果将链接放入类似<img src="..."/>的标记中,则浏览器在处理图像时可能会存在漏洞,从而被利用。
“净化”URL对任何事情都没有帮助:提交指向“坏”图像的链接的人不会攻击自己的服务器。

我应该对数据进行哪些检查? - Noobie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接