Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.

Slides:



Advertisements
Podobne prezentacje
Skrócona instrukcja składania wniosków o wpis do Rejestru Podmiotów Wykonujących Działalność Leczniczą z użyciem profilu zaufanego (e-PUAP) lub bezpiecznego.
Advertisements

Nowy model komunikacji z emitentami
Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Skrócona instrukcja składania wniosków o zmianę wpisu do Rejestru Podmiotów Wykonujących Działalność Leczniczą z użyciem profilu zaufanego (e-PUAP) lub.
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do języka skryptowego PHP
Bezpieczeństwo aplikacji WWW
Kamil Smitkiewicz Bezpieczeństwo w PHP.
Uwierzytelnianie i autoryzacja dostępu do portali
ISOiWUT Internetowy System Oferowania i Wyszukiwania Usług Transportowych.
SIECI KOMPUTEROWE (SieKom) PIOTR MAJCHER WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU W SOCHACZEWIE PODSTAWOWE.
WITAM NA SZKOLENIU Porady na dziś i jutro.
Damian Urbańczyk PHP Obsługa sesji.
Obsługa serwera zdalnego przez klienta FTP
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Proxy (WWW cache) Sieci Komputerowe
Systemy zarządzania treścią CMS
Inżynieria Oprogramowania
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Integracja aplikacji z Facebookiem
INTRASTAT++.
Twoje narzędzie do pracy grupowej
Prezentacja funkcjonalności dziennika e-klasa
Dokumentacja do obsługi PWI (nowa wersja aplikacji)
Prezentacja funkcjonalności dziennika e-klasa
Jak to działa? aplikacje desktopowe usługi online urządzenia
czyli jak poradzić sobie bez listonosza.
JAK ZROBIĆ STRONE WWW PIERWSZA STRONA W INTERNECIE
Zakładanie konta pocztowego Wysyłanie i odbieranie wiadomości
Instrukcja MILO moduł klienta.
TWOJA STRONA WWW NA VGH.PL MINIPORADNIK.
System zamawiania on-line
Prezentacja funkcjonalności dziennika e-klasa Moduł Wychowawcy ZAPRASZAMY!
Witaj. Zapraszamy Ciebie do zapoznania się z przewodnikiem, który pokaże jak założyć konto oraz w jaki sposób można korzystać z usług w serwisie iplay.pl.
Prezentacja i szkolenie
System raportowania, ewaluacji oraz badania satysfakcji Klienta.
System rejestracji zawodników Polski Związek Judo 2006.
Systemy zarządzania treścią Wykład 5
Wybory 2014 Szkolenie operatorów Obwodowych Komisji Wyborczych
Narzędzie wspierające zarządzanie organizacj Parentis Sp. z o. o
Serwery Aplikacji Tworzenie bezpiecznych aplikacji.
Jak dodać funkcjonalność płatności internetowej PayU do strony WWW
Projektowanie stron WWW
Kalkulator Wyborczy. Okno startowe Kalkulator w pierwszej kolejności weryfikuje, czy posiada ważne licencje. Jeżeli posiada więcej niż jedną licencję,
Logowanie do platformy PEUP
System wyborczy – web serwis Tworzenie licencji operatora.
W W W Łukasz Stochniał.
Razem tworzymy bezpieczny Internet
Projekt współfinansowany przez Unię Europejską z Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Pomoc Techniczna
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Bezpieczeństwo w sieci Internet
Projekt z Technologii Internetowych
Program edukacyjny Dzień przedsiębiorczości Działania firmy na platformie programu.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Instrukcja obsługi portalu Informacyjno-Edukacyjnego Miasta Oleśnicy
Jak wykonać prosty licznik odwiedzin strony internetowej?
Instalacja certyfikatu Dostęp do Rachunku przez Internet BS Pawłowice dla przeglądarki Mozilla Firefox.
Bartosz Pawlak Wiktor Paliwoda Bezpieczeństwo Systemów Operacyjnych IMAP vs POP.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Maciej Wierzchowski Mariusz Sołtysiak. Założenia  Autentykacja użytkownia  Autentykacja dostawcy  Zapewnienie bezpiecznego połączenia.
REFERENDUM 6 września 2015 r. WYKORZYSTANIE SYSTEMU INFORMATYCZNEGO 1
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
PODSTAWOWE ZARZĄDZANIE KOMPUTERAMI Z SYSTEMEM WINDOWS
AudaPad / AudaShare AudaShare PRO (2.8)
PROGRAMY DO KONTROLI RODZICIELSKIEJ
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Aplikacje i usługi internetowe
Zapis prezentacji:

Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services

