CVE-2018-18820漏洞分析

栏目: 编程工具 · 发布时间: 5年前

内容简介:研究人员发现xiph.org基金会支持的开源流媒体服务器版本号为2.4.0到2.4.3的Icecast服务器和使用URL认证的Icecast服务器受该漏洞的影响。研究人员建议尽快升级到v 2.4.4。我们都知道sprintf是不安全的,因为不提供对缓冲区溢出的保护。许多文档中都说Snprintf是更安全版本的sprintf,但如果缓冲区太小,输出就会变短。但我们不清楚的是如果输出缩短,snprintf就不会返回写的字节。事实上,如果输出缓存足够大,那么返回的是已经写入的字节数。如果提供一个大于缓冲区大小的

研究人员发现xiph.org基金会支持的开源流媒体服务器 Icecast 的漏洞。攻击者可以伪造HTTP header来覆写服务器的栈内容,导致远程代码执行漏洞。因为Icecast常用于网络电台,所以攻击者利用该漏洞可以完全控制网络电台。该漏洞的CVE编号为 CVE-2018-18820

版本号为2.4.0到2.4.3的Icecast服务器和使用URL认证的Icecast服务器受该漏洞的影响。研究人员建议尽快升级到v 2.4.4。

Snprintf

我们都知道sprintf是不安全的,因为不提供对缓冲区溢出的保护。许多文档中都说Snprintf是更安全版本的sprintf,但如果缓冲区太小,输出就会变短。但我们不清楚的是如果输出缩短,snprintf就不会返回写的字节。事实上,如果输出缓存足够大,那么返回的是已经写入的字节数。如果提供一个大于缓冲区大小的size参数,根本无法应对缓冲区溢出。

下面是来自Icecast的有漏洞的代码:

在来自用户请求的HTTP header之上循环,并复制到缓冲区,构建一个发送到认证服务器的POST请求主体:

post_offset += snprintf(post + post_offset,                        
 sizeof(post) - post_offset,                        
 "&%s%s=%s",
                        
                     url->prefix_headers ? url->prefix_headers : "",
                         cur_header, header_valesc);

下面是代码的简化版:

post_offset += snprintf(post + post_offset,
                        sizeof(post) - post_offset,
                        "%s",
                        cur_header);

如果sizeof(post)的大小是10,那么就写入了8字节。那么如果下一个复制的header是baz会怎么样呢?

CVE-2018-18820漏洞分析

输出会变短,但post_offset在缓存的尾部会递增:

CVE-2018-18820漏洞分析

下面设想另一个复制的header内容为“AAAAA…”。 到snprintf的size参数是sizeof(post) – post_offset,这会下溢变成一个非常大的数。结果就是之后对snprintf的调用会有效地写入尽可能多的数据。数据会被写入post + post_offset,可能会超出post缓存的范围,那么就会覆盖栈中的其他内容。

CVE-2018-18820漏洞分析

也就是说我们可以发送一个随后会被缩短的长HTTP header,但是长度可以让我们定位栈中的任何位置post_offset。然后,可以发送第二个HTTP header,其内容会被写入定位的位置。

对攻击者来说,比较难的一点是header在复制到snprintf之前会进行处理,所以限制在可以写入到栈中的数据。研究人员的POC漏洞利用可以引发服务器进程段错误(segfault),类似DoS攻击。但研究人员认为攻击者可以对该攻击进行升级来获得完全远程代码执行。

修复

Xiph很快对漏洞进行了回应,并发布了补丁。补丁非常简单,检查了snprintf的返回值,如果使post_offset指向缓冲区的尾部,就记录错误并退出循环。


以上所述就是小编给大家介绍的《CVE-2018-18820漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻松学算法

轻松学算法

赵烨 / 电子工业出版社 / 2016-7 / 69.00元

《轻松学算法——互联网算法面试宝典》共分为12 个章节,首先介绍了一些基础的数据结构,以及常用的排序算法和查找算法;其次介绍了两个稍微复杂一些的数据结构——树和图,还介绍了每种数据结构和算法的适用场景,之后是一些在工作与面试中的实际应用,以字符串、数组、查找等为例介绍了一些常见的互联网面试题及分析思路,便于读者了解这些思路,顺利地通过互联网公司的面试;最后介绍了一些常见的算法思想,便于读者对今后遇......一起来看看 《轻松学算法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具