Najcześciej popełniane błędy bezpieczeństwa podczas tworzenia aplikacji
Wiedza 3 lutego 2017 Krzysztof Sadecki
Aplikacje internetowe są zwykle elementami krytycznymi dla infrastruktury każdego przedsiębiorstwa. Firmy muszą polegać na swoich aplikacjach internetowych, ponieważ służą one przede wszystkim do komunikowania się z partnerami, akcjonariuszami oraz klientami. Zazwyczaj także to aplikacje internetowe są głównym miejscem przechowywania informacji korporacyjnych, służą do udostępniania linków oraz do przeprowadzania szeregu innych czynności. Większość z tych aplikacji jest naprawdę wygodna, a ich funkcjonalność zależy od funkcjonalności przeglądarki internetowej klienta.
Jednak aplikacje internetowe mogą posiadać niezliczoną ilość luk w zabezpieczeniach, które narażają zarówno pojedynczego użytkownika, jak i całą organizację, na wiele zagrożeń.
Cyber-przestępcy doskonale zdają sobie sprawę z tych niedociągnięć i zbierają dane o większości stron dostępnych w sieci Internet. Tendencja ta cały czas rośnie. Ataki na strony internetowe są coraz mocniej sprofilowane, coraz bardziej wyrafinowane i coraz częstsze.
Według badań Gartner Group, 75 procent ataków cybernetycznych oraz naruszeń bezpieczeństwa następuje bezpośrednio przez aplikacje internetowe. Niezależnie od tego, czy rozwijamy aplikacje w firmie, czy w domowym zaciszu, musimy cały czas liczyć się z tym, że hakerzy będą sprawdzać nasze aplikacje w celu zbadania ich infrastruktury, architektury oraz zidentyfikowania potencjalnych luk w zabezpieczeniach, jakie mogą zostać wykorzystane.
Zagrożenia wysokiego ryzyka, które mogą zagrażać aplikacjom internetowym
Istnieje wiele bardzo poważnych zagrożeń dla każdej aplikacji internetowej. Z istnienia tzw. zagrożeń wysokiego ryzyka powinni sobie zdawać sprawę głównie przedsiębiorcy oraz jednostki przetwarzające dane osobowe. Zagrożenia wysokiego ryzyka obejmują wiele zagrożeń, z których większość ma za zadanie prowadzić do kompromitacji stron internetowych oraz upokorzenia organizacji w oczach klientów. Poniżej zostały wymienione główne zagrożenia.
Denial of Service ( DoS ):
Ataki DoS na aplikacje polegają na zalaniu aplikacji ogromną ilością żądań, co może spowolnić działanie danej witryny lub całkowicie zawiesić jej funkcjonowanie. Ataki typu rozproszonego ataku na odmowę usługi ( Distributed Denial Of Service – DdoS ) polegają na przesłaniu szkodliwego ruchu z dużej ilości serwerów. Atakujący może także spróbować przesłać szkodliwe pliki, które mogą być pobrane przez pracowników i przetworzone w środowisku korporacyjnym.
Cross-site scripting ( XSS ): To jest wspólna luka, która wykorzystuje słabości aplikacji internetowych, aby bezpośrednio zaatakować użytkowników. Atak polega głównie na przekazaniu szkodliwych danych poprzez normalną funkcjonalność aplikacji internetowej. Otóż, jeśli w aplikacji nie istnieje poprawna weryfikacja danych, złośliwy kod może zostać przesłany do przeglądarki internetowej. W wielu przypadkach jest to odpowiednio napisany kod JavaScript, ale ataki mogą polegać również na przesłaniu kodu HTML albo Flash. Cross-site scripting może umożliwić hakerom kradzież poświadczeń użytkownika, przechwycić sesję oraz przekierować użytkowników do szkodliwych witryn.
Ataki SQL Injection: Przeważnie są to przypadkowe ataki ukierunkowane na aplikacje, które wynikają ze słabego zabezpieczenia danych zapisywanych w bazach danych. Ataki polegają głównie na wstrzyknięciu kodu SQL, w celu przejęcia kontroli nad witryną, wstrzyknięcia malware oraz dystrybucji wirusów. Zwykle wszystkie te scenariusze są wynikiem zastosowania złych technik wytwarzania oprogramowania. Udane ataki intruzów są przeważnie atakami na logikę danego zapytania SQL i mogą być użyte przeciwko bazie danych. Większość programistów buduje dynamiczne zapytania do bazy danych, które umożliwiają intruzom pracę z danymi. Skutki takiego podejścia mogą obejmować uszkodzenie danych, kompromitację konta, a nawet całkowite przejęcie danego hosta.
Modyfikacja parametrów i buforów danych: Większość aplikacji internetowych używa parametrów adresu URL do przekazywania informacji pomiędzy elementami strony internetowej. Hakerzy bardzo często korzystają z tego procesu i przepisują wszystkie parametry na własny sposób. Mogą także spróbować nadpisać bufory danych. Najczęstszą ofiarą ataku polegającego na nadpisaniu buforów, są ciasteczka na stronach internetowych, a przykładem ataku jest np. atak polegający na manipulacji nagłówkami http. Intruzi mogą w ten sposób zastąpić dane użytkowników swoim własnym kodem.
Szablon polityki bezpieczeństwa
Zasady projektowania zabezpieczeń są w istocie strategią ochrony aplikacji internetowych oraz zapewnienia dostępności w każdym okresie czasu. Są to na ogół kroki, który mają na celu ustalenie odpowiedzialności, przewidywanych kierunków zagrożeń oraz określenia metod zapobiegania i łagodzenia skutków. Niezbędne jest określenie metod i zasad, które posłużą do zapewnienia wysokiej dostępności aplikacji i minimalizacji słabych punktów.
Określenie mechanizmów kontroli oraz dostępu
Ta część jest zwykle wspólna dla większości aplikacji internetowych. Polega na wprowadzeniu wystarczających mechanizmów kontroli procesu autoryzacji dla osób próbujących uzyskać dostęp do określonych zasobów. W bezpiecznym środowisku, proces autoryzacji powinien być oparty zarówno na roli danego użytkownika, jak i kontroli dostępu danego użytkownika do określonego zasobu. Organizacje powinny się upewnić, że użytkownicy w żaden sposób nie są w stanie ominąć ACL, przechodząc bezpośrednio do pliku lub strony.
Można to zrobić poprzez wyznaczenie domyślnych ACL oraz udzielać lub odmawiać dostępu dla określonych użytkowników oraz ról. Zespoły IT mogą w tym celu także wykorzystywać sprawdzone frameworki oraz bilioteki. Dostępy i regulacje dostępów powinny być przechowywane oddzielnie, a w przypadku wydawania nowych pozwoleń powinny być zastosowane ustandaryzowane procedury i powinno się unikać działań niestandardowych, ponieważ wtedy uwierzytelnianie poszczególnych kanałów może się okazać naprawdę trudne.
Wyznaczanie zakresu obowiązków
Nigdy nie możecie zakładać, że będziecie w stanie predefiniować wszystkie obowiązki w zakresie dostępu do plików i danych, przechowywanych przez aplikacje internetowe. Przeważnie jednym z najważniejszych kosztów rozwoju oraz utrzymania aplikacji internetowych jest zweryfikowanie frameworków, algorytmów szyfrowania oraz bibliotek, natomiast znacznie mniej kosztów jest poświęcone na zarzadzanie kontrolą dostępu. A więc musicie się koniecznie upewnić, że udało się Wam jasno opisać obowiązki dla każdej roli i każdego użytkownika w każdym możliwym kroku. W przypadku innego podejścia do problemu i przyznawaniu domyślnych uprawnień, może się okazać, że będzie to bardzo niebezpieczne dla integralności aplikacji.
Wszystkie role oraz kontrola dostępu, powinny być zdefiniowane nie tylko dla programistów, ale dla wszystkich osób, jakie są zaangażowane w użycie aplikacji internetowych. Trzeba więc poświęcić trochę czasu, aby nakreślić role w różnych poziomach dostępu dla każdego użytkownika. Zauważcie, że każde oprogramowanie do obsługi aplikacji może być inne, a jednak polityki dostępu do aplikacji mogą być cały czas ogromnie skuteczne.
Środki bezpieczeństwa i narzędzia
Dobrze zdefiniowany szablon polityki bezpieczeństwa obejmuje korzystanie z algorytmu szyfrowania dla danych wymienianych z aplikacją internetową. Użytkownicy powinni pomóc określić dane, które są na tyle cenne, aby je zaszyfrować i muszą aktywnie uczestniczyć w procesie identyfikacji luk bezpieczeństwa w celu identyfikacji zagrożeń. Niektóre oferowane zasoby musza być chronione o wiele silniej od innych.
Wdrożenie takich mechanizmów, jak firewall dla aplikacji internetowych, pozwala chronić aplikacje korporacyjne i strony internetowe przed większością możliwych zagrożeń, dzięki czemu można unikać kosztownych przestojów oraz innych incydentów bezpieczeństwa. Przedsiębiorstwom można zalecić poszukiwanie rozwiązań posiadających PCI-certificated WAF, ponieważ pozwala to ochronić daną aplikację internetową przed większością możliwych ataków na aplikację. Niektóre oferty pozwalają na zastosowanie niestandardowych zasad bezpieczeństwa, które umożliwiają egzekwowanie polityk bezpieczeństwa oraz możliwość eliminacji fałszywych alarmów. Nowoczesne rozwiązania pozwalają także chronić aplikacje poprzez korzystanie ze zbiorowej wiedzy na temat występujących zagrożeń. Informacje są agregowane przy użyciu narzędzi do analizy danych.
Odzyskiwanie danych po awarii i zastosowanie mechanizmów awaryjnych
W każdej organizacji powinny zostać użyte rozwiązania do odzyskiwania danych oraz do natychmiastowego reagowania w sytuacjach wysokiego ryzyka. Wybrane strategie powinny zostać wykorzystane do ograniczenia możliwości ekspozycji ataku. Narzędzia do odzyskiwania danych po awarii powinny zadziałać jak najszybciej oraz wspomagać właściwą ocenę ryzyka. Z drugiej strony wszystkie incydenty powinny być poddawane ocenie zgodnie z realnym poziomem zagrożenia z uwzględnieniem całej infrastruktury oraz wszystkich aplikacji w danym środowisku.
Mechanizmy alarmowe mogą oczywiście obejmować takie czynności, jak przeniesienie aplikacji do środowiska off-line lub zatrzymanie wycieku danych w czasie rzeczywistym. Może się to dziać automatycznie, kiedy poziom zagrożeń przekroczy dopuszczalny poziom. Sytuacje awaryjne powinny zostać od razu skierowane do poprawki, chyba że istnieją inne sposoby ograniczenia ekspozycji danych.
Inne środki
Większość aplikacji internetowych oferuje środki i poświadczenia, które mogą przechowywać dane użytkowników w postaci skrótów oraz zaszyfrowanych danych. Szczególnie jest to niezbędne, kiedy mamy do czynienia z bazą danych lub plikami konfiguracyjnymi. Należy przewidzieć także taką możliwość, kiedy surowe listy ACL mogą zostać użyte do ochrony poświadczeń użytkownika. Przedsiębiorstwa powinny także używać białych list danych żądań oraz czarnych list poleceń, jakie nie powinny być wykonywane w systemie.
Jeżeli żądania są wykorzystywane do konstruowania zapytań SQL, należy unikać luk w zabezpieczeniach, które pozwolą hakerom na manipulację zapytaniami oraz ich podmianę. Jeśli to możliwe, należy unikać stosowania dynamicznych zapytań, argumentów w cudzysłowach oraz znaków specjalnych. Ogólnie wszystkie wejścia do baz danych powinny być filtrowane i określone poprzez bardzo surowe zasady walidacji.
Środki zgodności i korzyści biznesowe
Jeśli chodzi o zachowanie zgodności, każde naruszenie polityki bezpieczeństwa powinno być poddane zbadaniu i powinny zostać wyciągnięte konsekwencje wobec osób, które naruszyły celowo politykę bezpieczeństwa. Każdy dostęp do aplikacji internetowej powinien być poddawany ocenie jako wymóg opracowanej polityki bezpieczeństwa, chyba że został zwolniony z danej polityki bezpieczeństwa.
Wszystkie wnioski powinny być aktualizowane na bieżąco w celu uwzględnienia procesu kontroli bezpieczeństwa. Wszystkie aplikacje internetowe, które nie posiadają odpowiedniej kontroli bezpieczeństwa nie powinny się znaleźć w publicznej sieci do czasu, kiedy zostaną zintegrowane z globalną polityką bezpieczeństwa.
Wszystkie te działania, jakie mogą zostać podjęte, spowodują rzeczywiste korzyści biznesowe, które objawią się brakami przestoju podczas korzystania z aplikacji. Przedsiębiorstwa, które posiadają naprawdę bezpieczne aplikacje, mogą w rzeczywistości przyciągnąć większą ilość klientów.
Dodatkowo, organizacje, które stworzą szablony zasad bezpieczeństwa, odniosą również korzyści związane z zaletami technicznymi, takimi jak zachowanie integralności i bezpieczeństwa danych, niskie koszty rozwoje oraz wysoką dostępność aplikacji. Te czynniki mogą zwiększyć renomę firmy w branży oraz wśród klientów. W końcu, zachowanie spójnej polityki bezpieczeństwa pozwoli wypełnić lukę pomiędzy dobrymi praktykami oraz zgodnością mechanizmów zabezpieczeń.
Read it in english version: http://www.businessmantoday.us/the-most-common-…tion-development/