Kontakt Michał Jankowski MJ Software Solutions Services Michał Jankowski MJ Software Solutions Services

Cel prezentacji Prezentacja monitorów ruchu sieciowego Omówienie najczęstszych błędów w aplikacjach webowych Przedstawienie sposobów zapobiegania atakom

Agenda Narzędzia Błędy

Narzędzia

Microsoft Network Monitor Wersja 3.4 – więcej nie będzie Darmowy Przechwytywanie i analiza komunikacji sieciowej Parsery dla wielu protokołów Wersja 3.4 – więcej nie będzie Darmowy Przechwytywanie i analiza komunikacji sieciowej Parsery dla wielu protokołów

Microsoft Message Analyzer Następca Microsoft Network Monitor (wymagany Microsoft Account) Obecnie w wersji Beta 2 Na razie darmowy Nowoczesny interfejs (wstążka) Analiza ruchu sieciowego, Bluetooth, USB Następca Microsoft Network Monitor (wymagany Microsoft Account) Obecnie w wersji Beta 2 Na razie darmowy Nowoczesny interfejs (wstążka) Analiza ruchu sieciowego, Bluetooth, USB

Fiddler Analiza ruchu http(s) Stworzony przez byłego programistę Microsoft (zespół IE) - Eric Lawrence Darmowy – jak dotąd (przejęty przez Teleric) Gigantyczne możliwości (tworzenie zapytań, podgląd komunikacji, statystyki, filtry) Obowiązkowy program dla każdego webdevelopera Analiza ruchu http(s) Stworzony przez byłego programistę Microsoft (zespół IE) - Eric Lawrence Darmowy – jak dotąd (przejęty przez Teleric) Gigantyczne możliwości (tworzenie zapytań, podgląd komunikacji, statystyki, filtry) Obowiązkowy program dla każdego webdevelopera

Błędy

Środowisko deweloperskie - zagrożenia Często źle skonfigurowane – bywa, że celowo (prościej i szybciej), z założenia mają też niższy poziom bezpieczeństwa (np. szczegółowe komunikaty o błędach) Mogą być łatwe do znalezienia przez wyszukiwarki internetowe (Symfony/frontend_dev.php), lub przez zwykły błąd – hardcodowany link do środowiska produkcyjnego :) Ujawnienie wrażliwych danych (struktura bazy danych, konfiguracja, użyte moduły, czasami nawet hasła!) – informacje ułatwiające kolejne ataki Bywa, że zawierają dane ze środowiska produkcyjnego! Zdarza się, że zawierają hasła do produkcyjnej bazy danych… (system kontroli wersji) Często źle skonfigurowane – bywa, że celowo (prościej i szybciej), z założenia mają też niższy poziom bezpieczeństwa (np. szczegółowe komunikaty o błędach) Mogą być łatwe do znalezienia przez wyszukiwarki internetowe (Symfony/frontend_dev.php), lub przez zwykły błąd – hardcodowany link do środowiska produkcyjnego :) Ujawnienie wrażliwych danych (struktura bazy danych, konfiguracja, użyte moduły, czasami nawet hasła!) – informacje ułatwiające kolejne ataki Bywa, że zawierają dane ze środowiska produkcyjnego! Zdarza się, że zawierają hasła do produkcyjnej bazy danych… (system kontroli wersji)

Środowisko deweloperskie - rozwiązanie Ograniczać dostęp do serwerów deweloperskich Uważać na domyślą konfigurację serwerów (konta, hasła) – często nie jest bezpieczna (dotyczy również środowiska produkcyjnego!) Usunąć bezpośredni (dostęp do bazy produkcyjnej dla programistów – tak, zdarza się!) jak i pośredni (praca na danych ze środowiska produkcyjnego) Jeśli aplikacja wymaga wstępnego wypełnienia bazy danych jakimiś wartościami, usunąć wszelkie testowe dane Nie zapisywać haseł w systemach kontroli wersji Ograniczać dostęp do serwerów deweloperskich Uważać na domyślą konfigurację serwerów (konta, hasła) – często nie jest bezpieczna (dotyczy również środowiska produkcyjnego!) Usunąć bezpośredni (dostęp do bazy produkcyjnej dla programistów – tak, zdarza się!) jak i pośredni (praca na danych ze środowiska produkcyjnego) Jeśli aplikacja wymaga wstępnego wypełnienia bazy danych jakimiś wartościami, usunąć wszelkie testowe dane Nie zapisywać haseł w systemach kontroli wersji

