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



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

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

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

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

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

Bezpieczeństwo serwera Microsoft IIS v. 7.0

The OWASP Foundation Session Management. Sławomir Rozbicki.

Zabezpieczanie platformy Windows Server 2003

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

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

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

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

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

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

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

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

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

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

Projektowani Systemów Inf.

Zaawansowane aplikacje internetowe - laboratorium

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

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

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

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

platforma zapewniająca usługi wirtualizacji

ZagroŜenia w sieci. Tomasz Nowocień, PCSS

Poznańskie Centrum Superkomputerowo - Sieciowe

Aktualny stan i plany rozwojowe

INFORMATOR TECHNICZNY WONDERWARE

INFORMATOR TECHNICZNY WONDERWARE

Pracownia internetowa w szkole ZASTOSOWANIA

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

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

Procedury techniczne modułu Forte Kontroling. Środowisko pracy programu i elementy konfiguracji

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

Instrukcja instalacji

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

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Dostęp zdalny

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

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

Dokumentacja fillup - MS SQL

Zadanie 1. Wykonał: Grzegorz Pol Komputer:

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

INSTRUKCJA OBSŁUGI DLA SIECI

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

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

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

Polityka prywatności serwisu

Specyfikacja techniczna. mprofi Interfejs API

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Bezpiecznie i rozsądnie z Project Server 2013, czyli SharePoint Permission Mode vs Project Server Mode Bartłomiej Graczyk

Portal Security - ModSec Enterprise

Plan wykładu. Tworzenie programów dla platformy.net. Kontrolki list. Kontrolki weryfikujące. Wiązanie danych. Dostęp do danych

Wymagane jest podłączenie serwera do Internetu (konieczne do zdalnego dostępu).

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

Serwery WWW. Odpowiednie operacje dla ostatniego elementu są dostępne pod prawym przyciskiem myszki

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

Bezpieczeństwo heterogenicznej. Zespół Bezpieczeństwa PCSS

FAQ Systemu EKOS. 1. Jakie są wymagania techniczne dla stanowiska wprowadzania ocen?

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

(Pluggable Authentication Modules). Wyjaśnienie technologii.

POLITYKA PRYWATNOŚCI SERWIS:

Uwierzytelnianie użytkowników sieci bezprzewodowej z wykorzystaniem serwera Radius (Windows 2008)

Wstęp... ix. 1 Omówienie systemu Microsoft Windows Small Business Server

Polityka prywatności

Jak bezpieczne są Twoje dane w Internecie?

TelCOMM Wymagania. Opracował: Piotr Owsianko Zatwierdził: IMIĘ I NAZWISKO

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

Serock warsztaty epuap 28 październik 2009 r. Sławomir Chyliński Andrzej Nowicki WOI-TBD Szczecin

Cookie Policy. 1. Informacje ogólne.

Tomasz Greszata - Koszalin

Kontrola dostępu w ASP.NET

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

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

Agenda. Quo vadis, security? Artur Maj, Prevenity

Przewodnik Google Cloud Print

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

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

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

Projekt: MS i CISCO dla Śląska

Windows Server Serwer RADIUS

Rozwiązanie Trend Micro Worry-Free Business Security 8.0 Porady i wskazówki dotyczące konfiguracji początkowej

Szkolenie autoryzowane. MS 6419 Konfiguracja, zarządzanie i utrzymanie systemów Windows Server 2008

Bezpieczeństwo. hostingowej GERARD FRANKOWSKI, MARCIN JERZAK

OWASP. The Open Web Application Security Project. OWASP Top rc1. Dziesięć najbardziej krytycznych zagrożeń w web aplikacjach

Program szkolenia: Bezpieczny kod - podstawy

INTERNET - Wrocław Usługi bezpieczeństwa w rozproszonych strukturach obliczeniowych typu grid

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Dokumentacja SMS przez FTP

Windows Serwer 2008 R2. Moduł x. IIS

Instrukcja instalacji systemu elektronicznego obiegu dokumentów - esoda.

Projekt: Microsoft i CISCO dla Zachodniopomorskich MŚP

Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:

Transkrypt:

Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zespół Bezpieczeństwa PCSS Warsztaty Startup-IT Tworzenie serwisów internetowych Poznań, 26.02.2009 1

Agenda Kim jesteśmy i co robimy? PCSS i Zespół Bezpieczeństwa Centrum Innowacji Microsoft Podejście defence-in-depth dla aplikacji webowych Bezpieczeństwo aplikacji w ASP.NET Bezpieczny kod: implementacja sesji internetowych Bezpieczny serwer: 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-20092009 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 aplikacji webowych w ASP.NET - wybrane aspekty 9

