CWE:CWE-1336 模板引擎中特殊元素的不当中和 英文:该产品使用模板引擎来插入或处理受外部影响的输入,但它没有中和或不正确地中和了特殊元素或语法,这些元素或语法在由引擎处理时可能被解释为模板表达式或其他代码指令。 许多 Web 应用程序使用模板引擎,允许开发人员将受外部影响的值插入到自由文本或消息中,以生成完整的 Web 页面、文档、消息等。此类引擎包括 Twig、Jinja2、Pug、Java Server Pages、FreeMarker、Velocity、ColdFusion、Smarty 以及许多其他引擎——包括 PHP 本身。一些 CMS(Content Management Systems,内容管理系统)也使用模板。模板引擎通常具有自己的自定义命令或表达式语言。如果攻击者能够在模板处理之前影响输入,那么攻击者可以调用任意表达式,即执行注入攻击。例如,在某些模板语言中,攻击者可以注入表达式 "{{7*7}}" 并确定输出是否返回 "49" 而不是其他值。语法因语言而异。在某些情况下,XSS-style(跨站脚本风格)攻击可能有效,如果开发人员不仔细调查错误的根本原因,这可能会掩盖根本原因。模板引擎可以在服务器端或客户端使用,因此“两侧”都可能受到注入的影响。攻击机制或受影响的技术可能不同,但错误本质上是相同的。
常见影响 (1)
IntegrityExecute Unauthorized Code or Commands
缓解措施 (2)
Architecture and DesignChoose a template engine that offers a sandbox or restricted mode, or at least limits the power of any available expressions, function calls, or commands.
ImplementationUse the template engine's sandbox or restricted mode, if available.