Path Traversal (directory traversal) to atak, w którym napastnik manipuluje ścieżką pliku, na przykład sekwencją ../, aby odczytać pliki spoza katalogu, do którego aplikacja powinna mieć dostęp.
Jak działa Path Traversal?
Gdy aplikacja buduje ścieżkę z danych użytkownika, wpisanie ../../etc/passwd może wyprowadzić poza katalog bazowy. Skutkiem bywa wyciek plików konfiguracyjnych, haseł i kodu źródłowego.
Jak się chronić?
- nie przekazuj nazw plików z danych wejściowych wprost do funkcji plikowych,
- normalizuj ścieżkę i sprawdzaj, czy mieści się w katalogu bazowym,
- używaj listy dozwolonych plików lub identyfikatorów,
- ogranicz uprawnienia procesu serwera.
Path Traversal a wgrywanie plików
Ten sam błąd występuje przy zapisie, gdy nazwa wgranego pliku zawiera ścieżkę. Dlatego przy wgrywaniu generuj własne nazwy plików i kontroluj ich typ.
Przykład bezpiecznej obsługi pliku
Zamiast przyjmować nazwę pliku z adresu, przyjmij identyfikator i odczytaj z bazy właściwą ścieżkę. Jeśli nazwa musi pochodzić od użytkownika, zamień ścieżkę na kanoniczną funkcją systemową i sprawdź, czy zaczyna się od katalogu bazowego. Serwer WWW powinien działać na koncie z minimalnymi uprawnieniami, aby nawet udany atak nie odsłonił plików systemowych.
Podobnie jak przy zabezpieczaniu aplikacji przed SQL Injection, podstawą ochrony jest traktowanie wszystkich danych od użytkownika jako niezaufanych.
Zobacz w praktyce
Jak zabezpieczyć aplikację przed SQL Injection
Ochrona przed atakami Brute Force - najlepsze praktyki
Jak bezpiecznie przechowywać hasła użytkowników w bazie danych