czym jest OWASP?
Open Web Application Security Project (OWASP) to międzynarodowa organizacja non-profit zajmująca się bezpieczeństwem aplikacji internetowych. Jedną z podstawowych zasad OWASP jest to, aby wszystkie materiały były swobodnie dostępne i łatwo dostępne na swojej stronie internetowej, dzięki czemu każdy może poprawić bezpieczeństwo własnych aplikacji internetowych. Materiały, które oferują, obejmują dokumentację, narzędzia, filmy i fora. Być może ich najbardziej znanym projektem jest OWASP Top 10.
Co to jest OWASP Top 10?,
the OWASP Top 10 to regularnie aktualizowany raport przedstawiający problemy związane z bezpieczeństwem aplikacji internetowych, skupiający się na 10 najważniejszych zagrożeniach. Raport został opracowany przez zespół ekspertów ds. bezpieczeństwa z całego świata. OWASP odnosi się do Top 10 jako „dokumentu uświadamiającego” i zaleca, aby wszystkie firmy włączyły raport do swoich procesów w celu zminimalizowania i/lub ograniczenia ryzyka bezpieczeństwa.
poniżej przedstawiono zagrożenia bezpieczeństwa zgłoszone w raporcie OWASP Top 10 2017:
1., Atak Injection
atak Injection ma miejsce, gdy niezaufane dane są wysyłane do interpretera kodu poprzez wprowadzenie formularza lub inne dane do aplikacji internetowej. Na przykład atakujący może wprowadzić kod bazy danych SQL do formularza, który oczekuje nazwy użytkownika ze zwykłym tekstem. Jeśli Dane wejściowe formularza nie są odpowiednio zabezpieczone, spowoduje to wykonanie kodu SQL. Jest to znane jako atak SQL injection.
atakom iniekcyjnym można zapobiec poprzez walidację i / lub dezynfekcję danych przekazanych przez użytkownika., (Walidacja oznacza odrzucenie podejrzanie wyglądających danych, podczas gdy dezynfekcja odnosi się do czyszczenia podejrzanie wyglądających części danych.) Ponadto administrator bazy danych może ustawić kontrolki, aby zminimalizować ilość informacji, które może ujawnić atak iniekcyjny.
2. Złamane uwierzytelnianie
luki w systemach uwierzytelniania (logowania) mogą dać atakującym dostęp do kont użytkowników, a nawet możliwość uszkodzenia całego systemu za pomocą konta administratora., Na przykład atakujący może pobrać listę zawierającą tysiące znanych kombinacji nazwy użytkownika i hasła uzyskanych podczas naruszenia danych i użyć skryptu, aby wypróbować wszystkie te kombinacje w systemie logowania, aby sprawdzić, czy istnieją takie, które działają.
niektóre strategie łagodzenia luk w uwierzytelnianiu wymagają uwierzytelniania dwuskładnikowego (2FA), a także ograniczania lub opóźniania powtarzających się prób logowania za pomocą ograniczania szybkości.
3., Narażenie na wrażliwe dane
Jeśli aplikacje internetowe nie chronią poufnych danych, takich jak informacje finansowe i hasła, atakujący mogą uzyskać dostęp do tych danych, a sprzedający wykorzystują je do nikczemnych celów. Jedną z popularnych metod kradzieży poufnych informacji jest użycie ataku na drodze.
ryzyko ekspozycji na dane można zminimalizować poprzez szyfrowanie wszystkich poufnych danych, a także wyłączenie buforowania * wszelkich poufnych informacji. Ponadto twórcy aplikacji internetowych powinni zadbać o to, aby niepotrzebnie nie przechowywali żadnych poufnych danych.,
*buforowanie jest praktyką tymczasowego przechowywania danych do ponownego wykorzystania. Na przykład przeglądarki internetowe często buforują strony internetowe, dzięki czemu jeśli użytkownik powróci do tych stron w ustalonym czasie, przeglądarka nie musi pobierać stron z Internetu.
4. XML External Entities (XEE)
jest to atak na aplikację internetową, która przetwarza dane wejściowe XML*. Dane wejściowe mogą odwoływać się do zewnętrznego obiektu, próbując wykorzystać lukę w parserze. „Jednostka zewnętrzna” w tym kontekście odnosi się do jednostki pamięci masowej, takiej jak dysk twardy., Parser XML może zostać oszukany w celu wysłania danych do nieautoryzowanego podmiotu zewnętrznego, który może przekazać poufne dane bezpośrednio atakującemu.
najlepszym sposobem zapobiegania atakom XEE jest to, aby aplikacje internetowe akceptowały mniej złożone typy danych, takie jak JSON**, lub przynajmniej łatały parsery XML i wyłączały korzystanie z zewnętrznych podmiotów w aplikacji XML.
*XML lub Extensible Markup Language jest językiem znaczników, który ma być zarówno czytelny dla człowieka, jak i czytelny dla maszyny. Ze względu na złożoność i luki w zabezpieczeniach jest obecnie wycofywany z użycia w wielu aplikacjach internetowych.,
**JavaScript Object Notation (JSON) jest rodzajem prostej, czytelnej dla człowieka notacji często używanej do przesyłania danych przez internet. Chociaż pierwotnie został stworzony dla JavaScript, JSON jest językiem agnostycznym i może być interpretowany przez wiele różnych języków programowania.
5. Broken Access Control
Access control odnosi się do systemu, który kontroluje dostęp do informacji lub funkcjonalności. Złamana Kontrola dostępu pozwala atakującym ominąć autoryzację i wykonywać zadania tak, jakby byli uprzywilejowanymi użytkownikami, takimi jak Administratorzy., Na przykład aplikacja internetowa może pozwolić użytkownikowi na zmianę konta, na którym jest zalogowany, po prostu zmieniając część adresu url, bez żadnej innej weryfikacji.
kontrolę dostępu można zabezpieczyć, upewniając się, że aplikacja internetowa używa tokenów autoryzacyjnych* i ustawia na nich ścisłe kontrole.
*wiele usług wydaje tokeny autoryzacyjne podczas logowania użytkowników. Każde uprzywilejowane żądanie użytkownika wymaga obecności tokena autoryzacji. Jest to bezpieczny sposób, aby upewnić się, że użytkownik jest tym, za kogo się podaje, bez konieczności ciągłego wprowadzania swoich danych logowania.
6., Błędna Konfiguracja zabezpieczeń
błędna konfiguracja zabezpieczeń jest najczęstszą luką na liście i często jest wynikiem używania domyślnych konfiguracji lub wyświetlania nadmiernie wyrazistych błędów. Na przykład aplikacja może pokazać użytkownikowi zbyt opisowe błędy, które mogą ujawnić luki w zabezpieczeniach aplikacji. Można to złagodzić, usuwając wszelkie nieużywane funkcje w kodzie i upewniając się, że komunikaty o błędach są bardziej ogólne.
7., Luki w skryptach między witrynami występują, gdy aplikacje internetowe umożliwiają użytkownikom Dodawanie niestandardowego kodu do ścieżki url lub na stronie internetowej, która będzie widoczna dla innych użytkowników. Luka ta może zostać wykorzystana do uruchomienia złośliwego kodu JavaScript w przeglądarce ofiary. Na przykład atakujący może wysłać do ofiary wiadomość e-mail, która wydaje się pochodzić z zaufanego banku, z linkiem do strony internetowej tego banku. Ten link może mieć złośliwy kod JavaScript oznaczony na końcu adresu url., Jeśli strona banku nie jest odpowiednio zabezpieczona przed skryptami krzyżowymi, złośliwy kod zostanie uruchomiony w przeglądarce internetowej ofiary po kliknięciu łącza.
strategie łagodzenia skutków dla skryptów między stronami obejmują usuwanie niezaufanych żądań HTTP, a także walidację i / lub dezynfekcję treści generowanych przez użytkowników. Korzystanie z nowoczesnych frameworków do tworzenia stron internetowych, takich jak ReactJS i Ruby on Rails, zapewnia również wbudowaną ochronę skryptów między stronami.
8. Niepewna Deserializacja
To zagrożenie dotyczy wielu aplikacji internetowych, które często serializują i deserializują dane., Serializacja oznacza pobranie obiektów z kodu aplikacji i przekształcenie ich w format, który może być użyty do innego celu, takiego jak przechowywanie danych na dysku lub strumieniowanie ich. Deserializacja jest dokładnie odwrotna: przekształcenie serializowanych danych z powrotem w obiekty, z których aplikacja może korzystać. Serializacja jest czymś w rodzaju pakowania mebli do pudełek przed przeprowadzką, a deserializacja jest jak rozpakowanie pudełek i złożenie mebli po przeprowadzce. Niepewny atak deserializacji jest jak majstrowanie przy zawartości pudełek przed ich rozpakowaniem.,
niepewny exploit deserializacyjny jest wynikiem deserializacji danych z niezaufanych źródeł i może skutkować poważnymi konsekwencjami, takimi jak ataki DDoS i ataki zdalnego wykonywania kodu. Chociaż można podjąć kroki, aby spróbować złapać atakujących, takie jak monitorowanie deserializacji i wdrażanie kontroli typu, jedynym pewnym sposobem ochrony przed niebezpiecznymi atakami deserializacji jest zakaz deserializacji danych z niezaufanych źródeł.
9., Używanie komponentów ze znanymi lukami
wielu współczesnych programistów internetowych używa komponentów takich jak biblioteki i frameworki w swoich aplikacjach internetowych. Komponenty te są elementami oprogramowania, które pomagają programistom uniknąć zbędnej pracy i zapewnić potrzebne funkcje; częstym przykładem są frameworki front-end, takie jak React i mniejsze biblioteki, które dodawały ikony udostępniania lub testowanie a / B. Niektórzy atakujący szukają w tych komponentach luk w zabezpieczeniach, które mogą następnie wykorzystać do organizowania ataków., Niektóre z bardziej popularnych komponentów są używane na setkach tysięcy stron internetowych; osoba atakująca znajdująca dziurę w zabezpieczeniach w jednym z tych komponentów może pozostawić setki tysięcy stron narażonych na wykorzystanie.
twórcy komponentów często oferują poprawki i aktualizacje zabezpieczeń, aby usunąć znane luki, ale twórcy aplikacji internetowych nie zawsze mają zainstalowane w swoich aplikacjach poprawki lub najnowsze wersje komponentów., Aby zminimalizować ryzyko uruchamiania komponentów ze znanymi lukami, programiści powinni usunąć nieużywane komponenty ze swoich projektów, a także upewnić się, że otrzymują komponenty z zaufanego źródła i upewnić się, że są aktualne.
10. Niewystarczające rejestrowanie i monitorowanie
wiele aplikacji internetowych nie podejmuje wystarczających kroków, aby wykryć naruszenia danych. Średni czas wykrycia naruszenia wynosi około 200 dni po jego wystąpieniu. Daje to atakującym dużo czasu na spowodowanie uszkodzeń, zanim pojawi się jakakolwiek reakcja., OWASP zaleca, aby twórcy stron internetowych wdrożyli rejestrowanie i monitorowanie, a także plany reagowania na incydenty, aby upewnić się, że są świadomi ataków na swoje aplikacje.
aby uzyskać bardziej techniczne i dogłębne spojrzenie na top 10 OWASP, zobacz oficjalny raport .