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

简介:

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

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

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容器沙箱环境中,来追踪任何恶意代码执行。


作者:Michael Cobb

来源:51CTO

相关文章
|
12天前
|
测试技术
深入白盒测试:静态分析与动态覆盖的融合策略
【4月更文挑战第7天】 在现代软件开发的生命周期中,确保代码质量和功能正确性是至关重要的。白盒测试作为一种重要的软件测试方法,允许测试人员通过检查内部结构、设计逻辑和源代码来验证程序行为。本文将探讨如何有效结合静态分析和动态覆盖技术,以增强传统白盒测试的深度和广度。我们将讨论这种融合策略的优势,以及如何在不牺牲效率的前提下提高测试覆盖率和发现潜在错误的能力。
|
26天前
|
存储 缓存 安全
【C/C++ 项目优化实战】 分享几种基础且高效的策略优化和提升代码性能
【C/C++ 项目优化实战】 分享几种基础且高效的策略优化和提升代码性能
61 0
|
8月前
|
Web App开发 缓存 JSON
可以用到项目的优化网站加载速度方案
可以用到项目的优化网站加载速度方案
55 0
|
SQL 监控 Cloud Native
无需编写一行代码,实现任何方法的流量防护能力
微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。疫情期间,大家可能都经历过以下的场景: 1、线上预约购买口罩时瞬间洪峰流量导致系统超出最大负载,load 飙高,用户无法下单; 2、在线选课时同一时刻提交选课的请求过多,系统无法响应; 3、在线办公/教学时同时在线会议的用户过多,会议比较卡; 这些可用性下降的场景会严重影响用户体验,所以我们需要预先通过一些手段来提前对不稳定的因素进行防护,同时在突发流量的情况下我们也要具备快速止损的能力。
无需编写一行代码,实现任何方法的流量防护能力
|
移动开发 小程序 JavaScript
总结10条~高级前端必知的小程序体积优化策略
我们都知道微信小程序有包体积限制,整个小程序所有分包大小不超过 20M,单个分包/主包大小不能超过 2M。然而面对业务的不断更新迭代,代码和资源会越来越多,如果不尽早规划包体积的治理,势必有一天会对业务的发展造成阻碍。所以如何在有效支持业务逻辑的同时,尽量减少资源占用,在小程序开发环境中显得尤为重要。 代码包体积是其中的一个重要方面,本文将就此进行分析与探讨。
380 0
总结10条~高级前端必知的小程序体积优化策略
|
缓存 JavaScript 前端开发
Partytown 如何消除第三方脚本所带来的网站膨胀
文章导读:Partytown,是一个轻量级的开源解决方案,通过将第三方脚本放在后台线程中运行的 Web Worker 来减少由于第三方 JavaScript 文件加载导致的执行延迟。
|
存储 SQL 数据可视化
模板化的封装,降低业务代码开发
做这些业务设计时,核心思想是:把常用的逻辑进行封装,流程设计为可配置,这样即可在一定时间内应对业务的需求和变化,降低开发成本的支出,从而使研发更侧重核心业务的管理和抽象封装等内容。
124 0
模板化的封装,降低业务代码开发
|
安全 程序员 数据库
可控参数带来的网站漏洞修复建议方案
网站中存在的越权漏洞,首先我们来讲一下什么是关键可控参数,也就是说像我们的一些关键参数,例如use ID order by ID就是一些关键的参数,必须是你的这么一个测试者,是能够去对其控制的。如果这个参数已经挟持了,或者说他有固定的这个值。那此时的话就不称为可控参数了。而关键就是你的改动必须能造成这个越权效果的一种称为关键参数。我们一定要快速定位到这种关键可控的这个参数之后,我们才能够更快速的去找到对应的这么一个越权漏洞。
144 0
可控参数带来的网站漏洞修复建议方案
|
缓存 前端开发 开发工具
前端多语资源打包及加载的一个可行性方案
在一个比较大的项目里面(有国际化需求的),国际化的支持是一个必不可少的; 那如何落地就得具体问题具体分析了,这里说说我遇到过并落地的一个改造方案; 说说项目背景,是一个迭代多年的产研类项目(整个系统是围绕react生态去研发的),历史包袱挺多; 多种第三方库并存,也有iframe的场景以及自研的插件机制系统(现代沙盒隔离那一套); 方案仅供参考,哈!
149 0
|
设计模式 缓存 运维
选择提升婚恋源码可用性的方式,视具体情况而定
选择提升婚恋源码可用性的方式,视具体情况而定