Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Feb 1998 09:19:21 -0800
From:      Cy Schubert - ITSD Open Systems Group <cschuber@uumail.gov.bc.ca>
To:        "David E. Tweten" <tweten@frihet.com>
Cc:        Cy Schubert - ITSD Open Systems Group <cschuber@uumail.gov.bc.ca>, Robert Watson <robert+freebsd@cyrus.watson.org>, freebsd-security@FreeBSD.ORG
Subject:   Re: Find, Rm, and Root's Crontab 
Message-ID:  <199802241720.JAA19354@passer.osg.gov.bc.ca>
In-Reply-To: Your message of "Tue, 24 Feb 1998 08:02:34 PST." <199802241602.IAA03017@ns.frihet.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> cschuber@uumail.gov.bc.ca said:
> >Try the -delete flag of find.
> 
> Perhaps I ought to read TFM next time ...  Looks like this handles the rm 
> half of the root-find-and-rm security hole.
> 
> The original explanation featured two problems.  The rm problem is that it 
> follows directory symbolic links, even when find does not.  Since find (as 
> used for junk file cleaning) calls rm with a full path, rather than a 
> current- directory-relative file name, a properly timed directory symbolic 
> link insertion (after found and before rm'ed) can cause root to delete an 
> unintended file.
> 
> Since the find "-delete" option operates relative to find's current 
> directory, it seems to me it should completely handle that part of the 
> problem.  Do you have any idea why the commented-out finds in /etc/daily 
> haven't been changed to use "-delete" instead of "rm -f {} ;\"?
> 
> >It is not atomic so a race condition, though much smaller, still exists.
> 
> Care to expand on that?  What is the race, and how could a cracker exploit 
> it?  The find documentation on "-delete" looks pretty safe to me.

A race condition can exist because the time it takes, however small, 
between finding a file that should be deleted and issuing the remove(3) 
or unlink(2) call.  The instruction stream in find could be interrupted 
and another process, possibly a process racing with find to insert a 
symlink into the tree, could get control.  Giving find a high priority 
would help but is no guarantee either.

I suppose /etc/daily could be changed to use -delete and have a comment 
(warning) indicating that this is unsafe.

> 
> Of course, all this still leaves find vulnerable to confusion while working 
> its way back out of a path that's been changed since find entered it.  That 
> part should be fixed in find.  Is anybody working on it?

How can find guarantee that the directory tree hasn't changed since it 
entered it?

> -- 
> David E. Tweten           |  2047-bit PGP fingerprint:  |  tweten@frihet.com
> 12141 Atrium Drive        |   E9 59 E7 5C 6B 88 B8 90   |     tweten@and.com
> Saratoga, CA  95070-3162  |   65 30 2A A4 A0 BC 49 AE   |     (408) 446-4131
> Those who make good products sell products; those who don't, sell solutions.
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe security" in the body of the message



Regards,                       Phone:  (250)387-8437
Cy Schubert                      Fax:  (250)387-5766
UNIX Support                   OV/VM:  BCSC02(CSCHUBER)
ITSD                          BITNET:  CSCHUBER@BCSC02.BITNET
Government of BC            Internet:  cschuber@uumail.gov.bc.ca
                                       Cy.Schubert@gems8.gov.bc.ca




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe security" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802241720.JAA19354>