Obsługa błędów Nieobsłużone błędy ujawniają wrażliwe dane (strukturę bazy danych, błędy logiczne, brak walidacji) Odstraszają użytkowników Pozyskanie cennych danych do dalszych ataków Konieczna prawidłowa obsługa WSZYSTKICH sytuacji wyjątkowych Nieobsłużone błędy ujawniają wrażliwe dane (strukturę bazy danych, błędy logiczne, brak walidacji) Odstraszają użytkowników Pozyskanie cennych danych do dalszych ataków Konieczna prawidłowa obsługa WSZYSTKICH sytuacji wyjątkowych

Walidacja danych - zagrożenia Przesłanie większej ilości danych niż się spodziewaliśmy Przesłanie wartości, których nie jesteśmy w stanie poprawnie obsłużyć Przesłanie danych, mimo iż nie spodziewaliśmy się ich w tym momencie (CSRF) :) Przesłanie większej ilości danych niż się spodziewaliśmy Przesłanie wartości, których nie jesteśmy w stanie poprawnie obsłużyć Przesłanie danych, mimo iż nie spodziewaliśmy się ich w tym momencie (CSRF) :)

Walidacja danych – przykład 1 Użytkownik chce zmienić swoje imię i nazwisko. W tym celu przechodzi do zakładki edycja danych, gdzie okazuje się, że może zmienić jedynie swój adres . Użytkownik ręcznie dodaje pole formularza z imieniem i nazwiskiem, a następnie wysyła całość. Aplikacja nie sprawdza, czy przesłano nadmiarowe dane. Przekazuje parametry formularza do modelu, który dokonuje aktualizacji w bazie danych. Imię i nazwisko zmienione :)

Walidacja danych – przykład 2 Jednym z etapów rejestracji na stronie jest wybranie z listy rozwijalnej typu konta – klient(1)/sprzedawca(2). Użytkownik modyfikuje pozycje listy rozwijalnej i obok dwóch dostępnych, dodaje trzecią, z kolejną wartością (3). Przesyła cały formularz. Serwer nie weryfikuje czy trzecia wartość jest poprawna (a tym bardziej, czy użytkownik miał prawo jej użyć). W najlepszym przypadku użytkownik nie może uzyskać dostępu do systemu, w najgorszym zostaje administratorem :)

Walidacja danych – przykład 3 Użytkownik jest zalogowany na stronie abc, która umożliwia skasowanie swoich wpisów na forum poprzez wywołanie akcji /phorum/deleteall Użytkownik zostaje zwabiony na stronę xyz na której znajduje się link opisany jako odnośnik do… ;) Użytkownik klika link, który… przekierowuje go do /phorum/deleteall Użytkownik już nigdy nie zobaczy swoich postów na forum serwisu abc

Walidacja danych - rozwiązanie Sprawdzanie, czy użytkownik nie przesłał większej ilości danych niż się spodziewaliśmy Sprawdzanie, czy przesłane przez użytkownika dane posiadają wartości, których się spodziewamy Walidacja koniecznie po stronie serwera! Dobrze, jeśli jest po stronie użytkownika, jednak nie ma to żadnego wpływu na poprawę bezpieczeństwa Stosowanie dwustopniowego uwierzytelnienia, prośba o ponowne uwierzytelnienie w przypadku wykonywania istotnych akcji (zapobieganie atakom CSRF) Stosowanie losowej wartości w formularzach i porównywanie jej po odesłaniu formularza przez użytkownika (zapobieganie atakom CSRF) Współczesne frameworki znacznie ułatwiają walidację – warto korzystać! Sprawdzanie, czy użytkownik nie przesłał większej ilości danych niż się spodziewaliśmy Sprawdzanie, czy przesłane przez użytkownika dane posiadają wartości, których się spodziewamy Walidacja koniecznie po stronie serwera! Dobrze, jeśli jest po stronie użytkownika, jednak nie ma to żadnego wpływu na poprawę bezpieczeństwa Stosowanie dwustopniowego uwierzytelnienia, prośba o ponowne uwierzytelnienie w przypadku wykonywania istotnych akcji (zapobieganie atakom CSRF) Stosowanie losowej wartości w formularzach i porównywanie jej po odesłaniu formularza przez użytkownika (zapobieganie atakom CSRF) Współczesne frameworki znacznie ułatwiają walidację – warto korzystać!

