711 contra 755

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Wto, 19 Sty 1999, 16:54:42 CET


On Tue, 19 Jan 1999, Krzysztof G. Baranowski wrote:

> On Mon, 18 Jan 1999, Tomasz Kłoczko wrote:
> > W kwestii SbO wyłożyłem już argumenty na braku zsasadność stosowania tej
> > taktyki i nie mam już nic tu do dodania.
[..]
> Neale Banks writes:
> > You are proposing that some significant security is obtained by making
> > an executable file unreadable?
> 
> Here's a sample session under Solaris:
> 
>    # head -1 > login.c
>    static char secret[10]; main() { read(0,secret,10); setuid(1); sleep(60); }
>    # gcc -o login login.c
>    # echo OSSIFRAGE | ./login &
>    25145
>    # nm login | grep secret
>    [35] |    133268|      10|OBJT |LOCL |0    |17     |secret
>    # su daemon -c '(lseek 133268; dd bs=10 count=1) < /proc/25145'
>    OSSIFRAGE
>    1+0 records in
>    1+0 records out
> 
> That's right: tracing is allowed even though there hasn't been an exec.
> Many programs that use setuid() can be exploited this way. For example,
> you lose all security if you use the chdir()/setuid() mechanism
> suggested by Steve Bellovin and Gene Spafford.
[..]
>    # chmod 711 login
>    # su daemon -c ': < /proc/25145'
>    su: /proc/25145: cannot open

W porzadku. Zalozmy, ze w programie XX jest dziura polegajaca na tym, ze
przy sledzeniu samego programu mozna wyzyskac z dane, ktore sa
udostepniane tylko na potrzeby tego programu, a ktore sledzacemu normalnie
nie sa dostepne. W sytuacji kiedy uzytkownik nie ma praw odczytu do
binarki nie moze jej namierzyc bezposrednio. Niemniej w przypadku Linuxa
moze sobie sciagnac binarke skadkolwiek (a nawet xrodla) i przeczesac co
tylko bedzie chcial zeby znalezc blad. Co wiecej w przypadku powyzszym
przez to, ze Solaris jest publicznie dostepny dla .edu po kosztach nosnik
lub kopiowania z publicznegop ftp blad pozostaje bledem i usuwa sie go
poprzez wypuszczenie kolejnej wersji programu XX zeby go usunac.
Powiedzialbym, ze warunki w krorych znajdywanie bledow jest jak
najlatwiejsze na dluzsza mete procentuje wiekszym bezpieczenstwem calosci.

Kolejna sprawa, ze opisany blad dotyczy bledu na poziomie kernela. Kolejny
argument przeciw jest taki, ze z tego co wiem to powyzszy przyklad nie
jest mozliwy do zrealizowania w przypadku Linuxa.

Dzialania typu zmienianie perm na 711 to terapia objawowa, ktora powoduje
minimalizacje skutkow wynikajacych z istnienia bledu, a nie jego usuwanie.
Tego typu podejscie bylo dosc dlugo i wielokrotnie dyskutowane na
kernel-list. SbO powoduje, ze cisnienie na developerow zeby pisac programy
poprawnie jest mniejsze, a takze w momencie wykrycia bledu jest mniejsza
motywacja do tego zeby usunac blad natychmiastowo.

Blad pozostaje bledem nawet jezeli postawi sie przy nim warte 24h/dobe.

kloczek
-- 
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl