Samba漏洞NSA免疫工具上线了,目前发现有10万多万台电脑运行着易受攻击版本的Samba软件,这种免费网络软件是面向基于Linux和Unix系统运行的电脑而开发的,请使用该软件的同学们尽快进行升级操作,避免电脑中招!
2015年2月23日,Red Hat产品安全团队发布了一个Samba服务端smbd的漏洞公告,该漏洞编号为CVE-2015-0240,几乎影响所有版本。
该漏洞的触发并不需要通过Samba服务器的账号认证,而smbd服务端通常以root权限运行,如果漏洞能够被用来实现任意代码执行,则攻击者可以远程获取系统root权限,危害极其严重,因此该漏洞的CVSS评分也达到了10。
该漏洞的基本原理是栈上未初始化的指针被传入TALLOC_FREE()函数。想要利用这个漏洞,首先需要控制栈上未初始化的数据,这和编译生成的二进制文件中栈的布局有关。
因此少数国外的安全研究人员针对不同Linux发行版上的二进制文件做了分析,其中Worawit Wang(@sleepya_)给出了较好的结果,他证实了在Ubuntu 12.04 x86 (Samba 3.6.3)和Debian 7 x86 (Samba 3.6.6)中,这个漏洞是可以被用来实现远程代码任意执行的,参考中的注释。
之后,英格兰老牌安全公司NCC Group的研究人员给出了漏洞利用的思路 [4],但是也未给出利用细节和exploit代码。
如官方所描述,该漏洞只需要通过一个可写入的Samba用户权限就可以提权到samba所在服务器的root权限(samba默认是root用户执行的)。
从Patch来看的话,is_known_pipename函数的pipename中存在路径符号会有问题:
再延伸下smb_probe_module函数中就会形成公告里说的加载攻击者上传的dll来任意执行代码了:
具体攻击过程:
1.构造一个有’/’ 符号的管道名或路径名,如 “/home/toor/cyg07.so”
2.通过smb的协议主动让服务器smb返回该FID
3.后续直接请求这个FID就进入上面所说的恶意流程
具体攻击结果如下:
1.尝试加载 “/home/toor/cyg07.so” 恶意so
2. 其中so 代码如下(加载时会调用 samba_init_module 导出函数)
3. 最后我们可以在/tmp/360sec中看到实际的执行权限(带root权限)
360网络安全响应中心和360信息安全部建议使用受影响版本的用户立即通过以下方式来进行安全更新操作,
1.使用源码安装的Samba用户,请尽快下载最新的Samba版本手动更新;
2.使用二进制分发包(RPM等方式)的用户立即进行yum,apt-get update等安全更新操作;
缓解策略:用户可以通过在smb.conf的[global]节点下增加 nt pipe support = no 选项,然后重新启动samba服务, 以此达到缓解该漏洞的效果。