Udostępnianie bezpiecznych usług ug w sieci Internet Gerard Frankowski Zespół Bezpieczeństwa PCSS VII Seminarium StartUp-IT Poznań, 24.10.2008 2008
Agenda Wprowadzenie Nowoczesny startup w Internecie Specyfika masowych usług elektronicznych Kto odpowiada za bezpieczeństwo? Błędy, zagrożenia, sposoby ochrony Błędy w projekcie i kodzie aplikacji Błędy w konfiguracji usług i systemów Podsumowanie, pytania, dyskusja 2
Wprowadzenie 3
Cel prezentacji Ułatwienie startu działalności nowoczesnego mikroprzedsiębiorstwa dzięki oferowaniu bezpiecznych usług w Internecie Dla kogo jest ta prezentacja? Decydent / właściciel Projektant / programista Administrator Prezentacja nie jest dla użytkowników! 4
Nowoczesny startup w Internecie StartUp-IT nowoczesne mikrobiznesy Firma z sektora IT Rodzaj oferowanej usługi (np. e-sklep, e hosting, płatności, portal aukcyjny / społecznościowy) Kwestie niezależne od specyfiki firmy Reklama, kontakt z użytkownikami (strona WWW, forum, helpdesk) Dostęp do usług z poziomu sieci wewnętrznej (poczta, WWW) Wymogi zewnętrzne np. e-rozliczeniae 5
Specyfika usług internetowych Większość usług ma za zadanie dotrzeć do maksymalnie licznej grupy docelowej Przeciętny użytkownik nie posiada wiedzy na temat bezpieczeństwa IT Usługi zorientowane na użyteczność Charakter przetwarzanych danych Dane uwierzytelniające, osobowe (np. adres) Historia działań (np. zakupów) Numery kart kredytowych, płatności elektroniczne 6
Ogólne zagroŝenia usług WWW Ataki na serwery sieciowe Szpiegostwo przemysłowe Szkodzenie konkurencji Ataki na komputery użytkowniku ytkowników Przejmowanie maszyn Kradzież mocy obliczeniowej Kradzież danych osobowych i tożsamo samości Rozsyłanie spamu Szantaż Organizowanie botnetów ataki DDoS itd. 7
Kto odpowiada za bezpieczeństwo? 8
Kto odpowiada za bezpieczeństwo? Decydent / projektanci Pomysł jaka usługa będzie oferowana? Jaki jest budżet? Przetarg: użyteczność a bezpieczeństwo Programiści Implementacja projektu Ograniczani przez zakres projektu Administratorzy Konfigurują i udostępniaj pniająusługę, system operacyjny, sieć, urządzenia dostępowe,... Ograniczeni przez możliwości usług i systemów, budżet na bezpieczeństwo,... 9
Inwestycje w bezpieczeństwo w firmie Inwestycja w bezpieczeństwo nie przynosi natychmiastowych, namacalnych korzyści Za to istnieją koszty (często spore) Specyfika mikroprzedsiębiorstw Rolę decydenta, projektanta, programisty i testera pełnić może nawet jedna osoba! 10
Problem uŝytkownika? Zwłaszcza w przypadku usług masowych, użytkownik nie posiada specjalistycznej wiedzy Powinien za to mieć (i stosować) ) wiedzę ogóln lną Rola usługodawcy w kształtowaniu świadomości użytkownika-klienta klienta Promocja pożądanych zachowań Odpowiedni interfejs użytkownika Strawnie podana wiedza Bezpieczeństwo usługi nie może być tylko problemem jej użytkownika 11
Błędy, zagroŝenia, sposoby ochrony 12
Krótki przegląd Błędy w projekcie i kodzie Błędy w projektowaniu funkcjonalności Znaczenie filtrowania danych Ataki XSS (Cross( Site Scripting) Ataki SQL Injection Remote Code Execution Błędy w konfiguracji serwerów Ataki Information Disclosure ASP.NET / IIS MS SQL Server 2005 Powyższa lista absolutnie nie wyczerpuje tematu! 13
Błędy w projekcie funkcjonalności Przyjęcie niewłaściwych założeń co do funkcjonalności Przykład: logowanie 2-etapowe: 2 zatwierdzenie nazwy użytkownika, a dopiero potem prośba o podanie hasła Możliwość enumeracji użytkowników Uwzględnienie niewystarczających metod zabezpieczenia usługi Przykład: brak szyfrowania komunikacji lub brak wymuszania silnych algorytmów 14
Główna przyczyna problemów Nieodpowiednie filtrowanie danych (lub jego brak) to bezpośredni rednia przyczyna większo kszości najpoważniejszych niejszych luk bezpieczeństwa Przepełnienie bufora XSS (Cross( Site Scripting) SQL Injection Remote Code Execution Nie można ufać ć żadnym ż danym wejściowym, zwłaszcza pochodzącym cym od użytkownika u Także: bazy danych, zmienne środowiskowe,... ALL INPUT IS EVIL!!! 15
Jak sytuacja wygląda w praktyce? Czy filtrowanie jest istotnie aż takim problemem? Grafika: http://webappsec.org 16
Wprowadzenie do filtrowania danych Brak Czarne listy (black( lists) Definiujemy dane, które odrzucimy Białe e listy (white( lists) Definiujemy dane, które dopuścimy Problemem obu rodzajów w list może e być skomplikowana definicja Wyrażenia regularne Dodatkowe mechanizmy weryfikacji Sprawdzanie typu i wartości Enumeracja wartości (np. dni tygodnia, nazwy miesięcy) 17
Przykład: wyraŝenie regularne w ASP Zadanie: Przesłać kod pocztowy metodą GET wyrażenie regularne: ^[0-9]{2,2} 9]{2,2}-[0-9]{3,3}$ adres URL: http://anyserver anyserver.com/code.asp?code=61-874 <% set code = request.querystring querystring(" ("code") set re = new RegExp re.pattern Pattern="^[0-9]{2,2} 9]{2,2}-[0-9]{3,3}$" if re.test(.test(code) then ' Postal code OK - run normally else ' Bad postal code - handle the error end if %> 18
Atak XSS - opis XSS: Cross Site Scripting Zagrożone one sąs strony, na których wyświetlana wietlana treść częś ęściowo zależy y od użytkownikau komentarze, fora dyskusyjne formularze internetowe, wyszukiwarki strony pobierające parametry tekstowe metodą POST/GET Opis ataku Napastnik wysyła a do podatnej strony ciąg g znaków w będący b kodem np. JavaScript Nazywam się <script>alert( >alert(document.cookie)</ )</script> Ciąg g znaków w staje się elementem wyświetlanej wietlanej strony, przeglądarka wykonuje kod 19
Atak XSS - przykład Trywialny przykład strona pobiera z URL parametr o nazwie name <%response response.write(request.querystring querystring(" ("name"))%> http://service service.com?name=<script>alert( >alert(document.cookie) </script script> 20
Ataki XSS - zagroŝenia Utrudnianie życia użytkownikomu Wyskakujące okienka Kradzież danych sesji użytkownikau Przesyłanie cookies na serwer kontrolowany przez napastnika Zaawansowane ataki XSS Skanowanie portów w TCP w zdalnej sieci Podsłuchiwanie rozmów w (ActiveX( EasycallLite.ocx ocx) Odwołania do wybranych stron z przeglądarki ofiary 21
Obrona przed atakami XSS Odpowiedzialny: projektant/programista Odpowiednie filtrowanie danych, w szczególno lności pod kątem występowania znaków w <, > O ile to możliwe, najlepiej stosować technikę białej listy Definiowanie cookies z atrybutem httponly 22
Atak SQL Injection SQL Injection atak na bazę danych Zagrożone one sąs strony budujące zapytania bazodanowe przy pomocy parametrów w uzyskanych od użytkownikau Przebieg ataku Napastnik przekazuje złośliwe z parametry do zapytania Sfałszowane zapytanie powoduje wyświetlenie wietlenie na wynikowej stronie WWW innych danych niżn zakładano, adano, ich większej ilości lub informacji o strukturze bazy W skrajnym przypadku zostaje wykonane polecenie języka obsługi baz danych Napastnik uzyskuje dalsze informacje, pozwalające mu lepiej ukierunkować atak 23
Atak SQL Injection - podatny kod Strona pobiera z formularza parametr nazwisko set nazwisko = request.form("nazwisko") set objconn = Server.CreateObject("ADODB.Connection") objconn.open <CONNECTION_STRING> strsql = "SELECT * FROM pensje WHERE Nazwisko ='" strsql = strsql & nazwisko strsql = strsql & "'" set objrs = Server.CreateObject("ADODB.Recordset") objrs.open strsql, objconn do while not objrs.eof response.write("<br>") for each x in objrs.fields response.write(" " & x.name & " = " & x.value & " ") next objrs.movenext loop objconn.close 24
Atak SQL Injection - przykład Dostęp do danych nazwisko: Baker or 1=1-- SQL Server 2005 SELECT * FROM pensje WHERE Nazwisko = Baker or 1=1-- 25
Atak SQL Injection - przykład 2 Modyfikacja danych Nazwisko: ' insert into pensje (Lp, Imie, Nazwisko, Pensja) values(5, Gerard, Frankowski', 10000)-- SQL Server 2005 26
Atak SQL Injection - zagroŝenia Nieautoryzowany dostęp p do danych Modyfikacja rekordów w bazy danych Dodanie lub usunięcie rekordów Usunięcie bazy danych Wykonywanie poleceń ń środowiska ś bazy danych i potencjalnie poleceń systemowych 27
Atak SQL Injection - obrona Odpowiedzialny: programista Filtrowanie danych wejściowych użytkownika u pod kątem k obecności ci znaków w specjalnych używanej u wersji języka j obsługi baz danych Filtrowanie równier wnież danych odczytanych z bazy! Odpowiedzialny: administratora Bezpieczna konfiguracja k środowiska bazodanowego Zasada minimalnych uprawnień Odpowiednia polityka kontroli dostępu Restrykcje dostępu na poziomie systemu operacyjnego 28
Sesja internetowa Protokół HTTP jest bezstanowy Rozróżnianie tożsamości użytkowników jest kluczowe dla korzystania z e-usługe Sesja internetowa Wyróżniany przez session ID zbiór r informacji o połą łączeniu Po stronie serwera plik sesji lub baza danych Po stronie klienta ciasteczka (cookies( cookies) 29
Ataki na sesje przykład Warunki Usługa umożliwia zdefiniowanie własnego w session ID Przebieg ataku Napastnik podsuwa p ofierze link Jak oszukać skarbówkę?? KliknijK tutaj! Pod linkiem kryje sięurl URL: http://usluga usluga.pl/< /<script>document.cookie= sessionid=abcd ;</script> Ofiara klika link,, co powoduje nawiązanie sesji z usługąu usluga.pl z identyfikatorem sesji abcd Napastnik co jakiś czas próbuje nawiąza zaćsesję z tym samym identyfikatorem Po udanej próbie napastnik przechwytuje sesję ofiary 30
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 u Podszycie się pod ofiarę Kradzież tożsamo samości ofiary...... i jej konsekwencje: kradziek radzieżdanych, zawarcie fałszywej umowy, kradzież środków w finansowych, uzyskanie danych będących podstawą do szantażu,... 31
Ataki na sesje - obrona Odpowiedzialny: administrator Odpowiednia konfiguracja serwera WWW /.NET Unikanie wyświetlania wietlania informacji o błęb łędach użytkownikowi Odpowiedzialny: projektant/programista Bezpieczna konfiguracja sesji Czas życia ciasteczka oraz sesji Atrybuty secure, httponly Wymuszanie wartości session ID po stronie serwera 32
Ataki Information Disclosure Narażone sąs źle skonfigurowane serwery Usługi ujawniają szczegółowe informacje o błęb łędach, wersje oprogramowania, ścieżki,... ASP: trace.vxd PHP: phpinfo.php Informacje te mogą być przydatne w planowaniu dalszych ataków Bezpośrednie zagrożenie dla samej usługi, pośrednie dla jej klientów Odpowiedzialny: administrator Wyłą łączenie raportowania błęb łędów w na stronach WWW Zapis informacji o błęb łędach do pliku logu 33
Information Disclosure - przykład Dodatkowe metody ochrony: Własne pliki z komunikatami o błędach Wyłączenie możliwości przeglądania zawartości katalogów 34
Zdalne wykonywanie poleceń Zagrożone one sąs strony: Pozwalające na załadowanie adowanie przez użytkownika u własnych w plików, a następnie odwoływanie się do nich Uruchamiające ce polecenia systemowe z parametrami przekazanymi przez użytkownikau Odpowiedzialny: projektant/programista Rozważenie, czy funkcjonalność jest konieczna Filtrowanie typów w plików ładowanych na serwer Filtrowanie treści parametrów w poleceń pod kątem k występowania znaków w specjalnych powłoki oki 35
Zdalne wykonywanie poleceń atak Warunki: Użytkownik forum może wgrać plik z informacjami o sobie Można odwołać się bezpośrednio do ścieżki, w której znajduje się wgrany plik Nie jest sprawdzana nazwa i zawartość pliku Przebieg ataku Użytkownik wgrywa skrypt ASP/PHP zawierający polecenia systemowe Użytkownik wywołuje adres URL odwołujący się do pliku Polecenia są wykonywane z uprawnieniami serwera WWW 36
Zdalne wykonywanie poleceń atak 2 37
Błędy w konfiguracji systemów 38
Serwer WWW Dlaczego serwer WWW? Hosting strony WWW firmy Udostępnianie usług hostingowych Oferowanie innych usług przez WWW Aplikacje intranetowe Należy pamiętać o atakach z wewnątrz sieci Narzędzia testujące Dinis Cruz, OWASP ANSA Asp.Net Security Analyser ANBS Asp.Net Baseline Security v. 0.55 39
40
Top 10 don ts in ASP.NET conf. files Custom Errors Disabled Leaving Tracing Enabled Leaving Debugging Enabled Cookies Accessible Through Client-Side Script Cookieless Session State Enabled Cookieless Authentication Enabled Failure to Require SSL for Authentication Cookies Sliding Expiration Used Non-Unique Authentication Cookie Used Hardcoded Credentials Used 41
Bezpieczna konfiguracja.net / IIS Pliki konfiguracyjne ASP.NET Web.config (globalny i lokalne) Machine.config config (globalny) Ograniczenie uprawnień aplikacji webowych (do poziomu medium) Współdzielony hosting: : blokada możliwości zmiany uprawnień na poziomie pojedynczej aplikacji webowej Restrykcje dostępu do usługi ugi WMI,, WSH IIS: Tworzenie oddzielnych pul aplikacji Limity przydziału czasu procesora Limity przydziału pamięci 42
Web.config C:\WINDOWS WINDOWS\Microsoft.NET\Framework\<versi on>\config CONFIG\Web. Web.config <location allowoverride="false false"> <system.web web> <securitypolicy>... </securitypolicy securitypolicy> <trust level="medium" originurl="" /> </system.web web> </location location> 43
Web.config / Machine.config Globalny Web.config config: <system.web web> <trace enabled=" ="false" localonly=" ="true" " /> <httpcookies httponlycookies=" ="true"/> <customerrors mode=" ="RemoteOnly" " /> <authentication mode=" ="Forms"> <forms name="{abcd1234...}" slidingexpiration=" ="false" requiressl=" ="true" " /> </authentication authentication> </system.web web> Machine.config config: <system.web web> <deployment retail=" ="true" /> </system.web web> 44
Serwer baz danych Dlaczego serwer baz danych? Wsparcie dla serwera WWW Bazy danych produktów, klientów,... Baza danych w intranecie Ataki z wewnątrz sieci Narzędzia, materiały Narzędzia konfiguracyjne SQL Server 2005 SQL Server Best Practices Analyser http://www www.microsoft.com/poland/technet/ /technet/article/art0056_01.mspx http://blogs blogs.msdn.com/sqlrem Skrypty Gustavo o Duarte SQL Server 2005 http://duartes duartes.org/gustavo/articles/lock-down-sql-server Server-2005. 2005.aspx 45
Procedury składowane Procedury składowane Zwykłe: sp_xxx _xxx,, rozszerzone: r xp_xxx Domyślnie dostępne dla zwykłego użytkownikau ytkownika, np.: xp_regread (odczyt kluczy z rejestru Windows) xp_revokelogin / xp_grantlogin (nadawanie i odbieranie uprawnień logowania) Procedury nie zwrócą sensownych wyników w przy założ łożeniu dobrej konfiguracji systemu operacyjnego Blokada użycia u procedury składowane adowanej: REVOKE EXECUTE ON <name< name> > FROM public Szczególną uwagę należy zwrócić na procedurę xp_shellcmd 46
Ciekawostka: procedury składowane Enumeracja kont użytkowniku ytkowników w przy pomocy procedury xp_revokelogin Istniejąca nazwa konta Nieistniejąca nazwa konta 47
Ochrona serwera baz danych Ochrona na wyższych poziomach Sieć, firewall,, IDS/IPS,... System operacyjny Unikanie Mixed Mode Authentication Restrykcje dostępowe do baz master, msdb (USE master) REVOKE VIEW ANY DATABASE FROM public (USE msdb) ) REVOKE CONNECT TO guest Logowanie zdarzeń Osobna grupa użytkowniku ytkowników-administratorów w SQL Wykorzystanie schematów w i rólr Zastrzeżenie enie dostępu do metadanych 48
Podsumowanie 49
Przygotowanie bezpiecznej usługi (1) Pomysł Projekt Jaka funkcjonalność i dla kogo? Wybór technologii i rozwiązań Zgodność z prawem polskim i międzynarodowym Wiedza i świadomość Znajomość zagrożeń związanych z usługą Znajomość zagrożeń związanych z technologiami Ogólne zasady bezpieczeństwa IT Zasada minimalnych przywilejów (minimum privileges principle) Zasada dogłębnej ochrony (security( in-depth depth) 50
Przygotowanie bezpiecznej usługi (2) Budowa i konfiguracja środowiska System operacyjny Rozwiązania serwerowe Konfiguracja sieci Tworzenie usługi CMS czy własny kod? Konfiguracja usługi Wybór rozwiązania bezpiecznych płatności Niezależny audyt bezpieczeństwa Wstępny Cykliczny 51
Co warto zapamiętać? Usługi internetowe są narażone na szereg ataków Szczególnie zagrożone one sąs usługi ugi związane zane z przepływem danych osobowych i środków w finansowych (np. e-sklepy, e portale społecznościowe) Główną rolę w zabezpieczaniu e-use usług ug odgrywają ich twórcy oraz administratorzy systemów Najpoważniejszym i najczęściej występującym błędem jest nieodpowiednie filtrowanie danych lub jego brak Odpowiednie zabezpieczenie usług to kwestia kluczowa i złożona, ale nie do uniknięcia Knowing how to live with insecurity is the only security J. Allen Paulos 52
Więcej informacji (przykłady) Planowany cykl artykułów na portalu Startup-it it.pl,, rozszerzający tematykę dzisiejszej prezentacji Raport Zespołu u Bezpieczeństwa PCSS nt. bezpieczeń eństwa e-sklepe sklepów (np. sesje internetowe) http://security security.psnc.pl/reports/sklepy_internetowe_cookies.pdf Szkolenia MIC http://mic mic.psnc.pl/pl/events/ev_181207. _181207.html (bezpieczny kod) http://mic mic.psnc.pl/pl/events/ev_240608. _240608.html (bezpieczeństwo w firmie) MS Security Guidance for IIS http://www www.microsoft.com/technet/security/prodtech/iis. /IIS.mspx TOP 10 Don ts in ASP.NET configuration files http://www www.devx.com/dotnet/article/32493 The Open Web Application Security Project http://www www.owasp.orgorg 53
Informacje kontaktowe Autor prezentacji gerard.frankowski frankowski@man.poznan.plpl Centrum Innowacji Microsoft http://mic mic.psnc.plpl mic@man man.poznan.plpl PCSS http://www www.pcss.plpl Zespół Bezpieczeństwa PCSS http://security security.psnc.plpl security@man man.poznan.plpl 54
Pytania i dyskusja Dziękuj kuję za uwagę! 55