Squid远程拒绝服务漏洞分析

暗月博客 2019年11月21日22:47:51评论350 views字数 783阅读2分36秒阅读模式
摘要

简介】
Squid Cache是HTTP 代理服务器软件。Squid用途广泛的,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。 

简介】


Squid Cache是HTTP代理服务器软件。Squid用途广泛的,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。 

2016年2月23日。Squid官方发布了安全公告,指出修复多个远程拒绝服务漏洞http://www.squid-cache.org/Advisories/SQUID-2016_2.txt),这几个漏洞危害较大,只需要一个HTTP请求即可远程DoS squid cache server。 

【分析】


笔者对其中一个漏洞补丁进行了分析,发现漏洞的缘由主要由assert函数引起的(http://www.squid-cache.org/Versions/v3/3.5/changesets/squid-3.5-13991.patch) 。

Assert函数在C程序中称为断言(assertion),用来提示一些可能存在的错误。主要用于程序调试。 


函数用法: 

#include  void assert( int exp ); 

功能: 
assert用于错误检测,如果表达式exp的结果为零(假),则向STDERR打印错误信息并退出程序(崩溃),为1(真),则程序继续运行。

Squid 程序在禁止http header 字符串大小为64KB的判断时使用的assert函数 。

 

Squid远程拒绝服务漏洞分析

 

 

另外,Squid对缓存实现了Vary机制,Vary机制是http1.1 协议的新特性,可使server端可以根据用户请求返回给用户不同的内容。Squid的vary机制大致是先对vary http头内容进行逐个压缩缓存,再通过缓存进行索引。漏洞触发的代码就发送在缓存vary头内容,利用assert对缓存内容限制在64KB。 

当攻击者发送带有超过64KB大小的Vary头的HTTP请求时,触发assert函数错误,打印错误信息,程序崩溃。

Squid远程拒绝服务漏洞分析

 

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日22:47:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Squid远程拒绝服务漏洞分析http://cn-sec.com/archives/73304.html

发表评论

匿名网友 填写信息