我们最近升级了安全扫描程序,并报告了一个新问题。
推荐的修复方法是什么? (我们碰巧在ACF9上。)
(另外,如果您有一个针对CF的示例漏洞利用,我会很感激。)
严重性
高
类型配置
由模块报告脚本(XSS.script)
描述此页面容易受到各种Unicode转换问题的影响 例如Best-Fit Mappings,Overlong byte sequence,Ill-formed 序列。
当角色X转换为时,会出现最佳拟合映射 一个完全不同的角色Y.一般来说,最合适的映射 在Unicode和另一个字符之间转码字符时发生 编码
超长字节序列(非最短格式) - UTF-8允许 字符的不同表示也有较短的表示 形成。出于安全原因,UTF-8解码器不得接受 UTF-8序列比编码字符所需的时间长。例如,字符U + 000A(行 必须仅从表单中的UTF-8流中接受feed) 0x0A,但不是以下五种可能超长的任何一种 形式:
0xC0 0x8A
0xE0 0x80 0x8A
0xF0 0x80 0x80 0x8A
0xF8 0x80 0x80 0x80 0x8A
0xFC 0x80 0x80 0x80 0x80 0x8A
UNICODE 3.0所要求的不良后续子序列,并在其中注明 Unicode技术报告#36,如果前导字节后跟一个 无效的后继字节,那么就不应该使用它。
碰撞出现Best-Fit映射时会出现软件漏洞。对于 例如,可以操纵字符以绕过字符串处理 过滤器,例如跨站点脚本(XSS)或SQL注入过滤器, WAF和IDS设备。超长的UTF-8序列可能被滥用 绕过UTF-8子串测试,只看最短的测试 编码
建议确定这些Unicode转换问题的根源并修复它们。 有关详细信息,请参阅下面的Web引用。
参考UTF-8 and Unicode FAQ for Unix/Linux
A couple of unicode issues on PHP and Firefox
Unicode Security Considerations
Affecteditems/ mysite的门户/
详细
URL编码的POST输入linkServID设置为 acu5955%EF%BC%9Cs1%EF%B9%A5s2%CA%BAs3%CA%B9uca5955
问题清单:
Unicode字符U + 02B9 MODIFIER LETTER PRIME(编码为%CA%B9) 被转化为U + 0027 APOSTROPHE(')
Unicode字符U + 02B9 MODIFIER LETTER PRIME(编码为%CA%B9) 是transf ...(线截断)
请求标题
GET
?/ mysite的门户/显示=登录&安培;状态=失败&安培;与rememberMe = 0&安培;内容识别=安培; LinkServID = acu5955%1 Cs1es2%BAs3%B9uca5955&安培; RETURNURL = https://stage-cms.mysite.com/mysite-portal/ HTTP / 1.1 Referer:https://stage-cms.mysite.com:443/
连接:保持活力
Accept-Encoding:gzip,deflate
User-Agent:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; 三叉戟/ 5.0)
接受:* / *
主持人:stage-cms.mysite.com
答案 0 :(得分:1)
答案是:规范化。
https://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode#How_to_protect_yourself
如何保护自己
应选择合适的规范形式并输入所有用户 在任何授权决定之前,将其规范化为该形式 执行。应在UTF-8解码后执行安全检查 完成了。而且,建议检查UTF-8 encoding是它所代表的符号的有效规范编码。
http://www.mattgifford.co.uk/canonicalize-method-in-coldfusion-8-and-coldfusion-9
答案 1 :(得分:1)
如果您的用户输入为ill-formed sequence,则规范化对您无效。
有关如何处理格式错误的子序列的更多信息,请参阅Unicode 5.2中Section 3.9, Unicode Encoding Forms中的“转换过程的约束”
对于这些情况,请使用完全为此目的构建的“替换字符”U+FFFD
替换无效序列。这是一个神奇的药丸,可以在99.9%的情况下起作用,但剩下的0.1%足以消灭你的数据库。
为了确保安全,您需要完全分析您的输入解析器,看看它们是否容易受到U+FFFD
替换。
始终有效的最佳解决方案是停止解析,清理垃圾,然后返回错误消息。
答案 2 :(得分:0)
这个
有各种解决方案对于CF 8和9用户:
可以在以下位置找到解决此问题的一组函数:
https://github.com/coldfumonkeh/cfml-security
对于CF 10用户:
canonicalize(inputString, restrictMultiple, restrictMixed)
涵盖了这个问题。见http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WS932f2e4c7c04df8f-1a0d37871353e31b968-8000.html
对于Railo用户:
这是在4.0.0.011中解决的