Przejdź do treści głównej
INF.04Inżynieria Oprogramowania, Bezpieczeństwo i BHP

Podatność Path Traversal (Directory Traversal)

Krytyczna luka bezpieczeństwa polegająca na braku walidacji ścieżki pliku (np. sekwencji '../'), pozwalająca atakującemu odczytać lub nadpisać poufne pliki systemowe poza katalogiem głównym aplikacji.

Mechanizm ataku Path Traversal

Path Traversal (znany również jako Directory Traversal lub atak Dot-Dot-Slash ../) to luka bezpieczeństwa występująca w aplikacjach, które przyjmują nazwę lub ścieżkę pliku od użytkownika i używają jej bezpośrednio w operacjach na systemie plików bez należytej sanityzacji.

Przebieg ataku:

Aplikacja pobiera plik raportu za pomocą parametru URL:

KOD
https://serwer.pl/pobierz?plik=raport.pdf

Jeśli kod serwera wykonuje naiwne: File.ReadAllText("/var/www/uploads/" + plik), atakujący może podać:

KOD
https://serwer.pl/pobierz?plik=../../../../etc/passwd

Sekwencja ../ powoduje wyjście w górę drzewa katalogów i nieautoryzowany odczyt pliku /etc/passwd (w systemie Linux) lub C:\\Windows\\win.ini (w Windows).

Metody zabezpieczenia przed Path Traversal:

  1. Unikanie przekazywania ścieżek od użytkownika: Stosowanie identyfikatorów liczbowych (np. ?id=42) mapowanych na plik w bazie danych.
  2. Użycie bezpiecznych metod canonicalizacji: Sprawdzenie, czy kanoniczna ścieżka bezwzględna rozpoczyna się od dozwolonego katalogu bazowego:
CSHARP
string safeBaseDir = Path.GetFullPath(@"C:\app\uploads\");
string fullPath = Path.GetFullPath(Path.Combine(safeBaseDir, userInputFileName));

if (!fullPath.StartsWith(safeBaseDir, StringComparison.OrdinalIgnoreCase)) {
    throw new SecurityException("Wykryto próbę ataku Path Traversal!");
}
  1. Pobieranie wyłącznie nazwy pliku: Użycie Path.GetFileName(userInput).

Pułapki na egzaminie INF.04:

  • Path Traversal wykorzystuje sekwencję ../ (lub w systemie Windows ..\) do przechodzenia do katalogów nadrzędnych.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Podatność Path Traversal (Directory Traversal) lub rozpocznij trening.