Skip to main content
idego

Luki bezpieczeństwa przy przesyłaniu plików

Autor: Idego Group

Luki bezpieczeństwa przy przesyłaniu plików

Przesyłanie plików to częsta funkcja aplikacji webowych. Jednak wielu programistów błędnie uważa, że zadanie kończy się w momencie, gdy plik pomyślnie dotrze do serwera. Ten błąd tworzy luki bezpieczeństwa, które wykorzystują cyberprzestępcy. Prawdziwe ukończenie wymaga spełnienia dwóch warunków: przesyłanie kończy się sukcesem ORAZ odbywa się w bezpieczny sposób.

Obejścia oparte na rozszerzeniach

Programiści powszechnie weryfikują typy plików poprzez sprawdzanie rozszerzeń za pomocą białych lub czarnych list. Jednak te podejścia mają słabości. Wzorce regex uwzględniające wielkość liter pozwalają na przesyłanie plików takich jak shell.pHp z pominięciem ograniczeń. Nieprawidłowo zakotwiczone wzorce dopuszczają pliki jak shell.php.jpg. Skracanie nazw plików może skutkować plikiem kończącym się na .php zamiast .jpg.

Wstrzykiwanie bajtu null

Zmiana nazwy pliku na shell.php%00.jpg wykorzystuje sposób, w jaki niektóre języki traktują bajty null jako terminatory, pozwalając na wykonanie PHP mimo pozornego zakończenia na .jpg.

Zagrożenia SVG i XML

Pliki SVG to dane XML podatne na ataki cross-site scripting (XSS) z zapisem. Złośliwy JavaScript osadzony w plikach SVG wykonuje się, gdy użytkownicy je pobierają.

Przemierzanie katalogów

Nazwy plików takie jak ../../../etc/passwd mogą nadpisywać krytyczne pliki serwera. Ochrona wymaga używania losowo generowanych nazw plików z oryginalnymi nazwami przechowywanymi oddzielnie jako metadane.

Odmowa usługi

Równoległe przesyłanie dużych plików wyczerpuje zasoby serwera lub przestrzeń dyskową. Walidacja rozmiaru pliku zapewnia niezbędną ochronę.

Fałszowanie Content-Type

Nagłówek Content-Type można łatwo manipulować za pomocą narzędzi przechwytujących. Interpretacja serwera opiera się na rzeczywistej zawartości pliku, a nie na nagłówkach.

Obejście numeru magicznego

Atakujący dołączają prawidłowe sygnatury plików, takie jak GIF89a, do złośliwych plików, aby oszukać systemy walidacji numerów magicznych.

Wstrzykiwanie poleceń

Gdy nazwy plików są przekazywane do binarnych plików systemowych, nazwy takie jak file;whoami;pwd.jpg umożliwiają wykonanie poleceń. Losowe nazwy plików eliminują to ryzyko.

Zalecenia bezpieczeństwa

Programiści powinni unikać całkowitego ufania danym wprowadzanym przez użytkowników. Wdrożenie wyspecjalizowanego oprogramowania do walidacji, utrzymywanie zaktualizowanych zależności i ocena wielu czynników walidacji wzmacniają mechanizmy obronne.

Powiązane artykuły