Jeśli chodzi o bezpieczeństwo stosów korporacyjnych, aplikacje są najsłabszym ogniwem. w Stan bezpieczeństwa aplikacji, 2020 r., Forrester twierdzi, że większość ataków zewnętrznych odbywa się poprzez wykorzystanie luki w oprogramowaniu (42%) lub przez aplikację internetową (35%).
Deweloperzy są pod presją, aby udostępniać funkcje tak szybko, jak to możliwe, ponieważ aplikacje stają się bardziej złożone, a ramy czasowe opracowywania skracają się. Aby osiągnąć zróżnicowaną i atrakcyjną funkcjonalność aplikacji, programiści coraz częściej polegają na bibliotekach innych firm.
Ta zmiana w kierunku komponentów open source sprawia, że bezpieczeństwo praktyki bardziej złożone dla firm. Nowe struktury, takie jak kontenery i interfejsy API, dodatkowo komplikują bezpieczeństwo aplikacji.
Ponieważ programiści są pod presją, aby stale publikować nowe funkcje, organizacje stoją w obliczu bardzo realnego ryzyka, że bezpieczeństwo nie nadąży za tempem. Bezpieczeństwo można osiągnąć, włączając najlepsze praktyki bezpieczeństwa aplikacji do cyklu życia oprogramowania i wdrażając je.
Dlaczego testowanie bezpieczeństwa sieci jest ważne?
Testowanie aplikacji internetowych i ich konfiguracji pod kątem luk w zabezpieczeniach jest celem testowania bezpieczeństwa internetowego. Ataki w warstwie aplikacji (tj. atakowanie aplikacji opartych na protokole HTTP) są głównymi celami.
Często przesyła się różne typy danych wejściowych do aplikacji sieci Web, aby wywołać błędy i spowodować nieoczekiwane zachowanie. W tych tak zwanych „testach negatywnych” system jest sprawdzany pod kątem zachowania, które nie jest zamierzone.
Ważne jest również, aby to zauważyć Testowanie bezpieczeństwa w sieci to nie tylko testowanie funkcji bezpieczeństwa, które są zaimplementowane w aplikacji (np. uwierzytelnianie i autoryzacja).
Konieczne jest również sprawdzenie, czy inne funkcje (np. logika biznesowa oraz walidacja danych wejściowych i wyjściowych) są zaimplementowane w bezpieczny sposób. Celem jest bezpieczny dostęp do funkcji aplikacji WWW.
W jaki sposób testowanie bezpieczeństwa aplikacji zmniejsza ryzyko w Twojej organizacji?
Większość ataków na aplikacje internetowe
- Technika wstrzykiwania SQL
- Skrypty między lokacjami (XSS)
- Zdalne wykonywanie poleceń
- Przemierzanie ścieżki
Wyniki ataku
- Treści podlegające ograniczeniom
- Konta, które zostały naruszone
- Instalacja złośliwego oprogramowania
- Utracone przychody
- Klienci tracą zaufanie
- Uszkodzenie reputacji
- A także wiele więcej
Dzisiejsze środowisko internetowe jest podatne na szereg problemów. Oprócz wiedzy o tym, jak można wykorzystać aplikację, znajomość potencjalnych skutków ataku pomoże Twojej firmie zapobiegawczo wyeliminować luki w zabezpieczeniach i dokładnie je przetestować.
Kontrole łagodzące można zastosować na wczesnych etapach SDLC po zidentyfikowaniu pierwotnej przyczyny luk. Ponadto test bezpieczeństwa aplikacji sieci Web może wykorzystać wiedzę na temat sposobu działania tych ataków w celu ukierunkowania na znane punkty zainteresowania.
Aby zarządzać ryzykiem swojej firmy, musisz zrozumieć wpływ ataku, ponieważ można go wykorzystać do oceny całkowitej dotkliwości luki.
W wyniku testu bezpieczeństwa określenie wagi wykrytych problemów może pomóc w wydajnym i skutecznym ustalaniu priorytetów działań naprawczych. Zminimalizuj ryzyko swojej firmy, zaczynając od spraw o krytycznym znaczeniu i przechodząc do spraw o mniejszym wpływie.
Ocena potencjalnego wpływu każdej aplikacji w bibliotece aplikacji Twojej firmy przed zidentyfikowaniem problemu może pomóc w ustaleniu priorytetów testowania zabezpieczeń aplikacji.
Gdy testy bezpieczeństwa sieci WWW mają ustaloną listę głośnych aplikacji, możemy zaplanować testowanie w pierwszej kolejności w celu ukierunkowania na krytyczne aplikacje Twojej firmy, aby zmniejszyć ryzyko dla Twojej firmy.
Jakie funkcje należy sprawdzić podczas testu bezpieczeństwa aplikacji internetowych?
Podczas testowania bezpieczeństwa aplikacji internetowych należy zbadać kilka funkcji, ale lista nie jest wyczerpująca. Twoja organizacja może być narażona na poważne ryzyko przez niewłaściwą implementację każdego z nich.
10 najlepszych praktyk dotyczących bezpieczeństwa aplikacji internetowych
Poniżej przedstawiono dziesięć najlepszych praktyk w zakresie bezpieczeństwa aplikacji, które Twoja organizacja powinna już wdrożyć.
#1 Śledź swoje aktywa
Jeśli nie wiesz, co masz, nie możesz tego chronić.
Do jakich funkcji lub aplikacji używasz określonych serwerów? W jakich aplikacjach internetowych używasz komponentów open source?
Czy uważasz, że śledzenie zasobów nie jest ważne? Bardzo ważne jest, aby pamiętać, jakie oprogramowanie działa w ramach każdej aplikacji – wystarczy zapytać firmę Equifax, która została ukarana grzywną w wysokości 700 milionów dolarów za brak ochrony danych ponad 145 milionów klientów.
Jeden z portali klientów agencji ratingowej został naruszony po tym, jak komponent open source, Apache Struts, nie został załatany. Firma twierdzi, że nie była świadoma, że portal klienta korzysta z podatnego na ataki komponentu open source.
Im szybciej zaczniesz śledzić swoje zasoby, tym mniej bólów głowy i katastrof będziesz mieć później. Ponieważ organizacje skalują swój rozwój, proces ten może wydawać się syzyfowym zadaniem.
Powinieneś również sklasyfikować swoje aktywa, zwracając uwagę na te, które są krytyczne dla funkcji Twojej firmy i te, które mają mniejsze znaczenie. Następnie możesz ocenić zagrożenia i naprawić je później.
#2 Wykonaj ocenę zagrożenia
Jeśli sporządzisz listę tego, co musisz chronić, możesz następnie zidentyfikować zagrożenia, z którymi się stykasz, i sposoby ich złagodzenia.
Jak hakerzy mogliby włamać się do Twojej aplikacji? Jakie masz istniejące środki bezpieczeństwa? Jakie dodatkowe narzędzia są wymagane?
Musisz odpowiedzieć na te i inne pytania w ramach oceny zagrożenia.
Musisz jednak również realistycznie podejść do poziomu bezpieczeństwa, z którego możesz się cieszyć. Bez względu na to, jak zabezpieczysz swój system, nadal możesz go zhakować. Co więcej, musisz być uczciwy w kwestii środków, które Twój zespół może utrzymać w miarę upływu czasu.
Możesz ryzykować, że Twoje standardy i praktyki bezpieczeństwa zostaną zignorowane, naciskając zbyt wiele. Potraktuj bezpieczeństwo poważnie i nie spiesz się.
Użyj następującego wzoru, aby ocenić swoje ryzyko:
Ryzyko = prawdopodobieństwo ataku x wpływ ataku.
Ryzyko można również traktować jako prawdopodobieństwo wystąpienia czegoś w porównaniu z dotkliwością konsekwencji.
Nawet jeśli wieloryb spadłby z nieba i zmiażdżył cię, byłoby to katastrofą, jest mało prawdopodobne, że tak się stanie.
Z drugiej strony ugryzienie komara podczas wędrówki jest całkiem prawdopodobne, ale prawdopodobnie nie spowoduje znacznej szkody poza kilkoma swędzącymi uderzeniami.
#3 Bądź na bieżąco z łataniem
Instalujesz najnowsze poprawki w swoich systemach operacyjnych? Czy korzystasz z oprogramowania firm trzecich? Są szanse, że pozostajesz w tyle, co oznacza, że jesteś narażony.
Jednym z najważniejszych kroków, które należy podjąć, aby zapewnić bezpieczeństwo oprogramowania, jest aktualizacja oprogramowania od komercyjnego dostawcy lub od społeczności open source.
W przypadku wykrycia luki w zabezpieczeniach i odpowiedzialnego zgłoszenia jej właścicielom produktu lub projektu, jest ona publikowana w witrynach z poradami dotyczącymi bezpieczeństwa i bazach danych, takich jak baza danych WhiteSource Vulnerability Database.
Jeśli to możliwe, poprawka powinna zostać utworzona i wydana przed publikacją, zapewniając użytkownikom możliwość zabezpieczenia ich oprogramowania.
Jeśli jednak nie zastosujesz poprawki, gdy stanie się ona dostępna, nie odniesiesz korzyści z poprawy bezpieczeństwa.
Jeśli obawiasz się, że aktualizacja do najnowszej wersji może uszkodzić Twój produkt, zautomatyzowane narzędzia może bardzo pomóc. Każdego dnia tygodnia należy traktować priorytetowo aktualizacje i poprawki w ramach najlepszych praktyk dotyczących bezpieczeństwa aplikacji.
#4 Zarządzaj swoimi kontenerami
W ostatnich latach kontenery zyskały na popularności, ponieważ coraz więcej organizacji przyjmuje tę technologię ze względu na jej elastyczność, co upraszcza proces opracowywania, testowania i wdrażania komponentów w różnych środowiskach w całym cyklu życia oprogramowania (SDLC).
Ogólnie przyjmuje się, że pojemniki oferują korzyści w zakresie bezpieczeństwa, które dają im przewagę. Ponadto, ze względu na samowystarczalne środowisko systemu operacyjnego, są one podzielone według projektu, co obniża poziom ryzyka.
Jednak kontenery nadal są podatne na exploity, takie jak atak typu breakout, w którym izolacja została przerwana. Kontenery mogą również zawierać lukę w przechowywanym w nich kodzie.
Aby zapewnić bezpieczeństwo potoku CI/CD, należy od początku do końca skanować w poszukiwaniu luk, w tym w rejestrach.
Oprócz tych skanowań najlepsze praktyki dotyczące bezpieczeństwa aplikacji podczas pracy z kontenerami obejmują również ważne zadania, takie jak podpisywanie własnych obrazów za pomocą narzędzi, takich jak Docker Content Trust, jeśli korzystasz z Docker Hub, lub Shared Access Signature, jeśli Twój zespół używa Azure firmy Microsoft.
#5 Ustal priorytety swoich działań naprawczych
W ostatnich latach pojawia się coraz więcej luk w zabezpieczeniach i trend ten nie wykazuje oznak spowolnienia w najbliższym czasie.
W związku z tym deweloperzy są zajęci naprawą. Dla zespołów, które chcą zachować bezpieczeństwo swoich aplikacji przy zachowaniu zdrowego rozsądku, priorytetyzacja jest niezbędna.
Oceny zagrożeń są przeprowadzane na podstawie wagi podatności (ocena CVSS), krytyczności aplikacji, której dotyczy problem, oraz szeregu innych czynników.
Musisz wiedzieć, czy luka w zabezpieczeniach oprogramowania typu open source rzeczywiście wpływa na Twój zastrzeżony kod, jeśli chodzi o luki w oprogramowaniu open source.
Nieskuteczne i niewielkie ryzyko, nawet jeśli ocena CVSS podatnego komponentu jest krytyczna, jeśli nie odbiera on połączeń z Twojego produktu.
Strategie inteligentne to te, które w pierwszej kolejności ustalają priorytety najpilniejszych zagrożeń w oparciu o obecne czynniki, a te o niskim ryzyku pozostawiają na później.
#6 Szyfruj, Szyfruj, Szyfruj
OWASP Top 10 od lat zawiera szyfrowanie danych w spoczynku i podczas przesyłania, co czyni go wymogiem dla każdej listy najlepszych praktyk w zakresie bezpieczeństwa aplikacji.
Ataki typu man-in-the-middle i inne formy włamań mogą ujawnić poufne dane, gdy nie uda ci się odpowiednio zablokować ruchu.
Kiedy przechowywać hasła i identyfikatory użytkownika w postaci zwykłego tekstu, na przykład, narażasz swoich klientów na ryzyko.
Upewnij się, że używasz protokołu SSL ze zaktualizowanym certyfikatem w ramach podstawowej listy kontrolnej szyfrowania. Nie daj się pominąć teraz, gdy standardem jest HTTPS. Zalecane jest również haszowanie.
Ponadto nigdy nie powinieneś „zrzucać własnego krypto”, jak mówią. Zastanów się nad produktami zabezpieczającymi, które są wspierane przez dedykowany zespół z doświadczeniem pozwalającym na właściwe wykonanie pracy.
#7 Zarządzaj uprawnieniami
Nie musisz dawać dostępu do wszystkiego wszystkim w swojej organizacji. Aplikacje i dane są dostępne tylko dla tych, którzy ich potrzebują, postępując zgodnie z najlepszymi praktykami dotyczącymi bezpieczeństwa sieci i najlepszymi praktykami dotyczącymi bezpieczeństwa aplikacji.
Są ku temu dwa powody. Pierwszą rzeczą, którą musisz zrobić, jest uniemożliwienie hakerowi używania danych marketingowych w celu uzyskania dostępu do systemu, który zawiera inne bardziej wrażliwe dane, takie jak dane finansowe lub prawne.
Niepokojące są również zagrożenia wewnętrzne, niezależnie od tego, czy są one niezamierzone – takie jak utrata laptopa lub wysłanie niewłaściwego załącznika do wiadomości e-mail – czy złośliwe.
Zasada najmniejszego przywileju polegająca na dostarczaniu pracownikom tylko tych danych, których potrzebują, jeśli chodzi o dostęp do danych, może zmniejszyć narażenie użytkownika w porównaniu z brakiem kontroli.
#8 Wykorzystaj automatyzację do zarządzania podatnościami
W ciągu ostatnich kilku lat bezpieczeństwo ich aplikacji stało się coraz ważniejsze dla programistów, zwłaszcza jeśli chodzi o zadania takie jak zarządzanie podatnościami.
Aby zaradzić przesunięciu bezpieczeństwa w lewo, zespoły programistów testują wcześnie i często, przeprowadzając jak najwięcej swoich testów bezpieczeństwa na wczesnym etapie procesu tworzenia, gdy naprawianie luk w zabezpieczeniach jest łatwiejsze i tańsze.
Aby zarządzać nieporęcznym procesem testowania ze względu na ogromną liczbę luk w zabezpieczeniach, programiści potrzebują zautomatyzowanych narzędzi.
Aby znaleźć potencjalne luki w zabezpieczeniach w zastrzeżonym kodzie, podczas opracowywania można zastosować statyczne testy bezpieczeństwa aplikacji (SAST) i dynamiczne testy bezpieczeństwa aplikacji (DAST).
Luki w zabezpieczeniach są zamykane za pomocą SAST i DAST, jednak zastrzeżony kod stanowi stosunkowo niewielką część całego kodu.
W ponad 92% wszystkich nowoczesnych aplikacji komponenty open source stanowią 60-80% bazy kodu. Twoja lista kontrolna bezpieczeństwa aplikacji powinna priorytetowo traktować zabezpieczanie komponentów open source.
Korzystając z narzędzi do analizy składu oprogramowania, zespoły mogą przeprowadzać automatyczne kontrole bezpieczeństwa i raporty w całym SDLC, identyfikując każdy komponent open source w ich środowisku i wskazując, który z nich ma znaną lukę, która stanowi zagrożenie dla bezpieczeństwa aplikacji.
Możesz lepiej zarządzać swoimi lukami w zabezpieczeniach, przesuwając automatyczne testy pod kątem problemów z bezpieczeństwem open source w lewo.
#9 Testy penetracyjne
Lista najlepszych praktyk w zakresie bezpieczeństwa aplikacji byłaby niekompletna bez wspominania o testach pisakowych, mimo że zautomatyzowane narzędzia pomagają wyłapać większość problemów związanych z bezpieczeństwem.
Testowanie za pomocą pióra i papieru umożliwia sprawdzanie i sprawdzanie aplikacji w celu znalezienia słabych punktów. Jeśli zdeterminowany haker spróbuje włamać się do Twojej aplikacji, dobrzy testerzy długopisowi dokładnie wiedzą, jakie kroki muszą podjąć.
Można zatrudnić firmy hakerskie, a freelancerzy mogą brać udział w programach bug bounty, takich jak BugCrowd i HackerOne. Twoja firma powinna sponsorować nagrodę za błąd, jeśli jeszcze tego nie zrobiłeś.
Jeśli zatrudnisz testerów piórkowych, o wiele lepiej jest za nie zapłacić, niż radzić sobie z konsekwencjami prawdziwego naruszenia.
# 10 Uważaj na tokeny
Pomimo tego, że jest to łatwe do zabezpieczenia, wielu programistów nie zabezpiecza odpowiednio swoich tokenów dla osób trzecich.
Przeszukując popularne witryny programistów, możesz łatwo znaleźć niezabezpieczone tokeny online. Zamiast przechowywać szczegóły tokenów w innym miejscu, programiści po prostu umieszczają je w swoich repozytoriach typu open source.
Podstawową najlepszą praktyką w zakresie bezpieczeństwa aplikacji jest odpowiednie zabezpieczenie tokenów innych firm. Nie należy zostawiać zakupionych tokenów w kodzie, aby ktokolwiek mógł je wziąć.
Najlepsze praktyki w zakresie bezpieczeństwa aplikacji jako podstawowe praktyki
Każda z przedstawionych tutaj najlepszych praktyk powinna być zintegrowana z procesem ciągłego rozwoju Twojej organizacji. Aplikacje i dane Twojej firmy są zagrożone, jeśli nie zminimalizujesz ryzyka. Wykonaj poniższe czynności, aby zminimalizować ryzyko.
Unikanie błędów, które prawdopodobnie popełnią inni, jest jednym ze sposobów na wyprzedzenie hakerów, więc trudniej jest celować w ataki. Nigdy nie będzie środka bezpieczeństwa na granicy lub aplikacji, który byłby w pełni odporny na włamania.
Jednak przestrzeganie tych podstawowych najlepszych praktyk może sprawić, że Twoja aplikacja nie będzie warta kłopotów hakerów.