细枝:沙盒信息披露
2019年3月12日·发表的法比安效力
描述
此漏洞影响Twig的沙盒模式。如果您不使用沙箱,则您的代码不会受到影响。
Twig允许在沙箱中评估不受信任的模板,在沙箱中,如果沙箱策略没有明确允许,一切都是禁止的(标签、过滤器、函数、方法调用……)
例如,{% if true %}…{% endif %}
不允许在沙盒中,如果如果
标记在沙箱策略中未被明确允许。
有一个与PHP工作方式相关的极端情况。当使用{{var}}
与var
作为对象,PHP将自动将对象转换为字符串(echo $ var
等于echo $ var - > __toString ()
).
如果你不允许__toString ()
在课堂上var
,此代码将抛出沙盒策略异常。
但不幸的是,对电话的保护__toString ()
只适用于简单的情况,如上面提到的。它不能在以下模板上工作,例如:{{var |上}}
在哪里__toString ()
即使不是策略的一部分,也会被调用。
作为__toString ()
有时在类中用于返回一些调试信息,绕过策略可能会暴露敏感信息,如数据库条目id、用户名等。
决议
我重写了现行的预防策略__toString ()
当没有白名单时调用,使用不同的方法,试图发现PHP何时将对象自动转换为字符串(回声
是其中之一,连接是另一个)。针对此问题的补丁已经可用在这里对于1。x分支。
学分
我在制作《Twig 3》时发现了这个问题。我提供了一个补丁来修复这个问题。我要感谢Symfony核心团队的补丁审查。ob娱乐下载
是否发现Symfony存在安全问题?ob娱乐下载请将详情发送至www.pdashmedia.com的安全ob娱乐下载在我们找到解决方案之前不要公开。
管理通知首选项在Symfony安全版本发布后立即收到一封电子邮件。ob娱乐下载
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Laurent Moreau is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now谢谢你!