兼顾效率与安全:如何制止新模版注入漏洞?

“服务器端模板注入”漏洞被披露出来,那么,它与跨站脚本之间有何区别?相应地,防御策略也是否有所不同?



 

Michael Cobb:验证并清除来自不受信任来源的输入是软件开发人员需要遵守的重要原则,以防止恶意代码注入攻击如跨站脚本(XSS)和SQL注入等。尽管清理用户输入是安全编程的核心原则,然而数据未被清理的情况仍旧时有发生,且生成黑客可以攻击用户及系统的漏洞。

Web安全公司PortSwigger的研究人员研制了Web应用安全测试工具Burp Suite,该工具最新发现一个不知名的注入漏洞级别的漏洞,他们将其称作“服务器端模版注入”。

模版引擎广泛用于从展示层分离程序逻辑,维基、博客和内容管理系统都倾向于使用模版引擎。不仅因为这是良好的编程实践,也因为它能够使懂很少HTML知识的员工轻松地更新和维护网站内容或编写HTML格式的电子邮件。它们也让专业的网页设计师利用这些代码快速而高效地建站。流行的模板包括Twig、Jade以及XWike Enterprise。

一些引擎使用简单的字符串,占位符由数据替换。举个例子,一封电子邮件模板开头可能是 "Dear {user_firstname}" ,在模板引擎中,"user_firstname" 则由底层数据库中的’first name‘所取代。其他模板也用所谓的"if-defined-conditionals"来测试数据存在与否,有些则包括额外的灵活性,诸如用for-each循环、递归宏和嵌入式表达来提供更丰富的功能。

对于驻留在服务器上的模板引擎代码来说,验证和清理任何用户提供的添加进模板的输入和内容都是非常必要的;否则,则很可能发生服务器端模板注入攻击。不像XSS攻击,它能够直接攻击底层Web服务器,而非只是它的用户。尽管一些模板引擎部署了沙箱来限制访问,确保能安全处理不信任的输入,PortSwigger公司发现很多这类注入攻击都能绕过这些沙箱。该项研究解释了检测和利用模板注入漏洞的方法,并演示了利用五个最流行模板引擎的各种利用方式,包括沙箱逃避。

目前PortSwigger并不确定该模板注入攻击有多普遍,不过它打算使用Burp Suite来检测这类注入漏洞。简单和相对扁平的模板如Mustache不会引起风险,用户无法从模板语言中调用函数,尽管HTML输出仍然需要被清理。Wikipedia背后的开源模板引擎MediaWiki是更为灵活的引擎,根据PortSwigger,其沙箱环境在防止沾染潜在危险模块和功能方面做的非常好。

该研究表明企业开发团队不应该盲目依赖网站开发工具来实现最佳实践。安全团队需要仔细评估模板引擎是如何处理用户输入的以及内置安全检查或沙箱是否会被规避。阅读福袋文档可以在输入检查使显示明显的缺点,不过分析师应该仔细检查模板的代码以及是哪些引擎能够允许用户输入以及查看是否安全检查会被绕过。缓解技巧之一就是将模板引擎置于一个强化的Docker容器沙箱环境中,来追踪任何恶意代码执行。

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

能够有效提升服务器安全性的几个关键步骤

能够有效提升服务器安全性的几个关键步骤

正如我在推特上与几位朋友所暗示的那样,我们目前正在准备正式启用Skyport(一个企业安...[详细]

安全专家眼里的物联网安全问题及解决方法

安全专家眼里的物联网安全问题及解决方法

你每天都要接触的每个物品很快就会实现联网,收集数据,很容易被黑客攻击。物联网安全...[详细]

十个步骤使您免受勒索软件伤害

十个步骤使您免受勒索软件伤害

如果您在过去几周一直对安全方面的新闻有所关注,应该听说多家公司受到勒索软件,特别...[详细]

企业级网络监控系统“必备技能”

企业级网络监控系统“必备技能”

网络可用性监控系统通常是应用程序出现故障时的第一道防线。IT组织的各个团队免不了在...[详细]

使用Docker时需要关注的五项安全问题

使用Docker时需要关注的五项安全问题

通过阅读网上帖子以及浏览相关新闻,大家可能会产生一种先入为主的印象,即Docker天生...[详细]

返回首页 返回顶部