漏洞概述 标题: Unvalidated -prefixed Arguments Bypass Input Filtering 描述: 漏洞存在于 函数中,该函数本应丢弃未在动作配置中明确定义的任何参数。然而,有一个特殊情况允许以 开头的参数绕过此过滤器。 虽然两个系统参数( 和 )由 OliveTin 注入并覆盖,但其他所有以 开头的参数由用户传递且未经过验证。 受影响的参数: 1. 未进行类型检查: 验证循环仅遍历动作中定义的参数,因此以 开头的参数完全跳过所有类型安全检查。 2. 设置为环境变量: 通过 ,以完全未验证的值传递给执行的命令。 3. 在模板上下文中可用: 作为 在模板渲染中可用。 影响范围 环境变量的污染: 攻击者可以设置任意环境变量(以 大写前缀),影响任何他们触发的动作的执行环境。读取自定义环境变量的脚本或程序可能会受到影响。 潜在的二阶利用: 如果任何执行的脚本或命令读取以 开头的环境变量,未验证的内容可能导致意外行为。 模板上下文注入: 尽管 Go 的 不会递归评估数据值(缓解直接模板注入),但额外参数在模板上下文中可用,并可能与自定义模板逻辑意外交互。 修复方案 移除 前缀例外: 从 中移除 前缀例外,或将其限制为仅两个已知的系统参数。 POC代码 证明概念 攻击者发送一个带有额外 前缀参数的 请求: 这些参数: 通过 ( 前缀豁免)。 从未在动作的参数定义中进行类型检查。 成为执行命令环境中的环境变量 和 。 在模板渲染上下文中可用,作为 和 。