Niektóre 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 I wiele innych (patrz prezentacja Tomka Kuczyńskiego) Sesje internetowe Błędy w konfiguracji serwerów Ataki Information Disclosure Konfiguracja ASP.NET Konfiguracja serwerów WWW, baz danych,... Powyższa lista absolutnie nie wyczerpuje tematu! 10

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 informacji o połączeniu 11

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

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 13

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

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) Przechowywane na serwerze w bazie danych lub w plikach sesji Przechowywane po stronie klienta za pośrednictwem przeglądarki jako cookie 15

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 16

Zwykł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); 17

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 18

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 19

Czas waż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) 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.AddMinutes(5) mycookie.expires = expdate Response.Cookies.Add(myCookie) 20

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> 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 21

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) 22

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 23

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

Błędy w konfiguracji ASP.NET 25

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 (%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 Machine and User Policy: security.config ASP.NET Policy: web_hightrust.config, web_mediumtrust.config, web_lowtrust.config, web_minimaltrust.config 26

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/ www.devx.com/dotnet/article/32493/32493 27

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żytkownik ujrzy szczegółowy opis błędu, także z fragmentami kodu Dla lokalnych żądań warto pozostawić tryb debugowy 28

Nieprawidłowa konfiguracja 29

Prawidłowa konfiguracja 30

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: <customerrors mode="remoteonly"> <error statuscode="404" redirect="errors/e404.htm"> <error statuscode= 500" redirect="errors/e500.htm"> </customerrors> 31

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

Tajemniczy plik trace.axd ;) 33

Leaving Debugging Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <compilation debug="true"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <compilation debug="false"> Pozostawienie 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 błędów 34

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

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 36

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/32493 37

Cookieless Authentication Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms cookieless="useuri"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <authentication mode="forms"> <forms cookieless="usecookies"> Wartość UseCookies wymusza przechowywanie danych sesji przy pomocy mechanizmu ciasteczek. Znaczenie tej opcji jest większe, bo dotyczy danych uwierzytelniających! 38

Failure to Require SSL for Authentication Cookies Nieprawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms requiressl="false"> Prawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms requiressl="true"> Znaczenie: Ustawienie parametru na true zapewnia, że dane uwierzytelniające zostaną przesłane kanałem szyfrowanym (SSL) IIS wymaga odpowiedniej konfiguracji do użycia SSL! 39

Sliding Expiration Used Nieprawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms slidingexpiration="false"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <authentication mode="forms"> <forms slidingexpiration="true"> Parametr decyduje, czy czas życia sesji liczy się od momentu zalogowania (true), czy od zaprzestania aktywności (false) 40

Non-Unique Authentication Cookie Used Nieprawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms name="aspxauth"> Prawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms name="[skomplikowany_ciag]"> Znaczenie: Nazwa cookie uwierzytelniającego, powinna być ona różna dla wszystkich aplikacji na danym serwerze - i najlepiej być długim, skomplikowanym ciągiem danych 41

Hardcoded Credentials Used Nieprawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms> <credentials> <user name="admin" password="admin123"/> </credentials> </forms> Prawidłowa konfiguracja <configuration> <system.web> <authentication mode="forms"> <forms> </forms> 42

Hardcoded Credentials Used (2) Znaczenie Udostępnienie możliwości szybkiego i łatwego sięgnięcia po dane uwierzytelniające na etapie rozwoju (testów) aplikacji Opcja nigdy nie powinna być wykorzystywana w produkcyjnej aplikacji (ze względu na możliwość ujawnienia informacji) Istnieje możliwość składowania skrótu SHA-1 lub MD5 hasła, ale nadal ujawnia to nazwę użytkownika 43

Poziomy zaufania CAS Aplikacji można przypisać 1 z 5 poziomó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! 44

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 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 Low 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". CAS 45

Błędna konfiguracja Plik machine.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> 46

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 47

48

49

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ń! 50

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

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

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 ASP.NET nigdy nie powinno korzystać z konta posiadającego uprawnienia SYSTEM To przykład podejścia Defence-in-depth 53

Bezpieczna konfiguracja - podsumowanie Ograniczenie poziomu zaufania aplikacji webowych Zastrzeżenie dostępu do informacji wewnętrznych (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 54

Podsumowanie 55

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-depth 56

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

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/books/d efault.mspx (PL) http://www.microsoft.com/learning/books/security/ default.asp (EN) 58

MIC zaprasza :) Centrum Innowacji Microsoft Program szkoleń bezpieczeństwa MIC m.in. warsztaty Omijanie firewalli w systemach Windows http://mic.psnc.pl/pl/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 59

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

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