Samba is a package which allows UNIX systems to act as file servers for Windows computers. It also allows UNIX systems to mount shares exported by a Samba/CIFS/Windows server. smbmount is a program in the Samba package which allows normal users on a UNIX system to mount remote shares. smbprint is an example script included in the Samba package which can be used to facilitate network printing.
Two vulnerabilities have been discovered in Samba. The first vulnerability allows a local user who has access to the smbmount command to gain root. An attacker could place a setuid-root binary on a Samba share/server he or she controls, and then use the smbmount command to mount the share on the target UNIX box. The remote Samba server must support UNIX extensions for this to work. This has been fixed in version 3.0.2a.
The second vulnerability is in the smbprint script. By creating a symlink from /tmp/smbprint.log, an attacker could cause the smbprint script to write to an arbitrary file on the system. This has been fixed in version 3.0.2a-r2.
Local users with access to the smbmount command may gain root access. Also, arbitrary files may be overwritten using the smbprint script.
To workaround the setuid bug, remove the setuid bits from the /usr/bin/smbmnt, /usr/bin/smbumount and /usr/bin/mount.cifs binaries. However, please note that this workaround will prevent ordinary users from mounting remote SMB and CIFS shares.
To work around the smbprint vulnerability, set "debug=no" in the smbprint configuration.
All users should update to the latest version of the Samba package.
The following commands will perform the upgrade:
# emerge sync
# emerge -pv ">=net-fs/samba-3.0.2a-r2"
# emerge ">=net-fs/samba-3.0.2a-r2"
Those who are using Samba's password database also need to run the following command:
# pdbedit --force-initialized-passwords
Those using LDAP for Samba passwords also need to check the sambaPwdLastSet attribute on each account, and ensure it is not 0.