返回介绍

6.4 由字符编码引起的漏洞总结

发布于 2024-10-10 22:16:33 字数 1472 浏览 0 评论 0 收藏 0

前面我们一边介绍字符编码的基本知识,一边对因字符编码引发的系统漏洞的发生原因进行了比较详细的说明。总结一下,我们可以把因字符编码导致的系统漏洞归结为以下 3 种类型。

1. 字符编码方式中非法数据导致的漏洞

2. 对字符编码方式处理存在纰漏导致的漏洞

3. 在不同字符集之间变换导致的漏洞

  • 字符编码方式中非法数据导致的漏洞

    字符编码方式中非法数据的典型例子是只有前置字节的半个字符,以及 UTF-8 里的非最短形式数据。只有前置字节的半个字符引起的 XSS 漏洞如同我们前面介绍过的那样。UTF-8 的非最短形式数据导致的漏洞的话,比较有名的包括 IIS MS00-05712 和 Tomcat 的目录遍历漏洞 CVE-2008-293813 等 14 。2001 年肆虐一时的 Nimda 蠕虫病毒正是利用了 MS00-057 漏洞的典型代表。

  • 对字符编码方式处理存在纰漏导致的漏洞

    在处理字符编码的时候,容易发生的 Bug 有很多,典型的例子如我们在前面讲述的“5C”问题。除日本外尤其是使用单字节编码语言的地域开发的软件可能存在着对多字节字符的处理遗漏或者欠缺的情况,这就有可能导致“5C”等漏洞问题的发生。另外,本书里没有介绍的 UTF-7 字符编码方式,也有针对这种编码方式的 XSS 攻击方法,同样也属于对字符编码方式处理欠缺导致的漏洞。

  • 在不同字符集间变换导致的漏洞

    在将 Unicode 的日元符号“¥”(U+00A5)转换为其他字符集(比如微软标准字符集)的时候,根据处理方法不同有可能会将其转换为反斜线“\”,这也是不同的字符集之间的变换导致的漏洞。在 4.4 节里介绍过的 JVN#5974872315 也是由这种原因引起的问题。

    到目前为止,我们已经对字符编码处理中常见的引发系统漏洞的原因进行了说明,从下一节开始我们将讲述一下如何正确处理字符编码。

12 http://technet.microsoft.com/en-us/security/bulletin/ms00-057

13 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-2938

14 Tomcat Security Team 认为这并不是 Tomcat 的问题而是 JRE 的问题。

15 http://jvn.jp/jp/JVN59748723/index.html

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文