| Termin | Definicja |
|---|---|
| MIME confusion | MIME confusion to rozbieżność między deklarowanym typem zawartości a rzeczywistą postacią pliku, wykorzystywana do obejścia filtrów. MIME confusion — czym jest rozbieżność typu plikuMIME confusion oznacza sytuację, w której różne elementy systemu odmiennie rozpoznają ten sam plik lub tę samą odpowiedź przesyłaną przez sieć. Jeden komponent może kierować się rozszerzeniem nazwy, inny nagłówkiem HTTP, a jeszcze inny analizować kilka pierwszych bajtów zawartości. W rezultacie dane przedstawiane jako obraz, dokument, archiwum albo zwykły tekst mogą w praktyce zawierać inną postać informacji. Taka niezgodność sama w sobie nie zawsze oznacza atak, lecz staje się ryzykowna wtedy, gdy decyzja o przyjęciu, zapisaniu lub uruchomieniu pliku jest podejmowana na podstawie słabszego albo łatwego do zmiany oznaczenia. Typ MIME, nazywany także media type, jest opisem przeznaczenia danych. Przykładowo przeglądarka może otrzymać informację, że odpowiedź zawiera obraz, dokument PDF, kod JavaScript lub zwykły tekst. W środowisku internetowym taki opis może być przekazywany w nagłówku Problem może dotyczyć zarówno przesyłania plików do formularza, jak i pobierania zasobów z witryny. Jeżeli filtr dopuszcza wyłącznie określone formaty, lecz rozpoznaje je tylko po nazwie albo deklarowanym nagłówku, zmieniona etykieta może wystarczyć do przejścia przez kontrolę. Następnie inny moduł może potraktować zapisane dane jako kod wykonywalny, szablon, skrypt lub treść możliwą do interpretacji przez przeglądarkę. Dlatego poprawna walidacja powinna odnosić się do rzeczywistej zawartości i przewidywanego sposobu użycia pliku, a nie tylko do jego nazwy. MIME confusion a kontekst techniczny i różne sposoby rozpoznawaniaW analizie należy odróżnić kilka warstw. Rozszerzenie, takie jak Różnice w rozpoznawaniu są szczególnie istotne, gdy po drodze występują serwer internetowy, moduł ochrony, system przechowywania plików, przeglądarka oraz aplikacja użytkowa. Każdy z tych elementów może mieć własne reguły. Jeden może uznać dane za bezpieczny obraz, drugi zapisze je pod nazwą przesłaną przez użytkownika, a trzeci udostępni z katalogu, w którym serwer interpretuje określone rozszerzenia jako polecenia. Taki łańcuch zaufania tworzy przestrzeń dla błędu, nawet jeśli pojedyncze komponenty zostały zaprojektowane z myślą o ochronie. Nie należy mylić MIME confusion z samym błędnym opisem pliku. Nie każda niezgodność prowadzi do wykorzystania podatności. Znaczenie ma to, czy różne klasyfikacje zmieniają sposób przetwarzania danych. Inaczej ocenia się dokument przechowywany poza katalogiem publicznym, inaczej obraz wyświetlany jako nieaktywna treść, a jeszcze inaczej plik dostępny z lokalizacji, w której serwer może uruchamiać określone typy zawartości. Weryfikacja powinna zatem obejmować pełny przepływ: przyjęcie, zmianę nazwy, zapis, udostępnienie i otwarcie. Ważnym elementem ochrony jest ograniczenie możliwości nadawania znaczenia danym użytkownika. Nazwa pliku powinna być generowana po stronie aplikacji, a pliki powinny być przechowywane w odseparowanej lokalizacji, najlepiej poza bezpośrednim katalogiem publikowanym przez serwer. Przy udostępnianiu warto ustalić typ na podstawie zweryfikowanej zawartości, wymusić bezpieczne nagłówki oraz uniemożliwić automatyczne wykonywanie przesłanych danych. Odmienne mechanizmy rozpoznawania należy traktować jako potencjalne źródło rozbieżności, a nie jako niezależne potwierdzenia bezpieczeństwa. MIME confusion — typowe problemy i objawy błędnej interpretacjiJednym z częstych problemów jest filtr sprawdzający wyłącznie końcówkę nazwy. Plik może wyglądać jak dozwolony dokument, mimo że jego rzeczywista struktura nie odpowiada deklarowanemu formatowi. Innym wariantem jest przyjmowanie wartości nagłówka przesłanej przez klienta bez porównania z zawartością. W obu przypadkach kontrola zostaje oparta na informacji, którą można zmienić przed wysłaniem. Ryzyko rośnie, gdy po zapisaniu plik zachowuje pierwotną nazwę lub trafia do katalogu obsługiwanego przez interpreter. Problemy mogą także wynikać z niejednoznacznych nazw. Podwójne rozszerzenia, nietypowe znaki, spacje, wielkość liter oraz znaki sterujące mogą być różnie obsługiwane przez system plików, bibliotekę i serwer. Jeden element może uznać część nazwy za rozszerzenie, a inny odczytać ją inaczej. W środowiskach wieloplatformowych dodatkową trudność stanowią odmienne reguły ścieżek, kodowania znaków i normalizacji nazw. Nieprawidłowości nie muszą być widoczne podczas zwykłego korzystania z aplikacji, dlatego potrzebne są testy obejmujące nietypowe, lecz kontrolowane dane. Oznaką nieprawidłowej obsługi może być sytuacja, w której plik otwiera się w innym programie niż przewidziano, przeglądarka wyświetla dane jako kod lub pobieranie zachowuje się odmiennie w zależności od klienta. Podejrzane jest również to, że serwer zwraca plik z innym typem niż ten ustalony podczas zapisu, albo że identyczne dane są interpretowane inaczej po zmianie nazwy. W logach warto szukać rozbieżności między nazwą przesłaną, rozpoznanym typem, ścieżką przechowywania i nagłówkami odpowiedzi. W praktyce MIME confusion może współwystępować z innymi błędami, takimi jak niebezpieczne udostępnianie plików, brak izolacji katalogów, zbyt szerokie uprawnienia lub niekontrolowane osadzanie treści w stronie. Sama poprawa nagłówka nie rozwiązuje problemu, jeśli plik nadal jest zapisywany w miejscu, gdzie może zostać wykonany. Podobnie zmiana rozszerzenia nie wystarczy, jeżeli aplikacja nadal ufa deklarowanemu typowi i przekazuje dane do niewłaściwego parsera. MIME confusion — praktyczne wskazówki dla bezpiecznej obsługi plikówPrzy projektowaniu formularza przesyłania plików należy zdefiniować zamkniętą listę rzeczywiście potrzebnych formatów. Następnie powinno się sprawdzić rozszerzenie, sygnaturę oraz strukturę danych przy użyciu odpowiedniego parsera. Żaden z tych elementów nie powinien być analizowany w oderwaniu od pozostałych. Jeśli format jest złożony, bezpieczniejsze bywa przetworzenie go do nowej, kontrolowanej postaci, na przykład ponowne zapisanie obrazu przez bibliotekę graficzną albo wygenerowanie dokumentu z zaakceptowanych danych. Nazwa pliku powinna być nadawana niezależnie od danych przesłanych przez użytkownika. Przydatne jest użycie losowego identyfikatora, przechowywanie informacji o zweryfikowanym typie w bazie oraz rozdzielenie nazwy technicznej od nazwy wyświetlanej. Dostęp do plików powinien przechodzić przez kontrolowany mechanizm pobierania, który ustawia odpowiednie nagłówki i nie pozwala na swobodne wskazywanie ścieżki. Warto również wymusić pobieranie dla formatów, które nie muszą być interpretowane w oknie przeglądarki. Po stronie serwera należy wyłączyć wykonywanie skryptów w katalogach przeznaczonych na pliki użytkowników. Uprawnienia powinny być ograniczone do zakresu niezbędnego dla aplikacji, a katalog tymczasowy i docelowy powinny mieć jasno ustalone przeznaczenie. W odpowiedziach można stosować nagłówki ograniczające zgadywanie typu przez przeglądarkę, lecz należy traktować je jako dodatkową warstwę ochrony. Najważniejsza pozostaje zgodność między walidacją, miejscem zapisu i sposobem późniejszego udostępniania. Testy powinny obejmować prawidłowe pliki, uszkodzone dokumenty, dane z fałszywym rozszerzeniem, odmienne nagłówki, podwójne rozszerzenia oraz nazwy zawierające nietypowe znaki. Należy sprawdzić zachowanie po przesłaniu, zmianie nazwy, pobraniu i otwarciu w kilku obsługiwanych klientach. Warto porównać to, co zapisuje aplikacja, z tym, co zwraca serwer. Taki test pozwala wykryć, czy któryś etap ponownie klasyfikuje dane według innej reguły niż etap wcześniejszy. MIME confusion — kiedy zgłosić się do serwisu komputerowegoWsparcie serwisowe może być przydatne, gdy problem objawia się na konkretnym komputerze, po aktualizacji systemu, zmianie przeglądarki albo instalacji programu otwierającego pliki. Zgłoszenie warto rozważyć również wtedy, gdy pliki otrzymane z poczty lub pobrane z sieci mają nietypowe rozszerzenia, są otwierane przez nieoczekiwane aplikacje albo pojawiają się komunikaty o niezgodnym formacie. W takiej sytuacji zaleca się zachowanie oryginalnego pliku, informacji o źródle oraz komunikatu błędu, bez wielokrotnego uruchamiania podejrzanej zawartości. W przypadku komputera używanego do pracy znaczenie ma odróżnienie usterki samego urządzenia od błędu konfiguracji systemu, skojarzeń plików lub oprogramowania ochronnego. Analiza może obejmować ustawienia domyślnych programów, aktualność przeglądarki, sposób pobierania załączników, uprawnienia użytkownika oraz reguły zabezpieczeń. Nie powinno się usuwać dowodów przed oceną sytuacji, zwłaszcza gdy nietypowe zachowanie powtarza się po otwarciu określonego rodzaju danych. Pomoc techniczną w Warszawie świadczy Warszawskie Pogotowie Komputerowe 24/7, a kontakt telefoniczny jest możliwy pod numerem +48 22 100 48 29. Przy zgłoszeniu można opisać rodzaj pliku, program używany do jego otwierania, moment wystąpienia problemu oraz widoczną treść komunikatu. Tak przygotowane informacje ułatwiają ustalenie, czy przyczyną jest niezgodny typ MIME, uszkodzenie danych, błędne skojarzenie aplikacji czy niewłaściwa konfiguracja systemu. |