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