Filtrowanie danych - zagrożenia Ataki XSS – umieszczenie i wykonanie złośliwego kodu na zaatakowanej stronie Umieszczenie kodu może odbywać się różnymi sposobami – nie tylko poprzez wartości wysłane z formularza, dostępne są również nagłówki HTTP Zagrożenie pochodzi z danych przesłanych do serwera – obojętnie w jaki sposób Ataki XSS – umieszczenie i wykonanie złośliwego kodu na zaatakowanej stronie Umieszczenie kodu może odbywać się różnymi sposobami – nie tylko poprzez wartości wysłane z formularza, dostępne są również nagłówki HTTP Zagrożenie pochodzi z danych przesłanych do serwera – obojętnie w jaki sposób

Filtrowanie danych - przykład Strona nie filtruje danych przekazywanych przez użytkownika, prezentując je w dokładnie takiej samej formie. Atakujący dodaje komentarz zawierający kod JavaScript, który odczytuje ciasteczko sesji i przesyła je we wskazane miejsce. Nieświadomy niczego (zalogowany) użytkownik wchodzi na stronę i czyta komentarze. Właśnie podzielił się sesją z kimś innym

Filtrowanie danych - rozwiązanie Filtrowanie wszystkich danych pochodzących od użytkownika – dotyczy to również ciasteczek, nagłówków HTTP, nazw plików (przesyłane w nagłówkach HTTP) Filtrowanie przy odbieraniu danych czy przy prezentacji? Zależy… Przy prezentacji BEZWZGLĘDNIE! Po odebraniu danych zwykle dobrze jest przefiltrować, jednak czasami (logowanie akcji wraz z parametrami) nie jest to możliwe. Filtrowanie wszystkich danych pochodzących od użytkownika – dotyczy to również ciasteczek, nagłówków HTTP, nazw plików (przesyłane w nagłówkach HTTP) Filtrowanie przy odbieraniu danych czy przy prezentacji? Zależy… Przy prezentacji BEZWZGLĘDNIE! Po odebraniu danych zwykle dobrze jest przefiltrować, jednak czasami (logowanie akcji wraz z parametrami) nie jest to możliwe.

Parametry - zagrożenia Podmiana wartości GET lub POST Możliwość pobrania zasobów poprzez prostą inkrementację wartości id przekazywanego jako parametr Podmiana wartości GET lub POST Możliwość pobrania zasobów poprzez prostą inkrementację wartości id przekazywanego jako parametr

Parametry – przykład Aplikacja xyz to sklep muzyczny, który udostępnia możliwość pobierania plików mp3 za opłatą Użytkownik po zakupie otrzymuje link w postaci /download/mp3/154 który umożliwia mu pobranie zakupionej piosenki Użytkownik zmienia wartość numeryczną i wywołuje link /download/mp3/155 Pobrał właśnie za darmo kolejną piosenkę. Następnie uruchamia skrypt, który pobiera wszystkie dostępne piosenki

Parametry - rozwiązanie Zawsze sprawdzać uprawnienia użytkownika do zasobu! Ograniczanie uprawnień nie może odbywać się przez sam interfejs Stosowanie w niektórych przypadkach losowych wartości parametrów, zamiast rosnących liczb naturalnych Zawsze sprawdzać uprawnienia użytkownika do zasobu! Ograniczanie uprawnień nie może odbywać się przez sam interfejs Stosowanie w niektórych przypadkach losowych wartości parametrów, zamiast rosnących liczb naturalnych

Sesje - zagrożenia Podrzucenie identyfikatora sesji Odgadnięcie identyfikatora sesji Nieświadome przekazanie identyfikatora sesji (w przypadku przekazywania metodą GET) Przejęcie sesji poprzez atak XSS Podrzucenie identyfikatora sesji Odgadnięcie identyfikatora sesji Nieświadome przekazanie identyfikatora sesji (w przypadku przekazywania metodą GET) Przejęcie sesji poprzez atak XSS

