Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie...

62
Zabezpieczanie aplikacji Zabezpieczanie aplikacji webowych webowych w ASP.NET w ASP.NET Gerard Frankowski Gerard Frankowski Zesp Zesp ó ó l l Bezpiecze Bezpiecze ń ń stwa PCSS stwa PCSS Warsztaty Warsztaty Startup Startup -IT -IT Tworzenie serwis Tworzenie serwis ó ó w w internetowych internetowych Pozna Pozna ń ń , , 27.02. 27.02. 2009 2009

Transcript of Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie...

Page 1: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 2: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 3: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 4: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

4

Kim Kim jestejesteśśmy i comy i co robimy robimy??

Page 5: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 6: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 7: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 8: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 9: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

9

BezpieczeBezpieczeńństwo aplikacji stwo aplikacji webowychwebowychw ASP.NET - wybrane aspektyw ASP.NET - wybrane aspekty

Page 10: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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!

Page 11: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 12: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 13: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 14: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

14

RezultatyRezultaty

Test 5

Test 2

Test 3 Test 4

Test 1

Test 6 Test 7 Kolor czerwony ipochodne –niebezpiecznie

Kolor zielony –bezpiecznie

Page 15: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 16: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 17: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

%>

Page 18: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 19: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 20: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 21: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 22: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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)

Page 23: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 24: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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ść

Page 25: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

25

Błędy w konfiguracji ASP.NETBłędy w konfiguracji ASP.NET

Page 26: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 27: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 28: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 29: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

29

NieprawidNieprawidłłowa konfiguracjaowa konfiguracja

Page 30: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

30

PrawidPrawidłłowa konfiguracjaowa konfiguracja

Page 31: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 32: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 33: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

33

TajemniczyTajemniczyplikpliktracetrace..axd axd ;);)

Page 34: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 35: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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?

Page 36: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 37: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 38: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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!

Page 39: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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!

Page 40: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 41: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 42: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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>

Page 43: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 44: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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!

Page 45: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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".

Page 46: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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>

Page 47: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 48: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

48

Page 49: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

49

Page 50: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 51: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 52: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 53: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 54: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 55: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

55

PodsumowaniePodsumowanie

Page 56: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 57: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 58: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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)

Page 59: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 60: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 61: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

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

Page 62: Zabezpieczanie aplikacji webowych w ASPsecurity.psnc.pl/files/startup_270209.pdf · Zabezpieczanie aplikacji webowych w ASP.NET Gerard Frankowski Zesp ół Bezpiecze ństwa PCSS Warsztaty

62

Pytania i dyskusjaPytania i dyskusja

DziDzięękujkujęę za uwag za uwagęę!!