我们最近升级了我们的安全扫描器,它报告了一个新的问题。
推荐的修复方法是什么?(我们碰巧在ACF9上。)
(此外,如果您有一个针对CF的示例利用程序,我将不胜感激。)
Unicode转换问题
严重性
高
类型
配置
按模块报告
脚本(XSS.script)
描述
此页面易受各种Unicode转换问题的影响,如最佳匹配映射、超长字节序列、Ill格式序列。
当一个字符X被转换成一个完全不同的字符Y时,就会发生最佳匹配映射。一般来说,当字符在Unicode和另一个编码之间被转换时,就会出现最佳匹配映射。
超长字节序列(非最短形式)- UTF-8允许不同的字符表示形式也较短。出于安全考虑,UTF-8解码器不能接受长度超过编码字符所需的UTF-8序列。例如,字符U+000A (行提要)必须仅以0x0A形式从UTF-8流中接受,而不能在以下五种可能的超长表单中接受:
UNICODE 3.0所要求的格式错误的子序列,并在Unicode技术报告#36中指出,如果一个前导字节后面跟着一个无效的后续字节,那么它就不应该使用它。
影响
当出现最佳匹配映射时,就会出现软件漏洞。例如,字符可以被操纵以绕过字符串处理过滤器,例如跨站点脚本(XSS)或SQL注入过滤器、WAF和IDS设备。超长的UTF-8序列可以被滥用来绕过UTF-8子字符串测试,这些测试只需要尽可能最短的编码。
推荐
标识这些Unicode转换问题的来源并修复它们。有关更多信息,请参阅下面的网站参考资料。
参考文献
Unicode安全性
Unix/Linux的UTF-8和Unicode常见问题
PHP和Firefox上的几个unicode问题
Unicode安全性考虑
受影响项目
/mysite-门户网站/
详细信息
将URL编码后输入linkServID设置为acu5955%EF%BC%9Cs1%EF%B9%A5s2%CA%BAs3%CA%B9uca5955
问题清单:
请求标头
到达
/mysite-portal/?display=login&status=failed&rememberMe=0&contentid=&LinkServID=acu5955%1 Cs1es2%BAs3%B9uca5955&returnURL=https://stage-cms.mysite.com/mysite-portal/ HTTP/1.1引用程序:https://stage-cms.mysite.com:443/
连接:保持-活着
接受-编码: gzip,放气
用户-代理: Mozilla/5.0 (兼容;MSIE9.0;WindowsNT6.1;WOW64;三叉戟/5.0)
接受:*/*
主持人:State-cms.mysite.com
发布于 2013-06-17 21:50:39
答案是:规范化。
如何保护自己 在执行任何授权决定之前,应该选择合适的规范形式,并将所有用户输入规范化到该表单中。应在UTF-8解码完成后进行安全检查。此外,建议检查UTF-8编码是否是它所代表的符号的有效规范编码。
http://www.mattgifford.co.uk/canonicalize-method-in-coldfusion-8-and-coldfusion-9
发布于 2015-01-27 11:04:42
如果您的用户输入是畸形序列,规范化不会对您有所帮助。
有关如何处理格式错误的子序列的详细信息,请参阅Unicode 5.2中的第3.9节,Unicode编码表格中的“转换过程的约束”。
对于这些情况,将无效序列替换为为此目的而构建的“替换char”U+FFFD。这是一种神奇的药丸,能在99.9%的情况下起作用,但剩下的0.1%就足以清除数据库。
要真正安全,您需要对输入解析器的进行全面分析,以确定它们是否易受U+FFFD替换的影响。
一直起作用的最佳解决方案是停止解析,清理垃圾,然后返回错误消息。
发布于 2013-06-18 03:56:48
对此有多种解决方案
用于CF 8和9用户的:
围绕这一问题工作的一组功能可以在以下站点找到:
https://github.com/coldfumonkeh/cfml-security
CF 10用户的:
canonicalize(inputString, restrictMultiple, restrictMixed) 涵盖了这个问题。请参阅US/ColdFusion/10.0/CFMLRef/WS932f2e4c7c04df8f-1a0d37871353e31b968-8000.html
面向铁路用户的:
这在4.0.0.011中得到了解决。
https://stackoverflow.com/questions/17157170
复制相似问题