zabezpieczanie aplikacji webowych w aspsecurity.psnc.pl/files/startup_270209.pdf · zabezpieczanie...
TRANSCRIPT
Zabezpieczanie aplikacjiZabezpieczanie aplikacjiwebowych webowych w ASP.NETw ASP.NET
Gerard FrankowskiGerard FrankowskiZespZesp óółł Bezpiecze Bezpiecze ńństwa PCSSstwa PCSS
Warsztaty Warsztaty StartupStartup -IT-ITTworzenie serwisTworzenie serwis óów w internetowychinternetowych
PoznaPoznańń, , 27.02.27.02.20092009
2
AgendaAgenda•• Kim jesteKim jesteśśmy i co robimy?my i co robimy?
-- PCSS i Zespół BezpieczeństwaPCSS i Zespół Bezpieczeństwa-- Centrum Innowacji Centrum Innowacji MicrosoftMicrosoft
•• Podejście Podejście defencedefence--inin--depth depth dla aplikacji dla aplikacji webowychwebowych•• BezpieczeBezpieczeńństwo aplikacji w ASP.NETstwo aplikacji w ASP.NET
-- Bezpieczny kod: implementacja sesjiBezpieczny kod: implementacja sesji internetowych internetowych-- Bezpieczny serwer: konfiguracja ASP.NETBezpieczny serwer: konfiguracja ASP.NET
•• PPodsumowanie, pytania, dyskusjaodsumowanie, pytania, dyskusja
3
Cel prezentacjiCel prezentacji•• Podniesienie świadomości na temat zagroŜeń Podniesienie świadomości na temat zagroŜeń
związanych z niezabezpieczonymi aplikacjamizwiązanych z niezabezpieczonymi aplikacjamiw ASP.NET i wskazanie metod ochronyw ASP.NET i wskazanie metod ochrony
•• Prezentacja jest przeznaczona dla:Prezentacja jest przeznaczona dla:-- Programistów aplikacji ASP.NETProgramistów aplikacji ASP.NET
-- Administratorów serwerów Administratorów serwerów hostujących hostujących aplikacje ASP.NETaplikacje ASP.NET
-- Specjalistów Specjalistów dsds. zabezpieczeń (częściowo). zabezpieczeń (częściowo)
•• Wiele przytoczonych zasad ma charakter ogólnyWiele przytoczonych zasad ma charakter ogólny
4
Kim Kim jestejesteśśmy i comy i co robimy robimy??
5
PCSSPCSS• 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
6
Zespół Bezpieczeństwa PCSSZespół 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
7
Centrum Innowacji MicrosoftCentrum 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
8
Wybrane zadania MIC 2006-2009Wybrane 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
9
BezpieczeBezpieczeńństwo aplikacji stwo aplikacji webowychwebowychw ASP.NET - wybrane aspektyw ASP.NET - wybrane aspekty
10
Niektóre podatności aplikacji WWWNiektóre podatności aplikacji WWW•• Błędy w projekcie i kodzieBłędy w projekcie i kodzie
-- Błędy w projektowaniu funkcjonalnościBłędy w projektowaniu funkcjonalności-- Znaczenie filtrowania danychZnaczenie filtrowania danych
•• Ataki XSS (Ataki XSS (Cross Site ScriptingCross Site Scripting))•• Ataki SQL Ataki SQL InjectionInjection•• AtakiAtaki Remote Code Execution Remote Code Execution•• I wiele innych (patrz prezentacja Tomka I wiele innych (patrz prezentacja Tomka KuczyńskiegoKuczyńskiego))
-- Sesje Sesje internetoweinternetowe
•• Błędy w konfiguracji serwerówBłędy w konfiguracji serwerów-- Ataki Ataki Information DisclosureInformation Disclosure-- Konfiguracja ASP.NETKonfiguracja ASP.NET-- Konfiguracja serwerów WWW, baz danych, ...Konfiguracja serwerów WWW, baz danych, ...
•• PowyŜsza lista absolutnie nie wyczerpuje tematu!PowyŜsza lista absolutnie nie wyczerpuje tematu!
11
Sesja internetowaSesja internetowa•• ProtokProtokół ół HTTP jest bezstanowyHTTP jest bezstanowy
-- RozróŜnianie toŜsamości uŜytkowników jest kluczowe dlaRozróŜnianie toŜsamości uŜytkowników jest kluczowe dlakorzystania z e-usługkorzystania z e-usług
•• Sesja internetowaSesja internetowa•• Identyfikowany przez Identyfikowany przez sessionsession ID ID zbi zbióór informacji o por informacji o połąłączeniuczeniu
12
AtakAtakii na sesj na sesjee –– zagro zagroŜŜeniaenia•• Ujawnienie informacji o serwerzeUjawnienie informacji o serwerze
-- Poszczególne serwery WWW obsługują sesje w róŜny sposóbPoszczególne serwery WWW obsługują sesje w róŜny sposób
•• KradzieKradzieŜŜ sesji u sesji uŜŜytkownikaytkownika-- Podszycie siPodszycie sięę pod ofiar pod ofiaręę
-- KradzieKradzieŜŜ to toŜŜsamosamośści ofiaryci ofiary......
-- ... i jej konsekwencje: k... i jej konsekwencje: kradzieradzieŜŜ danych, zawarcie fa danych, zawarcie fałłszywejszywejumowy, kradzieumowy, kradzieŜŜ śśrodkrodkóów finansowych, w finansowych, uzyskanie danychuzyskanie danychbędących podstawą do szantaŜu, będących podstawą do szantaŜu, ......
-- JeJeŜŜeli powiodeli powiodłło sio sięę przej przejęęcie sesji administratora serwisu,cie sesji administratora serwisu,momoŜŜliwe jest wykonanie dowolnego dzialiwe jest wykonanie dowolnego działłania w ramach portaluania w ramach portalu
13
Czy te zagroŜenia są realne?Czy te zagroŜenia są realne?•• Styczeń 2008 - testy 50 sklepów Styczeń 2008 - testy 50 sklepów internetowychinternetowych
przeprowadzone przez Zespół Bezpieczeństwa PCSSprzeprowadzone przez Zespół Bezpieczeństwa PCSS-- Test 1 – niedozwolone znaki w nazwie ciasteczkaTest 1 – niedozwolone znaki w nazwie ciasteczka-- Test 2 – próba wymuszenia błędu zapisu pliku sesjiTest 2 – próba wymuszenia błędu zapisu pliku sesji-- Test 3 – odpowiedni czas Ŝycia ciasteczkaTest 3 – odpowiedni czas Ŝycia ciasteczka-- Test 4 – odpowiedni czas Ŝycia sesjiTest 4 – odpowiedni czas Ŝycia sesji-- Test 5 – moŜliwość wymuszenia identyfikatora sesjiTest 5 – moŜliwość wymuszenia identyfikatora sesji-- Test 6 – powiązanie identyfikatora sesji z adresem IPTest 6 – powiązanie identyfikatora sesji z adresem IP-- Test 7 – stosowanie atrybutu Test 7 – stosowanie atrybutu httponlyhttponly
•• Więcej:Więcej:http://security.psnc.pl/reports/sklepy_internetowe_cookies.pdf
14
RezultatyRezultaty
Test 5
Test 2
Test 3 Test 4
Test 1
Test 6 Test 7 Kolor czerwony ipochodne –niebezpiecznie
Kolor zielony –bezpiecznie
15
Jak moJak moŜna Ŝna przechowywaprzechowywaćć dane sesji? dane sesji?•• Przesyłanie metodą GET w adresie URLPrzesyłanie metodą GET w adresie URL
-- Wyjątkowo podatne na atakiWyjątkowo podatne na ataki
•• Wykorzystanie ukrytych pól formularzyWykorzystanie ukrytych pól formularzy-- Podatne na atakiPodatne na ataki-- Komplikuje budowę serwisuKomplikuje budowę serwisu
•• Ciasteczka (Ciasteczka (cookiescookies))-- Przechowywane na serwerze w bazie danych lub w plikach sesjiPrzechowywane na serwerze w bazie danych lub w plikach sesji-- Przechowywane po stronie klienta za pośrednictwemPrzechowywane po stronie klienta za pośrednictwem
przeglądarki jako przeglądarki jako cookiecookie
16
ZawartoZawartośćść ciasteczka ciasteczka•• Nazwa oraz skojarzona z nią wartośćNazwa oraz skojarzona z nią wartość
-- Szczególnym z punktu widzenia bezpieczeństwa przypadkiemSzczególnym z punktu widzenia bezpieczeństwa przypadkiemsą są cookiescookies zawierające informacje o sesji uŜytkownikazawierające informacje o sesji uŜytkownika
-- Informacje o sesji w ASP.NETInformacje o sesji w ASP.NET•• Identyfikator sesji jest 120-bitowym przypadkowym ciągiemIdentyfikator sesji jest 120-bitowym przypadkowym ciągiem
znaków, reprezentowanym przez 20-znakowy łańcuchznaków, reprezentowanym przez 20-znakowy łańcuch•• Nazwa ciasteczka brzmi Nazwa ciasteczka brzmi ASP.NET_SessionId
•• Data wygaśnięciaData wygaśnięcia•• Domena (dokąd przeglądarka moŜe wysłać Domena (dokąd przeglądarka moŜe wysłać cookiecookie))•• ŚcieŜka (skąd ciasteczko jest widoczne na serwerze)ŚcieŜka (skąd ciasteczko jest widoczne na serwerze)•• Atrybuty dodatkoweAtrybuty dodatkowe
17
ZwykZwykłłe ciasteczko w ASP.NETe ciasteczko w ASP.NET<%
HttpCookie cookie = new HttpCookie( “ licznik ” );
cookie.Name = “ licznik ” ;
cookie.Value = “ yes ” ;
cookie.Expires = #01/10/2008 11:00:00#;
cookie.Domain = “ www.example.com ” ;
cookie.Path = “ /licznik_dir ” ;
Response.Cookies.Add(cookie);
%>
18
ZagroZagroŜŜenie atakiemenie atakiem Session FixationSession Fixation•• Atak polega na nawiązaniu przez napastnika sesjiAtak polega na nawiązaniu przez napastnika sesji
o określonym identyfikatorzeo określonym identyfikatorze-- Skłonienie ofiary do nawiązania sesji o konkretnym IDSkłonienie ofiary do nawiązania sesji o konkretnym ID
-- Brak uniewaŜniania wykorzystanych ID sesjiBrak uniewaŜniania wykorzystanych ID sesji
•• PlatformaPlatforma Microsoft Microsoft ASP nie zapewnia bezpośredniego ASP nie zapewnia bezpośredniegowsparcia dla powtórnej generacji ID sesjiwsparcia dla powtórnej generacji ID sesji-- Microsoft Microsoft zamknął zgłoszenie uŜytkownika we wspomnianymzamknął zgłoszenie uŜytkownika we wspomnianym
zakresie, uznając je za „nie do naprawienia”zakresie, uznając je za „nie do naprawienia”((https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=143361&wa=wsignin1.0&siteid=210))
-- Niestety, ASP nie pozwala ponadto na bezpośredni dostęp (zapis)Niestety, ASP nie pozwala ponadto na bezpośredni dostęp (zapis)do do cookiecookie ASP.NET_SessionId
19
Session fixation Session fixation - ochrona- ochrona•• Porady Porady MicrosoftuMicrosoftu dostępne pod adresem: dostępne pod adresem:
-- httphttp://://supportsupport..microsoftmicrosoft..comcom//kbkb/899918/899918
•• Podejście OWASP:Podejście OWASP:-- Generacja dodatkowego ciasteczka, któremu nadajemy wartośćGeneracja dodatkowego ciasteczka, któremu nadajemy wartość
toŜsamą z ID sesji (moŜemy ją toŜsamą z ID sesji (moŜemy ją odczytaćodczytać))
-- Porównywanie zawartości dodatkowego ciasteczka z ID sesjiPorównywanie zawartości dodatkowego ciasteczka z ID sesji
-- JeŜeli wartości są róŜne, uniewaŜniamy sesjęJeŜeli wartości są róŜne, uniewaŜniamy sesję
-- Więcej informacji + przykładWięcej informacji + przykładhttp://www.owasp.org/index.php/Session_Fixation_Protection
•• Wykorzystanie uwierzytelniania przy pomocy formularzyWykorzystanie uwierzytelniania przy pomocy formularzyzmniejsza zagrozmniejsza zagroŜenie dzięki uŜyciu dodatkowego Ŝenie dzięki uŜyciu dodatkowego tokenatokena
20
Czas waCzas waŜŜnonośści ciasteczkaci ciasteczka•• Im dłuŜszy czas waŜności, tym łatwiejsze jest przejęcieIm dłuŜszy czas waŜności, tym łatwiejsze jest przejęcie
sesji o wykradzionym identyfikatorze (sesji o wykradzionym identyfikatorze (Session HijackingSession Hijacking))•• Czas waŜności sesji zaleŜy od tego, jak „cenna” jestCzas waŜności sesji zaleŜy od tego, jak „cenna” jest
aplikacjaaplikacja-- Bankowość Bankowość internetowa internetowa - rzędu kilku(- rzędu kilku(nastunastu) minut) minut-- Serwis Serwis społecznościowyspołecznościowy, bramka SMS - , bramka SMS - npnp. godzina. godzina-- Standard OWASP: 5 minut!Standard OWASP: 5 minut!
DimDim myCookie myCookie As New As New HttpCookie HttpCookie (“(“ testCookietestCookie ”)”)
DimDim expDate expDate As As DateTimeDateTime
expDateexpDate = = DateTime DateTime .Now..Now. AddMinutesAddMinutes (5)(5)
myCookiemyCookie .. ExpiresExpires = = expDateexpDate
Response.Cookies.Add(Response.Cookies.Add( myCookiemyCookie ))
21
WWłłaaśściwociwośści obiektu ci obiektu HttpCookie HttpCookie (1)(1)•• Właściwość Właściwość HttpOnlyHttpOnly
-- Określa, czy Określa, czy cookiecookie moŜe zostać odczytane poprzez aktywnąmoŜe zostać odczytane poprzez aktywnązawartość witrynyzawartość witryny
-- Pozwala uchronić się przed atakami XSS wykonywanymi przyPozwala uchronić się przed atakami XSS wykonywanymi przypomocy wstrzyknięcia kodu typupomocy wstrzyknięcia kodu typu
< < scriptscript >...>... documentdocument .. cookiecookie <<scriptscript >>
•• Właściwość Właściwość SecureSecure-- Definiuje poziom bezpieczeństwa ciasteczka (jest flagą)Definiuje poziom bezpieczeństwa ciasteczka (jest flagą)-- Jeśli ustawiona, umoŜliwia obsługę Jeśli ustawiona, umoŜliwia obsługę cookie cookie tylko zatylko za
pośrednictwem protokołu HTTPSpośrednictwem protokołu HTTPS
22
WWłłaaśściwociwośści obiektu ci obiektu HttpCookie HttpCookie (2)(2)•• Definicja bezpieczniejszego ciasteczkaDefinicja bezpieczniejszego ciasteczka
Dim myCookie As New HttpCookie( “ testCookie ” )
myCookie. HttpOnly = true
myCookie. Secure = true
Response.Cookies.Add(cookie)
23
PowiPowiąązanie ID sesji z adresem IPzanie ID sesji z adresem IP•• Przesłanie ciasteczka o danym ID spod innego adresu,Przesłanie ciasteczka o danym ID spod innego adresu,
niŜ zapisany po stronie serwera powodujeniŜ zapisany po stronie serwera powodujeuniewaŜnienie sesjiuniewaŜnienie sesji
•• Zaleta: poprawa bezpieczeństwaZaleta: poprawa bezpieczeństwa-- Zabezpieczenie przed kradzieŜą sesjiZabezpieczenie przed kradzieŜą sesji
•• Wady:Wady:-- Utrudnienie korzystania z usług uŜytkownikom bez stałegoUtrudnienie korzystania z usług uŜytkownikom bez stałego
adresu IPadresu IP
•• Realny przykład byłby dość skomplikowany ;) zachęcamRealny przykład byłby dość skomplikowany ;) zachęcamdo testów własnychdo testów własnych
24
Bezpieczne sesje - podsumowanieBezpieczne sesje - podsumowanie•• Odpowiedzialność po stronie administratoraOdpowiedzialność po stronie administratora
-- Odpowiednia konfiguracja serwera WWW / .NETOdpowiednia konfiguracja serwera WWW / .NET•• Unikanie wyUnikanie wyśświetlania szczegwietlania szczegóółowych informacji o bowych informacji o błęłędachdach
uŜytkownikowiuŜytkownikowi
•• Odpowiedzialność po stronieOdpowiedzialność po stronieprojektanta/programistyprojektanta/programisty-- Bezpieczna konfiguracja sesjiBezpieczna konfiguracja sesji
•• Najlepsze wyniki przyniesie Najlepsze wyniki przyniesie połączenie obu podejśćpołączenie obu podejść
25
Błędy w konfiguracji ASP.NETBłędy w konfiguracji ASP.NET
26
Pliki konfiguracyjne Pliki konfiguracyjne ASP.NETASP.NET•• Specyfika plików konfiguracyjnych ASP.NETSpecyfika plików konfiguracyjnych ASP.NET
-- Pliki tekstowe w formacie XMLPliki tekstowe w formacie XML
•• Pliki konfiguracyjne dla komputeraPliki konfiguracyjne dla komputera-- machinemachine..configconfig
((%SystemRoot%\Microsoft.NET\Framework\%wersja%\CONFIG\))
•• Pliki konfiguracyjne dla aplikacjiPliki konfiguracyjne dla aplikacji-- webweb..config config (w katalogu głównym i/lub podkatalogach)(w katalogu głównym i/lub podkatalogach)
•• Pliki konfiguracji zabezpieczeńPliki konfiguracji zabezpieczeń Code Access Security Code Access Security-- Enterprise PolicyEnterprise Policy: : enterprisesecenterprisesec..configconfig-- Machine and User PolicyMachine and User Policy: : securitysecurity..configconfig-- ASP.NET ASP.NET PolicyPolicy: : webweb__hightrusthightrust..configconfig, , webweb__mediumtrustmediumtrust..configconfig,,
webweb__lowtrustlowtrust..configconfig, , webweb__minimaltrustminimaltrust..configconfig
27
Top 10 Top 10 dondon’’tsts in in ASP.NETASP.NETconfiguration files configuration files (1)(1)
•• PoniŜsze błędne praktyki dotyczyć mogą wszystkichPoniŜsze błędne praktyki dotyczyć mogą wszystkichaplikacji aplikacji webowych webowych opartych na ASP.NETopartych na ASP.NET-- Custom Errors DisabledCustom Errors Disabled
-- Leaving Tracing EnabledLeaving Tracing Enabled
-- Leaving Debugging EnabledLeaving Debugging Enabled
-- Cookies Accessible Through ClientCookies Accessible Through Client--Side ScriptSide Script
-- Cookieless Session State EnabledCookieless Session State Enabled
•• Więcej informacji:Więcej informacji:-- httphttp://://wwwwww..devxdevx..comcom//dotnetdotnet//ArticleArticle/32493/32493
28
Custom Errors DisabledCustom Errors Disabled•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<customErrors mode= "Off" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<customErrors mode= "RemoteOnly" >
•• Znaczenie:Znaczenie:-- WyWyłąłączenie trybu czenie trybu customErrors customErrors spowoduje, spowoduje, ŜeŜe zdalny u zdalny uŜŜytkownikytkownik
ujrzy szczegujrzy szczegółółowy opis bowy opis błęłędu, takdu, takŜŜe z fragmentami kodue z fragmentami kodu-- Dla lokalnych Dla lokalnych ŜąŜądadańń warto pozostawi warto pozostawićć tryb tryb debugowydebugowy
29
NieprawidNieprawidłłowa konfiguracjaowa konfiguracja
30
PrawidPrawidłłowa konfiguracjaowa konfiguracja
31
PrawidPrawidłłowa konfiguracja (2)owa konfiguracja (2)•• To jeszcze nie jest sytuacja idealnaTo jeszcze nie jest sytuacja idealna
-- Właściwe będzie przygotowanie własnych plikówWłaściwe będzie przygotowanie własnych plikówniezawierających niezawierających informacji konfiguracyjnych, a informacji konfiguracyjnych, a npnp..przekazujących kontakt do administratora systemu lubprzekazujących kontakt do administratora systemu lubhelpdeskuhelpdesku
-- Odpowiednia sekcja pliku Odpowiednia sekcja pliku machinemachine..configconfig::<customErrors mode="RemoteOnly">
<error statusCode="404" redirect="errors/e404.htm">
<error statusCode= ” 500" redirect="errors/e500.htm">
</</ customErrorscustomErrors >>
32
Leaving Tracing EnabledLeaving Tracing Enabled•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<trace enabled= "true" localOnly= "false" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<trace enabled= "false" localOnly= "true" >
•• Znaczenie:Znaczenie:-- WWłąłączenie flagi powoduje, czenie flagi powoduje, ŜŜe zdalny ue zdalny uŜŜytkownik moytkownik moŜŜe uzyskae uzyskaćć
dostdostęęp do dup do duŜŜej iloej ilośści wraci wraŜŜliwych danych, liwych danych, npnp. struktury. strukturypoprzednich poprzednich ŜąŜądadańń do serwera, szczeg do serwera, szczegóółółów jego konfiguracji,w jego konfiguracji,danych przesdanych przesłłanych w formularzach...anych w formularzach...
33
TajemniczyTajemniczyplikpliktracetrace..axd axd ;);)
34
Leaving Debugging EnabledLeaving Debugging Enabled•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<compilation debug= "true" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<compilation debug= "false" >
•• Znaczenie:Znaczenie:-- Pozostawienie wPozostawienie włąłączonej flagi czonej flagi debug debug umoumoŜŜliwia ujawnienieliwia ujawnienie
wiwięększej ilokszej ilośści informacji napastnikowici informacji napastnikowi
-- Nawet prawidNawet prawidłłowe ustawienieowe ustawienie customErrorscustomErrors nie wystarczy, nie wystarczy,poniewaponiewaŜŜ niekt niektóóre narzre narzęędzia dzia deweloperskie deweloperskie mogmogąą ujawni ujawnićć tre treśćśćkomunikatkomunikatóów bw błęłęddóóww
35
Cookies Accessible Through ClientCookies Accessible Through Client--SideSideScriptScript•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<<configurationconfiguration >>
<system. <system. WebWeb>>
< < httpCookies httpOnlyCookieshttpCookies httpOnlyCookies =="" falsefalse "" >>
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<<configurationconfiguration >>
<system. <system. WebWeb>>
< < httpCookies httpOnlyCookieshttpCookies httpOnlyCookies =="" truetrue "" >>
•• Znaczenie:Znaczenie:-- Ustawienie Ustawienie truetrue spowoduje, spowoduje, ŜŜe aktywna zawartoe aktywna zawartośćść strony nie strony nie
bbęędzie miedzie miećć dost dostęępu do pu do cookiescookies-- Czy nam to czegoCzy nam to czegośś nie przypomina? nie przypomina?
36
Cookieless Session State EnabledCookieless Session State Enabled•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<sessionState cookieless= "UseUri" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<sessionState cookieless= "UseCookies" >
•• Znaczenie:Znaczenie:-- WartoWartośćść UseCookiesUseCookies wymusza przechowywanie danych sesji przywymusza przechowywanie danych sesji przy
pomocy mechanizmu ciasteczek, a nie przekazywanie ich przezpomocy mechanizmu ciasteczek, a nie przekazywanie ich przezadres URLadres URL
37
Top 10 Top 10 dondon’’ts ts in in ASP.NETASP.NETconfiguration files configuration files (2)(2)
•• PoniŜsze błędne praktyki dotyczą aplikacjiPoniŜsze błędne praktyki dotyczą aplikacji webowych webowychopartych na ASP.NET, w których wykorzystuje sięopartych na ASP.NET, w których wykorzystuje sięuwierzytelnianie przy pomocy formularzyuwierzytelnianie przy pomocy formularzy-- Cookieless Authentication EnabledCookieless Authentication Enabled
-- FailureFailure to to Require Require SSL for SSL for Authentication Cookies Authentication Cookies
-- Sliding Expiration UsedSliding Expiration Used
-- NonNon--Unique Authentication Cookie UsedUnique Authentication Cookie Used
-- Hardcoded Credentials UsedHardcoded Credentials Used
•• Więcej informacji:Więcej informacji:-- httphttp://://wwwwww..devxdevx..comcom//dotnetdotnet//ArticleArticle/32493/32493
38
Cookieless Authentication EnabledCookieless Authentication Enabled•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<authentication mode="Forms">
<forms cookieless= "UseUri" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms cookieless= "UseCookies" >
•• Znaczenie:Znaczenie:-- WartoWartośćść UseCookiesUseCookies wymusza przechowywanie danych sesji przywymusza przechowywanie danych sesji przy
pomocy mechanizmu ciasteczek. Znaczenie tej opcji jest wipomocy mechanizmu ciasteczek. Znaczenie tej opcji jest więększe,ksze,bo dotyczy danych uwierzytelniajbo dotyczy danych uwierzytelniających!ących!
39
FailureFailure to to Require Require SSL for SSL forAuthentication CookiesAuthentication Cookies•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<authentication mode="Forms">
<forms requireSSL= "false" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms requireSSL= "true" >
•• Znaczenie:Znaczenie:-- Ustawienie parametru na Ustawienie parametru na true true zapewnia, Ŝe danezapewnia, Ŝe dane
uwierzytelniające zostaną przesłane kanałem szyfrowanym (SSL)uwierzytelniające zostaną przesłane kanałem szyfrowanym (SSL)-- IIS wymaga odpowiedniej konfiguracji do uŜycia SSL!IIS wymaga odpowiedniej konfiguracji do uŜycia SSL!
40
Sliding Expiration UsedSliding Expiration Used
•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms slidingExpiration= "false" >
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms slidingExpiration= "true" >
•• Znaczenie:Znaczenie:-- Parametr decyduje, czy czas Ŝycia sesji liczy się od momentuParametr decyduje, czy czas Ŝycia sesji liczy się od momentu
zalogowaniazalogowania ((truetrue),), czy od zaprzestania aktywności ( czy od zaprzestania aktywności (falsefalse))
41
NonNon--Unique Authentication CookieUnique Authentication CookieUsedUsed•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<authentication mode="Forms">
<forms name= "ASPXAUTH">
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms name= "[skomplikowany_ciag]" >
•• Znaczenie:Znaczenie:-- Nazwa Nazwa cookiecookie uwierzytelniającego, powinna być ona róŜna dlauwierzytelniającego, powinna być ona róŜna dla
wszystkich aplikacji na danym serwerze - i najlepiej, aby byławszystkich aplikacji na danym serwerze - i najlepiej, aby byładługim, skomplikowanym ciągiem danychdługim, skomplikowanym ciągiem danych
42
Hardcoded Credentials UsedHardcoded Credentials Used•• Nieprawidłowa konfiguracjaNieprawidłowa konfiguracja
<configuration>
<system.Web>
<authentication mode="Forms">
<forms>
<credentials>
<user name="admin" password="admin123"/>
</credentials>
</forms>
•• Prawidłowa konfiguracjaPrawidłowa konfiguracja<configuration>
<system.Web>
<authentication mode="Forms">
<forms>
</forms>
43
Hardcoded Credentials Used Hardcoded Credentials Used (2)(2)•• ZnaczenieZnaczenie
-- Udostępnienie moŜliwości szybkiego i łatwego sięgnięcia po daneUdostępnienie moŜliwości szybkiego i łatwego sięgnięcia po daneuwierzytelniające na etapie rozwoju (testów) aplikacjiuwierzytelniające na etapie rozwoju (testów) aplikacji
-- Opcja nigdy nie powinna być wykorzystywana w produkcyjnejOpcja nigdy nie powinna być wykorzystywana w produkcyjnejaplikacji (ze względu na moŜliwość ujawnienia informacji)aplikacji (ze względu na moŜliwość ujawnienia informacji)
-- Istnieje moŜliwość składowania skrótu SHA-1 lub MD5 hasła, aleIstnieje moŜliwość składowania skrótu SHA-1 lub MD5 hasła, alenadal ujawnia to nazwę uŜytkownikanadal ujawnia to nazwę uŜytkownika
44
Poziomy zaufania CASPoziomy zaufania CAS•• Aplikacji moAplikacji moŜŜna przypisana przypisaćć 1 z 5 poziom 1 z 5 poziomóów zaufaniaw zaufania
-- FullFull
-- HighHigh
-- MediumMedium
-- LowLow
-- MinimalMinimal
•• MoMoŜŜliwe jest takliwe jest takŜe przygotowanie własnej definicjiŜe przygotowanie własnej definicjipoziomu zaufaniapoziomu zaufania
•• Szczególnie w przypadku oferowania Szczególnie w przypadku oferowania hostingu hostingu dladlapodmiotów zewnętrznych poziom podmiotów zewnętrznych poziom Full Full NIE JESTNIE JESTdobrym pomysłem!dobrym pomysłem!
45
CASCASHigh 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
originUrl attribute of the <trust> element or inside the policy file
Low 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".
46
Błędna konfiguracjaBłędna konfiguracja•• Plik Plik machinemachine..configconfig
<location allowOverride= "true" >
<system.web>
<securityPolicy>
<trustLevel name="Full" policyFile="internal "/>
<trustLevel name="High" policyFile="web_high trust.config"/>
<trustLevel name="Medium"policyFile="web_mediumtrust.config"/>
<trustLevel name="Low" policyFile="web_lowtr ust.config"/>
<trustLevel name="Minimal"policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trust level= "Full" originUrl=""/>
</system.web>
</location>
47
Jak sprawdzić jej skutki?Jak sprawdzić jej skutki?• Narzęzę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 kataloguaplikacji WWW i uruchamiamy- http://<web_app>/ANSA_V0_31b/default.aspx
- http://<web_app>/ANBS_V0_55/ANBSFiles/default.asp
48
49
50
ProblemyProblemy•• Zbyt wysoki poziom zaufaniaZbyt wysoki poziom zaufania
-- Jak go obniŜyć?Jak go obniŜyć?-- Jak zapewnić, Ŝe uŜytkownik pojedynczej aplikacji go nieJak zapewnić, Ŝe uŜytkownik pojedynczej aplikacji go nie
zmieni?zmieni?-- Czy moŜna zróŜnicować poziom zaufania międzyCzy moŜna zróŜnicować poziom zaufania między
aplikacjami?aplikacjami?
•• Konfiguracja systemu - moŜliwość wykonaniaKonfiguracja systemu - moŜliwość wykonaniapoleceń systemowych:poleceń systemowych:-- Za pośrednictwem WSCRIPT.SHELLZa pośrednictwem WSCRIPT.SHELL-- Przy pomocy interfejsu WMIPrzy pomocy interfejsu WMI-- Dzięki wywołaniom Dzięki wywołaniom WinExecWinExec API API
•• Ponownie widać, jak istotne jest współgraniePonownie widać, jak istotne jest współgranieróŜnych elementów zabezpieczeń!róŜnych elementów zabezpieczeń!
51
ObniŜamy poziom zaufania (1)ObniŜamy poziom zaufania (1)•• Średni poziom zaufania dla wszystkich aplikacji naŚredni poziom zaufania dla wszystkich aplikacji na
konkretnym serwerzekonkretnym serwerze
<<location allowOverridelocation allowOverride =="" falsefalse "" >>
<system. <system. webweb>>
< < securityPolicysecurityPolicy >>
... ...
</ </ securityPolicysecurityPolicy >>
<trust <trust level level =="Medium""Medium" originUrl originUrl ="" />="" />
</system. </system. webweb>>
</ </ locationlocation >>
52
ObniŜamy poziom zaufania (2)ObniŜamy poziom zaufania (2)•• ZróŜnicowanie poziomu zaufania w pliku ZróŜnicowanie poziomu zaufania w pliku machinemachine..configconfig
<<location pathlocation path ="app1.="app1. plpl " " allowOverrideallowOverride =="" falsefalse "" >>
<system. <system. webweb>>
<trust <trust level level =="Medium""Medium" originUrl originUrl ="" />="" />
</system. </system. webweb>>
</</ locationlocation >>
<<location pathlocation path ="=" myadminappmyadminapp " " allowOverrideallowOverride =="" falsefalse "" >>
<system. <system. webweb>>
<trust <trust level level ==”” HighHigh "" originUrloriginUrl ="" />="" />
</system. </system. webweb>>
</</ locationlocation >>
53
Konfigurujemy systemKonfigurujemy system•• Mimo dostosowania ustawień ASP.NET najlepiejMimo dostosowania ustawień ASP.NET najlepiej
będzie nie pominąć dodatkowego utwardzeniabędzie nie pominąć dodatkowego utwardzeniasystemusystemu-- Zablokowanie dostępu do obsługi Zablokowanie dostępu do obsługi Windows ManagementWindows Management
Instrumentation Instrumentation dla wszystkich uŜytkowników pozadla wszystkich uŜytkowników pozaadministratorem systemu przy wykorzystaniu aplikacjiadministratorem systemu przy wykorzystaniu aplikacjiZarządzanie KomputeremZarządzanie Komputerem
-- Zablokowanie moŜliwości tworzenia obiektów Zablokowanie moŜliwości tworzenia obiektów WindowsWindowsScript Host Script Host innym uŜytkownikom niŜ administratorinnym uŜytkownikom niŜ administratorsystemusystemu
-- ASP.NET nigdy nie powinno korzystać z kontaASP.NET nigdy nie powinno korzystać z kontaposiadającego uprawnienia SYSTEMposiadającego uprawnienia SYSTEM
•• To przykład podejściaTo przykład podejścia DefenceDefence--inin--depthdepth
54
BezpiecznaBezpieczna konfiguracja - konfiguracja -podsumowaniepodsumowanie•• Ograniczenie poziomu zaufania aplikacji Ograniczenie poziomu zaufania aplikacji webowychwebowych
•• ZastrzeŜenie dostępu do informacji wewnętrznych (ZastrzeŜenie dostępu do informacji wewnętrznych (npnp..szczegółowych komunikatów o błędach)szczegółowych komunikatów o błędach)
•• Odpowiednie uŜycieOdpowiednie uŜycie
•• Konfiguracja serwera WWWKonfiguracja serwera WWW-- Tworzenie pul aplikacji i limitów dla pulTworzenie pul aplikacji i limitów dla pul
•• Konfiguracja systemu operacyjnegoKonfiguracja systemu operacyjnego-- Zasada minimalnych przywilejów (korzystamy z konta ASPNET,Zasada minimalnych przywilejów (korzystamy z konta ASPNET,
nie z konta systemowego!)nie z konta systemowego!)
-- ZastrzeŜenie dostępu do interfejsów umoŜliwiającychZastrzeŜenie dostępu do interfejsów umoŜliwiającychwywoływanie poleceń systemowychwywoływanie poleceń systemowych
55
PodsumowaniePodsumowanie
56
Bezpieczeństwo usługiBezpieczeństwo usługi•• Nie ma idealnego remediumNie ma idealnego remedium•• Bezpieczna usługa musi być:Bezpieczna usługa musi być:
-- Odpowiednio zaprojektowanaOdpowiednio zaprojektowana-- Dobrze napisanaDobrze napisana-- NaleŜycie skonfigurowanaNaleŜycie skonfigurowana-- Zainstalowana na skutecznie chronionym serwerzeZainstalowana na skutecznie chronionym serwerze-- Obsługiwana przez rozsądnego uŜytkownikaObsługiwana przez rozsądnego uŜytkownika-- Regularnie Regularnie audytowanaaudytowana
•• Wszystkie powyŜsze elementy tworzą spójną Wszystkie powyŜsze elementy tworzą spójną całość, największe problemy to:całość, największe problemy to:-- Dostarczenie wiedzy dla wszystkich Dostarczenie wiedzy dla wszystkich
zainteresowanych stronzainteresowanych stron-- Ułatwienie działań sobie, ale i innymUłatwienie działań sobie, ale i innym
•• DefenceDefence--inin--depthdepth
57
Więcej informacji (przykłady)Więcej informacji (przykłady)•• Artykuły na portalu Artykuły na portalu StartupStartup-IT.-IT.plpl, rozszerzające, rozszerzające
tematykę dzisiejszej prezentacji (takŜe o kod PHP)tematykę dzisiejszej prezentacji (takŜe o kod PHP)•• Raport ZespoRaport Zespołłu Bezpieczeu Bezpieczeńństwa PCSS nt.stwa PCSS nt.
bezpieczbezpieczeńeństwa e-sklepstwa e-sklepóóww (np. sesje internetowe) (np. sesje internetowe)-- http://http://securitysecurity..psncpsnc..plpl//reportsreports//sklepysklepy__internetoweinternetowe__cookiescookies..pdfpdf
•• Szkolenia MICSzkolenia MIC-- http://http://micmic..psncpsnc..plpl//plpl//eventsevents//evev_181207._181207.htmlhtml (bezpieczny kod) (bezpieczny kod)
•• TOP 10TOP 10 Don’ts in Don’ts in ASP.NET ASP.NET configuration files configuration files-- httphttp://://wwwwww..devxdevx..comcom//dotnetdotnet//ArticleArticle/32493/32493
•• The Open Web Application Security Project (m.in.The Open Web Application Security Project (m.in.narznarzęędziedzie ANSA) ANSA)-- http://http://wwwwww..owaspowasp..orgorg
58
Ciekawe pozycje ksiąŜkoweCiekawe pozycje ksiąŜkowe•• Tworzenie bezpiecznych aplikacjiTworzenie bezpiecznych aplikacji
MicrosoftMicrosoft ASP.NET ASP.NET•• Udoskonalanie zabezpieczeUdoskonalanie zabezpieczeńń aplikacji i aplikacji i
serwerserweróów w internetowychinternetowych•• Bezpieczny kod - tworzenieBezpieczny kod - tworzenie
i zastosowaniei zastosowanie•• WiWięęcej ksicej ksiąŜąŜek:ek:
-- httphttp://://wwwwww..microsoftmicrosoft..comcom//polandpoland//securitysecurity//booksbooks//ddefaultefault..mspxmspx (PL) (PL)
-- httphttp://://wwwwww..microsoftmicrosoft..comcom//learninglearning//booksbooks//securitysecurity//defaultdefault..aspasp (EN) (EN)
59
MIC zaprasza :)MIC zaprasza :)
•• Centrum Innowacji Centrum Innowacji MicrosoftMicrosoft-- Program szkoleProgram szkoleńń bezpiecze bezpieczeńństwa MICstwa MIC
•• m.m.inin. warsztaty . warsztaty Omijanie Omijanie firewalli firewalli w systemach w systemach WindowsWindows•• http://http://micmic..psncpsnc..plpl//plpl/tasks//tasks/lectlect.html.html
-- III Konferencja MIC - III Konferencja MIC - DzieDzieńń otwarty otwarty•• 16.04.2009, Pozna16.04.2009, Poznańń•• InteroperacyjnoInteroperacyjnośćść, wirtualizacja, bezpiecze, wirtualizacja, bezpieczeńństwostwo•• WkrWkróótce witce więęcej informacji i rejestracja na stronach MICcej informacji i rejestracja na stronach MIC
60
PCSS zaprasza :)PCSS zaprasza :)
•• Szkolenia DziaSzkolenia Działłu Komputeru Komputeróów Duw DuŜŜej Mocy PCSSej Mocy PCSS-- httphttp://szkolenia.://szkolenia.manman..poznanpoznan..plpl-- Szkolenia sSzkolenia są bezpłatne i wymagają jedynie rejestracjią bezpłatne i wymagają jedynie rejestracji
na stronie PCSSna stronie PCSS-- Zapraszamy na kwiecień 2009Zapraszamy na kwiecień 2009
•• Bezpieczeństwo aplikacji Bezpieczeństwo aplikacji webowychwebowych•• Przykłady ataków i metod ochrony w róŜnych językachPrzykłady ataków i metod ochrony w róŜnych językach
programowania, m.programowania, m.inin. PHP. PHP
61
Informacje kontaktoweInformacje kontaktowe•• Autor prezentacjiAutor prezentacji
-- gerardgerard..frankowskifrankowski@@manman..poznanpoznan..plpl
•• Centrum Innowacji MicrosoftCentrum Innowacji Microsoft-- http://http://micmic..psncpsnc..plpl-- micmic@@manman..poznanpoznan..plpl
•• PCSSPCSS-- http://http://wwwwww..pcsspcss..plpl
•• ZespZespóółł Bezpiecze Bezpieczeńństwa PCSSstwa PCSS-- http://http://securitysecurity..psncpsnc..plpl-- securitysecurity@@manman..poznanpoznan..plpl
62
Pytania i dyskusjaPytania i dyskusja
DziDzięękujkujęę za uwag za uwagęę!!