我正在对具有嵌入式 TCL 解释器的系统进行安全测试。系统从 Internet (HTTP) 接收输入,对其进行解析并传递给可定制的 TCL 脚本。在模糊测试期间(在 HTTP 标头中发送二进制垃圾),我注意到日志中有以下错误:
TCL 错误:在执行“foreach header [XXXXX] {}”时,引号中的列表元素后跟“{}x”而不是空格
或者
TCL 错误:执行“foreach header [XXXXX] {}”时列表中的未匹配打开引号
这里的 XXXXX 是一个返回系统解析的 HTTP 标头数组的命令。很抱歉混淆了真正的命令,我希望你理解我不想在供应商被告知问题之前公开太多细节(如果它被证明是一个问题)。
产生错误的 TCL 代码非常简单:
foreach 标头 [ XXXX ] { }
据我所知,HTTP 解析是在 TCL 之外完成的,解析后的值可以通过自定义命令(可能作为 TCL 扩展实现)供 TCL 访问。
所以我的问题是:
这些错误是否表明系统存在安全问题,例如用户输入验证不足?
如果是,是否可以通过向系统发送特制请求(一种代码注入攻击)来利用此条件执行任意 TCL 语句?
是否有任何“安全 TCL 编码实践”文档?我找不到任何东西。