Security Bug w ftpd-BSD ???

Robert R. Wal rrw w hell.pl
Śro, 22 Sie 2001, 23:08:45 CEST


On 01.08.22 Marcin Chojnowski pressed the following keys:

> Loguje sie, jako anonymous (ftp) wchodze do katalogu.
> 
> OK jestem mtam
> 
> W tym czasie (na innej konsoli) przenoszę ten katalog (jako root) w
> inne miejsce
> 
> Wracam teraz do sesji ftp
> robię ls
> 
> ftpd nadal mi wyświetla jakby ten katalog istniał ( a nie ma ani
> plików ani katalogu). Normalnie powinien krzyczeć path not found
> albo coś.
> 
> No i teraz robię cd .. i ftpd przenosi mnie do katalogu do KTÓREGO
> PRZENIOSŁEM TEN KATALOG z drzewa FTP.
> 
> I normalnie można śmigać i grzebać po plikach.
> 
> Ktoś ma tak samo ???

Siedzi baca na gałęzi i piłuje tę gałąź. Przechodzi turysta i krzyczy
,,Baco, a to spadniecie!''. ,,Iiiitam'', powiedział baca i dalej piłować
tę gałąź. Po pewnym czasie traszk, jebut, baca rozciera obolałe kości i
pod nosem bełkocze: ,,Prorok jakiś, cycuś...?''

A poważniej:

ftpd (jak każdy program) ma swój katalog bieżący, który uzyskać można
przez użycie funkcji getcwd(3), a zmienić przez chdir(2).  Teraz uwaga:
tenże katalog nie jest pamiętany poprzez jego nazwę czy umiejscowienie w
filesystemie, tylko przez jego numer i-node'a.

I teraz jeśli przesuniesz katalog w inne miejsce, to zmienia się jego
nazwa (ścieżka do niego prowadząca) ale nie zmienia się numer i-node'a.
Możnaby to obejść, implementując eftepowe polecenie CWD jako chdir(2) od
roota, składając ścieżkę z pamiętanego, a nie odczytanego currdir, ale
niepotrzebnie komplikowałoby to sprawę, nie dając nic wzamian -- zawsze
może się ktoś sprzeczać, że zrobił:

   mv ~ftp /home

a ftpd po poleceniu ,,CWD /'' WYSZEDŁ Z CHROOTA, bo wyświetlił zawartość
katalogu, który nie jest już w /var/spool/ftpd tylko w /home/ftpd (tylko
przykład).

Administrator, swoim bezmyślnym działaniem może otworzyć tysiace innych
dziur w systemie i nie da się tego w żaden sposób załatać.

Robert

-- 
Bastard Operator From 149.156.96.35



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