Symlink race – atak na uprzywilejowaną aplikację nieprawidłowo przeprowadzającą operacje na plikach.
Szczegóły techniczne Celem ataku wykorzystującego zjawisko symlink race jest sprowokowanie uprzywilejowanej aplikacji, takiej jak daemon lub program setuid, do odczytania, zapisania, lub zmiany statusu pliku, do którego użytkownik przeprowadzający atak nie ma normalnie dostępu (np. należących do innych użytkowników).
Symlink race (w polskim tłumaczeniu: wyścig związany z łączami symbolicznymi), to sytuacja, w której programista błędnie zakłada atomowość zachodzących po sobie operacji sprawdzenia statusu pliku oraz operacji na pliku (np. odczyt, zapis, utworzenie, usunięcie).
Przykład Proces foo, wykonywany z uprawnieniami superużytkownika tworzy w niebezpieczny sposób plik tymczasowy /tmp/temp, wcześniej sprawdzając czy taki plik istnieje w systemie plików (i w takim przypadku kończąc działanie procesu). Jeżeli atakującemu uda się spowodować wywłaszczenie przez system operacyjny procesu foo i w tzw. międzyczasie stworzyć dowiązanie /tmp/temp do nieistniejącego w tym momencie pliku, np. /etc/cron.d/bar, wtedy wznowiony proces foo utworzy plik /etc/cron.d/bar. Jeżeli atakujący ma wpływ na dane zapisywane do /tmp/temp - np.