模板上的符号链接是否是安全问题?如果是,为什么?


35

Magento建议不要通过符号链接使用模板:

Advanced > Developer > Template Settings > Allow Symlinks

警告!不建议在生产环境中启用此功能,因为它会带来潜在的安全风险。

直到今天,我在这里都看不到任何风险。

  • 有什么风险?

8
我只能想象这是共享主机上的风险,一开始不应该将其用于电子商务。
benmarks 2014年

3
@benmarks。你为什么不把这个作为答案?
马里乌斯

2
@Fabi很好的问题!
user487772 2014年

3
我知道其他人会提供更完整的答案。我是对的:-D
benmarks 2014年

3
@benmarks网站需要以任何方式提高每个问题率的答案;-)
user487772 2014年

Answers:


40

符号链接不一定很糟糕。

首先:如果尝试打开符号链接目标,则该目标的文件权限有效。如果不允许您读取/写入/执行符号链接目标,则不会发生任何事情。

但是:您也许可以在文档根目录之外运行文件(有时实际上是您要对它们执行的操作,对吗?)。如果您不在suEXEC环境中,并且在共享主机上有一个apachewww-data用户,该主机负责提供来自不同帐户的文件,则可能会出现此问题。您的系统用户不允许访问其他客户的文件,但是该apache/www-data用户大部分将具有对所有共享帐户的读取权限。在一种情况下,一个用户可以访问共享主机上另一用户的文件。不是与您自己的用户一起使用,而是与apache/www-data用户一起通过浏览器访问文件。总结:在这种情况下,您将能够访问其他用户的文件=>错误。

下一件不好的事是,攻击者可以创建符号链接,也可以链接到/ etc / passwd等文件,...,然后下载此数据并继续使用此信息。这不仅取决于符号链接,还取决于错误的服务器配置(严格限制对这些文件的访问)。因此,不使用符号链接可以防止更多可能的攻击。

不仅仅是符号链接本身存在安全风险,还涉及服务器配置问题。


5
很好的解释-这是正确的答案,从本质
上讲

2
可能值得一提(尽管在“讨厌升级”的环境中始终存在与安全性相关的错误之间的平衡)-Magento强烈不鼓励符号链接与漏洞利用有关,其中文件app/design夹之外的模板和布局文件与其他次要漏洞利用相结合,可以由管理员用户用于特权升级和其他服务器利用。
艾伦·风暴

1
在Apache httpd上,如果要支持符号链接,请考虑使用该SymLinksIfOwnerMatch选项代替FollowSymlinks
hakre 2015年

15

是的,这就是为什么Web服务器通常还具有“不遵循符号链接”配置或至少“仅具有相同用户的目标遵循符号链接”的原因,因此,因为Webserver / php通常确实具有更多权限运行,那么您应该可以访问。

而且由于网络服务器通常会尝试避免出现可见的/ etc / shadow之类的问题,因此对于magento模板而言,这甚至更加危险,因为模板是通过include()进行解析的,因此,如果您无法完全控制文件,则可能会造成非常严重的安全漏洞。

您可能会争辩说,那时还有其他问题,但是谁真的知道每种潜在的攻击情况,而且大多数情况下,它们是各种问题较少的安全漏洞的组合,因此会造成重大破坏。

另外,前段时间有关于媒体目录和符号链接的安全修复程序,因此您应该在此处查找可能的攻击情形。


1
如果其他人可以在您的服务器上创建符号链接,那您将面临更大的麻烦。我的意思是-请参阅下面的Ben评论。谁会在共享托管中托管Magento?谁会在当今的共享托管中托管任何内容,为什么?:)
Sven

3
仅仅是因为有人这样做。你不能指望别人采取合理的行动。总是会有人这样做,并且总是会有人在常规服务器配置方面犯错误。
Flyingmana 2014年

14

我只能想象这是共享主机上的风险,一开始不应该将其用于电子商务。


1
不幸的是,它被大量使用。
Piotr Kaminski 2014年

2
根据PCI安全委员会的标准,从技术上讲,公共云是多租户,因此即使被认为是“风险”。
philwinkle 2014年

4

Magento补丁SUPEE-9767包含APPSEC-1281:通过symlinks远程执行代码,因此,模板上的Symlinks是一个安全问题。

类型:
远程执行代码(RCE)

CVSSv3严重程度:
8.8(高)

已知攻击:
是。攻击者在获得管理员访问权限后将禁用配置保护,并正在上传恶意代码。

说明:
在配置设置中使用AllowSymlinks选项可以启用包含恶意代码的映像的上载。尽管默认情况下禁用此选项,但有权访问存储配置设置的攻击者可以启用它并远程执行代码。

受影响的产品:
1.9.3.3之前的Magento CE和1.14.3.3之前的Magento EE

固定于:
CE 1.9.3.3,EE 1.14.3.3,SUPEE-9767

记者:
Wilko Nienhaus


0

不建议允许。启用符号链接时,我面临js加载错误。
很多;

TypeError:$ .widget不是一个函数

我必须尝试4-5刷新才能成功加载页面。
关闭它之后,可能未部署的资源第一次加载缓慢,但是js错误消失了。

PS:禁用符号链接后,您必须在每次更改后删除已部署的文件副本,以便static.php为您重新复制它。


1
抱歉,我不明白-您必须刷新4-5次,然后才能起作用?这与符号链接有什么关系?
Fabian Blechschmidt '16

禁用符号链接之前:)对不起,我的英语。
rbostan's

我们在谈论magento2吗?然后我了解到我不了解-尚无2的线索。
Fabian Blechschmidt '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.