Sesje – przykład 1 Atakujący wchodzi na stronę serwisu abc (tworzona jest nowa sesja), a następnie przesyła użytkownikowi link z zawartym w nim identyfikatorem sesji. Użytkownik otwiera link, sesja jest współdzielona. Użytkownik loguje się.Atakujący uzyskuje dostęp do konta użytkownika.

Sesje – przykład 2 Identyfikatorem sesji w serwisie abc są kolejne liczny naturalne Atakujący tworzy nową sesję, sprawdza jej identyfikator a następnie testuje wszystkie wartości identyfikatora sesji Atakujący uzyskuje dostęp do sesji użytkowników

Sesje - rozwiązanie Sprawdzenie losowości generowanych identyfikatorów sesji Stosowanie ciasteczek do przechowywania identyfikatorów sesji Przesyłanie identyfikatora sesji tylko poprzez szyfrowane połączenie Ważne akcje powinny być poprzedzone ponownym uwierzytelnieniem Regenerowanie identyfikatora sesji po zalogowaniu oraz przy ponownym uwierzytelnieniu Zapobieganie atakom XSS Sprawdzenie losowości generowanych identyfikatorów sesji Stosowanie ciasteczek do przechowywania identyfikatorów sesji Przesyłanie identyfikatora sesji tylko poprzez szyfrowane połączenie Ważne akcje powinny być poprzedzone ponownym uwierzytelnieniem Regenerowanie identyfikatora sesji po zalogowaniu oraz przy ponownym uwierzytelnieniu Zapobieganie atakom XSS

SQL Injection - zagrożenia Wstrzyknięcie złośliwego kodu SQL wraz z danymi przesłanymi przez użytkownika Możliwość uzyskania dostępu do danych do których nie mamy uprawnień Możliwość zmiany, usun Nie tylko formularze HTML, także parametry GET, ciasteczka, nazwy plików, nagłówki HTTP, zawartość plików – WSZYSTKO co pochodzi od użytkownika a trafia do bazy danych Zawsze filtrować dane pochodzące od użytkownika, korzystać z lepszych mechanizmów – preparowanie zapytań, ORMy (?), budować warstwy abstrakcji – to chyba oczywiste w modelu MVC? Wstrzyknięcie złośliwego kodu SQL wraz z danymi przesłanymi przez użytkownika Możliwość uzyskania dostępu do danych do których nie mamy uprawnień Możliwość zmiany, usun Nie tylko formularze HTML, także parametry GET, ciasteczka, nazwy plików, nagłówki HTTP, zawartość plików – WSZYSTKO co pochodzi od użytkownika a trafia do bazy danych Zawsze filtrować dane pochodzące od użytkownika, korzystać z lepszych mechanizmów – preparowanie zapytań, ORMy (?), budować warstwy abstrakcji – to chyba oczywiste w modelu MVC?

SQL Injection - rozwiązanie Walidacja i filtrowanie danych pochodzących od użytkowników Korzystać z preparowanych zapytań! Wykorzystanie ORM (?) – ja nie lubię Budowanie warstwy abstrakcji – to chyba oczywiste w modelu MVC, jak i każdym innym (sensownym) Walidacja i filtrowanie danych pochodzących od użytkowników Korzystać z preparowanych zapytań! Wykorzystanie ORM (?) – ja nie lubię Budowanie warstwy abstrakcji – to chyba oczywiste w modelu MVC, jak i każdym innym (sensownym)

Przesyłanie plików Zagrożenie w postaci przesłania na serwer olbrzymiego skompresowanego pliku Wtyczki społecznościowe, Google Analytics, Zawsze sprawdzać rozmiar pliku przed rozpakowaniem! Zawsze sprawdzać typ pliku! Zagrożenie w postaci przesłania na serwer olbrzymiego skompresowanego pliku Wtyczki społecznościowe, Google Analytics, Zawsze sprawdzać rozmiar pliku przed rozpakowaniem! Zawsze sprawdzać typ pliku!

Dziękuję za uwagę Prezentacja do pobrania na Prezentacja do pobrania na