首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复ColdFusion中的Unicode转换问题/漏洞

修复ColdFusion中的Unicode转换问题/漏洞
EN

Stack Overflow用户
提问于 2013-06-17 21:27:21
回答 3查看 4K关注 0票数 3

我们最近升级了我们的安全扫描器,它报告了一个新的问题。

推荐的修复方法是什么?(我们碰巧在ACF9上。)

(此外,如果您有一个针对CF的示例利用程序,我将不胜感激。)

Unicode转换问题

严重性

类型

配置

按模块报告

脚本(XSS.script)

描述

此页面易受各种Unicode转换问题的影响,如最佳匹配映射、超长字节序列、Ill格式序列。

当一个字符X被转换成一个完全不同的字符Y时,就会发生最佳匹配映射。一般来说,当字符在Unicode和另一个编码之间被转换时,就会出现最佳匹配映射。

超长字节序列(非最短形式)- UTF-8允许不同的字符表示形式也较短。出于安全考虑,UTF-8解码器不能接受长度超过编码字符所需的UTF-8序列。例如,字符U+000A (行提要)必须仅以0x0A形式从UTF-8流中接受,而不能在以下五种可能的超长表单中接受:

  • 0xC00x8A
  • 0xE0x80 0x8A
  • 0xF0x80 0x80 0x8A
  • 0xF8 0x80 0x80 0x80 0x8A
  • 0xFC 0x80 0x80 0x80 0x8A

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

问题清单:

  • 将Unicode字符U+02B9修饰符素数(编码为%CA%B9)转换为U+0027撇号(')
  • U+02B9字符修改字母素数(编码为%CA%B9)被传输。(行截断)

请求标头

到达

/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

EN

回答 3

Stack Overflow用户

发布于 2013-06-17 21:50:39

答案是:规范化。

你自己

如何保护自己 在执行任何授权决定之前,应该选择合适的规范形式,并将所有用户输入规范化到该表单中。应在UTF-8解码完成后进行安全检查。此外,建议检查UTF-8编码是否是它所代表的符号的有效规范编码。

http://www.mattgifford.co.uk/canonicalize-method-in-coldfusion-8-and-coldfusion-9

票数 1
EN

Stack Overflow用户

发布于 2015-01-27 11:04:42

如果您的用户输入是畸形序列,规范化不会对您有所帮助。

有关如何处理格式错误的子序列的详细信息,请参阅Unicode 5.2中的第3.9节,Unicode编码表格中的“转换过程的约束”。

对于这些情况,将无效序列替换为为此目的而构建的“替换char”U+FFFD。这是一种神奇的药丸,能在99.9%的情况下起作用,但剩下的0.1%就足以清除数据库。

要真正安全,您需要对输入解析器的进行全面分析,以确定它们是否易受U+FFFD替换的影响。

一直起作用的最佳解决方案是停止解析,清理垃圾,然后返回错误消息。

票数 1
EN

Stack Overflow用户

发布于 2013-06-18 03:56:48

对此有多种解决方案

用于CF 8和9用户的

围绕这一问题工作的一组功能可以在以下站点找到:

https://github.com/coldfumonkeh/cfml-security

CF 10用户的

代码语言:javascript
复制
canonicalize(inputString, restrictMultiple, restrictMixed) 

涵盖了这个问题。请参阅US/ColdFusion/10.0/CFMLRef/WS932f2e4c7c04df8f-1a0d37871353e31b968-8000.html

面向铁路用户的

这在4.0.0.011中得到了解决。

sscc=t

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17157170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档