The OpenNET Project
 
Search (keywords):  SOFT ARTICLES TIPS & TRICKS SECURITY
LINKS NEWS MAN DOCUMENTATION


GNU rm fileutils race condition problems on SuSE


<< Previous INDEX Search src Set bookmark Go to bookmark Next >>
Date: Thu, 16 May 2002 13:43:25 +0200
From: Paul Starzetz <[email protected]>
To: [email protected], [email protected], [email protected]
Subject: GNU rm fileutils race condition problems on SuSE

Hi,

the following issue has been reported to SuSE about 2 months ago:


1. Problem description
----------------------

There is an exploitable call to the vulnerable rm -rf command in 
/etc/cron.daily/aaa_base_clean_core as follows:

#
# paranoia settings
#
umask 022

PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
TMPDIR=/var/tmp/cron.daily.$$
rm -rf $TMPDIR


This script is run every day as ROOT even if the user didn't set the 
DELETE_OLD_CORE variable in /etc/rc.config!


2. Details
----------

As pointed out by Wojciech Purczynski <mailto:[email protected]> 
<[email protected] <mailto:[email protected]>> there is a race condition in the 
GNU 'rm' utility while removing directories recursively. In particular 
it is possible to create a deply nested directory structure in /tmp, 
 wait for removal of one of the leafs and quickly move the directory 
root 2 levels up. This will force rm to chdir("..") two levels more than 
intended, resulting in the removal of the complete file system.

An exploit code will not be released, but exploitation is very 
straightforward, since the race window can be made mostly as big as 
needed (it is even possible to exploit this vulnerability 'by hand'). 
One needs to create a directory structure like this:

/tmp/cron.daily.PID/root/1/2/3/4/5/6/7/8/......./N
                        /(N+1)/(N+2)/.........../2*N
                        .........................

and wait for the removal of the 'N' leaf. This can be easiliy 
acomplished since the clean_core script is called at a very well defined 
time (between 0:15:00 and about 0:15:15 every day) - so we can create X 
of those nested directories, wait until 15:00, get the next pid and 
begin to move those directories to match the next X pids. Guessing the 
next pid can be done by reading /proc/stat and evaluating the 
'processes' entry (or less elegant by continuous forking :-).


3. Impact
-----------

This vulnerability leads to a denial of service attack on SuSE Linux 
systems. As far as tested SuSE Linux <= 7.3 seems to be vulnerable. The 
8.0 release has not been tested yet.


/ih


<< Previous INDEX Search src Set bookmark Go to bookmark Next >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру