您的位置:首页 > 数据库 > Memcache

Memcached远程代码执行漏洞预警与检测修复

2016-11-03 06:31 681 查看

一、漏洞基本信息

CVE编号:

CVE-2016-8704 - Memcached Append/Prepend 远程代码执行漏洞

CVE-2016-8705 - Memcached Update 远程代码执行漏洞

CVE-2016-8706 - Memcached SASL身份验证远程代码执行漏洞

漏洞发布日期:2016.10.30

受影响的软件及系统:Memcached < 1.4.33

漏洞概述:利用该漏洞黑客可以窃取在Memcached中存放的业务数据,或导致Memcached服务崩溃从而造成拒绝服务等危害,同时可导致远程代码执行,攻击者可以通过向服务器发送一个精心构造的Memcached命令实现该漏洞的利用。此外,这些漏洞还可以泄露敏感的进程信息,并且可以多次触发,利用这些敏感的进程信息,攻击者可以绕过像ASLR等常见的漏洞缓解机制。

二、漏洞原理分析

   memcached是一个自由开源的,高性能,分布式内存对象缓存系统。它是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。本质上,它是一个简洁的key-value存储系统。

   一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
2016年10月31日Memcached发布安全补丁修复多个远程代码执行漏洞,利用该漏洞黑客可以窃取在Memcached中存放的业务数据,或导致Memcached服务崩溃从而造成拒绝服务等危害,安全客提醒用户应当及时升级官方版本至1.4.33版本。

   虽然Memcached文档中已经强烈建议将Memcached服务配置在可信任的网络环境中,但是仍有大量的Memcached服务可以在公网中直接访问。
此外,即使Memcached部署在内网中,企业的安全管理人员仍然不能忽视此次更新的安全问题,黑客可能通过内网渗透、SSRF漏洞等,直接对部署在内网的服务发起攻击。
 这些漏洞存在于用于插入(inserting)、附加(appending,)、前置(prepending)、修改键值对的函数中,在SASL身份验证位置也存在问题。利用数据类型的不一致性触发整数溢出,再由整数溢出导致堆溢出。其运行流程也极其相似,都是先由dispatch_bin_command函数来读取conn中的数据,并将conn->state设置为conn_nread,最后通过不同的substate来对应完成不同的功能。所以,如果不想对每个函数进行改正的话,可以通过在dispatch_bin_command开始对输入进行验证来修补这3个漏洞,这样做的好处是,通过这个补丁可以将可能出现的类似原因和流程的同类型漏洞一次性封杀。

三、漏洞检测方法

1 网上在线检查

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?service_id=1026

2、手动直接检测

lsb_release -apkg -l | grep -i memcached # 在debian等系列  

rpm -qa | grep -i memcached  # 在redhat、centos、ubuntu等系列
# 根据版本的大小进行匹配。

3Web指纹处检索“phpmyadmin”

“端口与服务”检索服务“memcached”,检查互联网侧是否打开了memcached
服务

4 使用POC进行检验

POC下载链接:链接:http://pan.baidu.com/s/1o7KLFJW 密码:od8u
请阅读里面的readme.txt文件,进行验证。

四、漏洞修复方案

1.升级官方最新版本:1.4.33版本 http://www.memcached.org/files/memcached-1.4.33.tar.gz 2.限制Memcached 11211端口访问权限(如:禁止外网访问、仅限特定端口访问)
3.缓解措施:
对memcache进行加固处理,加固方法如下:

安全启动 

新建操作系统普通账号安全运行memcache,禁止以管理员(root)权限运行 #useradd memcached -d /home/memcached -m           #新建普通用户

限制memcache只监听内网IP "#/usr/local/memcached/bin/memcached -u memcached -l 内网IP地址  #启动服务 

备注:内网IP地址请自行修改,一般限制为web服务器的内网IP地址"

端口访问限制 

Memcached没有配置认证选项,未授权用户可直接获取数据库中所有信息,必须根据最小化原则对端口和IP进行限制 "#iptables -A INPUT -p tcp -s 来源IP地址 --dport 11211 -j ACCEPT

#iptables -A INPUT -p tcp --dport 11211 -j DROP

#iptables -A INPUT -p udp --dport 11211 -j DROP

注:来源IP地址请自行根据需要修改;memcached默认监听端口为11211(TCP&UDP),若业务修改成其他端口,这里也要作对应修改;禁止UDP访问。"

五、漏洞修复结果验证

参考【三、漏洞检测方法】

六、参考资料

https://github.com/memcached/memcached/wiki/ReleaseNotes1433
http://blog.talosintel.com/2016/10/memcached-vulnerabilities.html http://www.talosintelligence.com/reports/TALOS-2016-0219/ http://www.talosintelligence.com/reports/TALOS-2016-0220/ http://www.talosintelligence.com/reports/TALOS-2016-0221/ http://bobao.360.cn/learning/detail/3151.html
欢迎大家分享更好的思路,热切期待^^_^^ !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: