proces foo jest programem diagnostycznym, indeksującym pliki użytkowników - może dojść do niebezpiecznej sytuacji – eskalacji uprawnień atakującego użytkownika.
Log wywołań systemowych procesu foo: access("/tmp/temp", F_OK) = -1 ENOENT (No such file or directory) w tym miejscu następuje wywłaszczenie procesu foo, a atakujący tworzy dowiązanie symboliczne /tmp/temp, wskazujące na /etc/cron.d/bar creat("/tmp/temp", 0300) = 3 plik /etc/cron.d/bar został utworzony, wartością jego deskryptora pliku w ramach procesu jest 3
Obrona Obrona przed zagrożeniami powodowanymi przez zjawisko symlink race sprowadza się do używania bezpiecznych kombinacji funkcji. Np. w systemach uniksowych należy korzystać z funkcji open(2) z flagą O_EXCL (lub z jej wrapperów znajdujących się w bibliotece libc, np. mkstemp(3)) w miejsce sekwencji wywołań access(2) oraz creat(2).
Nie zawsze obrona ta musi być skuteczna. Przykładem jest sieciowy system plików NFS, dla którego nieuwzględniana jest flaga O_EXCL w wywołaniu systemowym open(2).
Kategoria:Cyberataki