3

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

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

(另外,如果你有一个针对 CF 的示例漏洞,我将不胜感激。)


Unicode 转换问题

严重性

高的

类型

配置

按模块报告

脚本 (XSS.script)

描述

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

当字符 X 转换为完全不同的字符 Y 时,会发生最佳匹配映射。通常,当字符在 Unicode 和另一种编码之间进行转码时,会发生最佳匹配映射。

超长字节序列(非最短形式)- UTF-8 允许不同的字符表示形式也具有较短的形式。出于安全原因,UTF-8 解码器不得接受长于编码字符所需的 UTF-8 序列。例如,字符 U+000A(换行符)只能以 0x0A 的形式从 UTF-8 流中接受,但不能以以下五种可能的超长形式中的任何一种形式接受:

  • 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 中指出,如果前导字节后跟无效的后继字节,则不应使用它。

影响

出现最佳拟合映射时会出现软件漏洞。例如,可以操纵字符以绕过字符串处理过滤器,例如跨站点脚本 (XSS) 或 SQL 注入过滤器、WAF 和 IDS 设备。过长的 UTF-8 序列可能会被滥用来绕过 UTF-8 子字符串测试,这些测试只寻找可能的最短编码。

推荐

确定这些 Unicode 转换问题的来源并修复它们。有关更多信息,请参阅下面的网络参考。

参考

Unicode 安全

适用于 Unix/Linux 的 UTF-8 和 Unicode 常见问题解答

PHP 和 Firefox 上的几个 unicode 问题

Unicode 安全注意事项

影响项目

/我的网站门户/

细节

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)被转换...(行被截断)

请求标头

得到

/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,deflate

用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)

接受: */*

主办方:stage-cms.mysite.com

4

3 回答 3

1

如果您的用户输入格式不正确,规范化对您没有帮助

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

U+FFFD对于这些情况,用专门为此目的构建的“替换字符”替换无效序列。这是在 99.9% 的情况下都有效的灵丹妙药,但剩下的 0.1% 足以摧毁你的数据库。

为了真正安全,您需要全面分析您的输入解析器,看看它们是否容易被U+FFFD替换。

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

于 2015-01-27T11:04:42.690 回答
1

答案是:规范化。

https://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode#How_to_protect_yourself

如何保护自己

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

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

于 2013-06-17T21:50:39.930 回答
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 中解决

https://issues.jboss.org/browse/RAILO-1873?_sscc=t

于 2013-06-18T03:56:48.870 回答