Technologiczne, Gadżety, Telefony Komórkowe, Pobieranie Aplikacji!

Na jakie punkty bezpieczeństwa powinni zwracać uwagę programiści projektując oprogramowanie?

Aplikacje, systemy i sieci są narażone na różnorodne ataki cybernetyczne, takie jak łamanie haseł, ataki słownikowe i wyszukiwanie wszechobecne.

W przeszłości firmy nie oczekiwały od programistów dogłębnej wiedzy na temat zagadnień bezpieczeństwa, ponieważ za to odpowiadali eksperci ds. bezpieczeństwa. Jednak dzisiaj jednym z najważniejszych zadań programistów jest oczyszczenie kodu z typowych błędów. Ogólnie rzecz biorąc, aplikacje napotykają dwa główne problemy związane z bezpieczeństwem.

Pierwszym problemem są ukryte luki w frameworkach, bibliotekach lub narzędziach używanych przez programistów do tworzenia oprogramowania. Drugim problemem jest słabe kodowanie, które czyni oprogramowanie podatnym na cyberataki.

To tylko niektóre z programów shareware służących do wyznaczania celów, z których możesz skorzystać. Obecnie większość ataków wymierzonych w infrastrukturę i sieci przedsiębiorstw jest realizowana poprzez ukryte luki w aplikacjach działających w systemach klienckich lub serwerowych.

Inhaltsverzeichnis

Dlatego jako programista istotne jest posiadanie pełnych informacji o wektorach ataków, aby nieumyślnie nie stworzyć dostępu hakerom podczas kodowania programów.

Aplikacje i związane z nimi wyzwania

Codzienne aplikacje są narażone na wiele rodzajów cyberataków. Hakerzy, podobnie jak zwykli użytkownicy, instalują i uruchamiają oprogramowanie, sprawdzają jego działanie, a następnie szukają luk w oprogramowaniu. Ponieważ profesjonalni hakerzy są ekspertami w dziedzinie programowania, mają dogłębną wiedzę na temat koncepcji programowania i sposobów wykorzystywania luk.

Nawigacja w katalogu

Twórcy aplikacji internetowych i administratorzy sieci zawsze obawiają się ataków na Directory Traversal. W tym ataku hakerzy oceniają system plików serwera WWW, aby móc wstrzyknąć do niego złośliwe polecenia Wiadomości HTTP. W tej technice haker próbuje przetestować. W adresie internetowym wprowadź kilkakrotnie strukturę katalogów internetowych serwera.

CZYTAĆ:  Agencja w centrum uwagi: Jak Brand On Fire skupia się na…

Po wejściu do katalogu cofa się kilka razy, aby dotrzeć do katalogu systemu operacyjnego i wykonać polecenia na poziomie aktywnego systemu. Aby przeciwdziałać atakom polegającym na przeszukiwaniu katalogów, musisz upewnić się, że systemy są aktualne z poprawkami zabezpieczeń i poszukaj listy zablokowanych znanych znaków w adresach URL, takich jak

Ataki wtryskowe

Największym problemem, z jakim borykają się aplikacje, są ataki typu „wstrzykiwanie”. Ataki polegające na wstrzyknięciu występują z różnych powodów. Może to na przykład zrobić w celu wydobycia informacji. W tym przypadku oprogramowanie aplikacyjne służy jako pośrednik w ataku na bazę danych. Hakerzy wykorzystują tę technikę do wstawiania różnego rodzaju kodu programowego zamiast danych, na które oprogramowanie czeka. Ataki wtryskowe dzielą się na następujące typy.

Wstrzyknięcie SQL

Prawie wszyscy eksperci baz danych i programiści WWW są zaniepokojeni tym atakiem. Programiści używają strukturalnego języka zapytań (SQL) do implementowania okien dialogowych w bazach danych. Aplikacje internetowe i korporacyjne używają strukturalnego języka zapytań do pobierania danych z baz danych. Na przykład możesz mieć oprogramowanie biurowe przechowujące informacje w bazie danych.

Program używa języka zapytań do pobierania tych danych z baz danych i wyświetlania informacji. W atakach polegających na wstrzykiwaniu syntetycznego zapytania haker wykorzystuje polecenia tego języka do manipulowania danymi w bazie danych. W tej metodzie haker wprowadza do programu standardowy kod języka zapytań i dba o to, aby program wysłał powyższe polecenia do bazy danych.

Haker wprowadza instrukcje SQL w miejscu, którego nie spodziewają się programiści lub administratorzy baz danych, np. w polach nazwy użytkownika i hasła na stronie logowania.

Rysunek 1 przedstawia przykład ataku polegającego na wstrzyknięciu kodu SQL. Na tym rysunku zobaczysz stronę logowania oczekującą na otrzymanie nazwy użytkownika i hasła. Kiedy użytkownik wprowadza informacje w te pola, informacje te są umieszczane w instrukcjach SQL, dzięki czemu użytkownik może się uwierzytelnić i zalogować. Poleceniem używanym w tym celu jest polecenie wybierz, które służy do wyszukiwania informacji w bazie danych. Gdy użytkownik kliknie przycisk LOGON, polecenie Choose próbuje znaleźć nazwę użytkownika i hasło wpisane w programie.

Rysunek 1

W powyższym przykładzie haker musi upewnić się, że po uruchomieniu okna dialogowego uzyska pożądany rezultat, ponieważ nie zna prawidłowej nazwy użytkownika i hasła, więc próbuje wprowadzić kod SQL jako hasło, aby móc się zalogować Na przykład jedną z powszechnych technik stosowanych w tym polu jest wstawianie poleceń bazy danych w polu hasła, aby pomyślnie przeprowadzić atak polegający na wstrzyknięciu kodu SQL:

pass” lub 1=1 —

Słowo pass to coś, co haker wpisuje jako swoje hasło, które nie zadziała, ponieważ haker nie posiada konta w aplikacji. Instrukcja 1 = 1 jest używana jako warunek w instrukcji Select, ale nie jest testowana jako rzeczywiste hasło. Punktem krytycznym jest znak „” używany do zamknięcia danego polecenia.

Znaki „-” na końcu tego polecenia oznaczają komentarz i zwykle nie stanowią problemu. Jest jednak pewien subtelny punkt. W kodzie głównym programista używa znaku „ „” w rzeczywistym poleceniu wyboru, gdzie znak ten określa koniec tego polecenia. Teraz dwa uczucia „-”, których w prawdziwym świecie używają programiści tylko do publikowania komentarzy, ignorują kontynuację pierwotnego polecenia Select w górnym wierszu. Dlatego w przypadku złego kodowania technika ta umożliwia hakerowi zalogowanie się.

Kolejnym poważnym wyzwaniem stojącym przed programistami baz danych jest zmiana przez hakerów ceny towarów w sklepie internetowym. Poniższe polecenie umożliwia zalogowanie się, ale wykonuje również zaktualizowaną frazę, która zmienia cenę wszystkich książek z tabelą tytułową na 50 centów:

pass” lub 1=1; zaktualizuj tytuły, ustaw cenę = 0,5 —

Innym ryzykiem związanym z aplikacjami jest wywoływanie poleceń systemu operacyjnego lub serwerów baz danych w celu utworzenia kont użytkowników. Na przykład poniższe polecenie jest wewnętrzną procedurą składowaną w

Przywołanie SQL Server umożliwia twórcy bazy danych wywołanie polecenia systemu operacyjnego w celu zebrania informacji. W powyższym przykładzie haker tworzy w systemie Windows swoje konto o nazwie SQL, aby móc za jego pomocą zalogować się do docelowej witryny. Na szczęście tej techniki nie można używać od wersji SQL Server 2005, ponieważ procedura jest przechowywana

CZYTAĆ:  Jak zaktualizować sterownik graficzny w systemie Linux?

Funkcja xp_cmdshell jest domyślnie wyłączona i z tego powodu nie powinna być włączana.

pass’ ;exec master ..xp_cmdshell „użytkownik sieciowy z hasła SQL /add” –

Poniższe polecenie wykorzystuje tę samą technikę co poprzednio, aby dodać konto do grupy administratorów systemu lokalnego. Dzięki temu haker otrzyma tylne drzwi z pełnymi możliwościami zarządzania. Techniki tej można również użyć, gdy włączona jest funkcja xp_cmdshell, podczas gdy w nowszych wersjach SQL Server jest ona domyślnie wyłączona.

pass’ ;exec master ..xp_cmdshell „administratorzy grup lokalnych sieci z SQL /add” –

Jak możemy zapobiec pomyślnej realizacji ataków polegających na wstrzykiwaniu SQL?

Jak wspomniano, oprogramowanie bezpieczeństwo jest jednym z głównych zadań programistów, ponieważ eksperci ds. bezpieczeństwa mają ograniczone możliwości poradzenia sobie z tym modelem ataku.

  • Oczyszczanie: Programiści muszą zidentyfikować i wyczyścić wszelkie dane wejściowe użytkownika, które mogą wykonać kod SQL przy użyciu wzorców, takich jak wyrażenia regularne. Na przykład muszą usunąć z informacji średnik i dwa myślniki. Dlatego, aby chronić aplikacje oparte na danych, należy wziąć pod uwagę następujące kwestie:
  • Walidacja: programiści muszą zweryfikować dane wejściowe i upewnić się, że liczba znaków, które można zaimportować, oraz rodzaj używanych znaków są ograniczone.
  • Zapytania parametryczne: Stosowanie zapytań parametrycznych oznacza, że ​​dane wejściowe nie są wysyłane bezpośrednio do instrukcji SQL, lecz wysyłane jako parametr do polecenia i akceptowane są tylko określone wartości. Jeżeli wartość parametru jest prawidłowa, jest ona wykonywana za pomocą instrukcji SQL. Schemat parametrycznych okien dialogowych to jeden z najważniejszych tematów w świecie programowania, na który należy zwrócić uwagę.

Wstrzykiwanie bibliotek z łączem dynamicznym

  • Wstrzyknięcie biblioteki DLL (Dynamic Link Library) następuje, gdy aplikacja musi załadować bibliotekę DLL do swojej przestrzeni adresowej i wykonać kod DLL. Kod w bibliotece DLL może być złośliwym kodem, który haker chce wykonać w systemie. Jest to złożony i subtelny wektor ataku; Dlatego jeśli programista nie uwzględni mechanizmu dynamicznej walidacji bibliotek podczas budowania aplikacji, zostanie on pomyślnie zaimplementowany.

Wstrzyknij lekki protokół dostępu do katalogów

(Wstrzykiwanie lekkiego protokołu dostępu do katalogów)

  • Atak polegający na wstrzykiwaniu protokołu Lightweight Directory Access Protocol ma miejsce, gdy haker wypełnia formularz internetowy w taki sposób, że zwykle wykorzystuje dane z formularza do wysyłania zapytań do bazy danych poprzez wywołanie protokołu LDAP. W tym przypadku haker wprowadza żądaną treść i kontroluje ją, a serwer ją uruchamia. Mimo to, ponieważ twórca aplikacji nie zatwierdził żadnego z wpisów, hakerowi uda się wykonać polecenia.

Wstrzykiwalny zastrzyk języka znaczników

(Wstrzykiwanie rozszerzalnego języka znaczników)

  • Atak polegający na wstrzykiwaniu Extendable Markup Language (XML) jest podobny do wstrzykiwania Square Code i LDAP, z tą różnicą, że haker wprowadza do programu kod XML. Wystarczy zweryfikować informacje, aby uniemożliwić pomyślne wdrożenie tego modelu ataków w celu rozwiązania tego problemu. Jeśli twórca aplikacji nie zweryfikował wprowadzonych danych, haker może manipulować procesem wykonywania aplikacji, wstrzykiwając dane XML.

Ataki związane z przepełnieniem bufora

Ponieważ większość aplikacji jest napisana w językach programowania C i C++, hakerzy wciąż próbują szczęścia w przeprowadzaniu ataków polegających na przepełnieniu bufora. Przepełnienie bufora ma miejsce wtedy, gdy haker wysyła do programu wiele informacji i powoduje przepełnienie bufora danych. Bufor to obszar pamięci głównej używany do przechowywania informacji wysyłanych do aplikacji. Wyobraźmy sobie poduszkę niczym szklankę wody o określonej pojemności, gdy wleje ona do szklanki więcej wody niż pojemność. Atak przepełnienia bufora robi dokładnie to samo. Rysunek 2 przedstawia prosty przykład udanej realizacji tego ataku.

Rysunek 2

Jeśli haker może przechowywać informacje w pamięci poza strefą buforową, może wykonać dowolny kod za zgodą administratora. Oprogramowanie narażone na ten wzorzec ataków to aplikacje lub usługi działające w tle systemu operacyjnego.

Dlaczego w aplikacjach występują luki?

Możesz zapytać, dlaczego te ataki są skuteczne. Jest kilka powodów. Zazwyczaj hakerzy spędzają dużo czasu pracując z technologiami, aby odkryć ich słabe strony i dowiedzieć się, jak je wykorzystać do przeprowadzania szkodliwych działań.

CZYTAĆ:  Czym jest spam i jakie są metody jego zapobiegania?

Ponadto programiści i rozwój oprogramowania zespoły celowo umieszczają backdoory w swoich produktach, aby móc w przyszłości wprowadzić niezbędne zmiany w aplikacjach. Czasami hakerom udaje się zidentyfikować i wykorzystać te backdoory. Dlatego programiści są zmuszeni wypuszczać łatki zamykające te tylne drzwi.

Najważniejsze powody powodzenia ataków na aplikacje to:

  • Niewłaściwe zarządzanie danymi wejściowymi: Zarządzanie danymi wejściowymi i ich ocena to kolejne kluczowe zadanie programistów i programistów. Ilekroć dane są wysyłane do programu, programista musi je sprawdzić i upewnić się, że są odpowiednie.

W takim przypadku użytkownikowi wyświetla się błąd, jeśli dane są nieprawidłowe, zamiast przetwarzać informacje. Jeśli programista nie zatwierdzi wprowadzonych danych, hakerzy mogą wprowadzić do programu złośliwe dane, aby kontrolować oprogramowanie w niepożądany sposób.

  • Niewłaściwe zarządzanie błędami: Zarządzanie błędami to kolejne krytyczne zadanie programistów. Programiści muszą zadbać o to, aby poprawić wszelkie błędy wygenerowane w programie i odpowiednio nimi zarządzać, aby program nie napotkał poważnych problemów. Nieprawidłowo obsłużony błąd może prowadzić do nadużyć w programie. Dodatkowo pomocne byłoby szukanie wykrywania błędów po zakończeniu kodowania oprogramowania.
  • Konfiguracja domyślna: Podczas instalowania oprogramowania lub systemów należy w miarę możliwości zmieniać domyślną konfigurację. Pomocna byłaby zmiana ustawień domyślnych, aby hakerzy mieli mniejsze szanse na infiltrację programów. Hakerzy znają domyślne ustawienia produktów i uczą się, jak korzystać z ustawień domyślnych w celu wykorzystania systemów.
  • Nieprawidłowa lub zła konfiguracja: większość ataków hakerskich jest przeprowadzana z powodu niedokładnych lub nieodpowiednich systemów operacyjnych i projektów aplikacji. W przypadku niezbędnego oprogramowania, takiego jak SQL Server, Exchange Server i tym podobne, należy upewnić się, że masz poprawną konfigurację.
  • Słaby szyfr: Jednym z największych problemów aplikacji jest brak wiedzy programistów w zakresie stosowania algorytmów kryptograficznych. Niestety, niektóre aplikacje używane przez systemy operacyjne Windows i Android korzystają ze słabych technologii lub protokołów szyfrowania. Na przykład niektóre aplikacje i oprogramowanie sprzętowe używają algorytmu symetrycznego DES lub 3DES do szyfrowania danych. To szyfrowanie jest niewystarczające i należy je zastąpić potężniejszymi algorytmami, takimi jak AES. Innym przykładem jest zastąpienie słabszych protokołów szyfrowania, takich jak TLS 1.0 i TLS 1.1, nowszą wersją TLS 1.3.
  • Zagrożenia dnia zerowego: Jedną z najczęstszych luk w zabezpieczeniach, które nękają wiele firm, jest zagrożenie dnia zerowego, które odnosi się do nieznanej luki, o której sprzedawca jeszcze nie wie lub o której dowiedział się dopiero niedawno. W Day Zero Vulnerability nie ma wystarczająco dużo czasu na wypuszczenie łatki, w związku z czym hakerzy mogą z niej skorzystać w krótkim czasie. Najlepszym sposobem poradzenia sobie z tym atakiem jest zastosowanie systemów wykrywania i zapobiegania włamaniom.

ostatnie słowo

Bezpieczeństwo to jeden z najczęściej pomijanych aspektów tworzenia aplikacji, z którego korzystamy na co dzień. Zrozumienie, w jaki sposób hakerzy infiltrują infrastrukturę firmy i uszkadzają ją poprzez aplikacje działające w systemach, ma kluczowe znaczenie. Kluczowy punkt dyskusji rozwój oprogramowania aplikacyjnego to zrozumienie, że możesz wykonywać swoją pracę jako programista i przeprowadzać testy bezpieczeństwa zaprojektowanego oprogramowania po ukończeniu projektu oprogramowania ze szczególną starannością i obsesją.

Ponadto zestaw wytycznych, list kontrolnych i szablonów pomaga uniknąć typowych błędów podczas kodowania. Należy jednak pamiętać, że każdy język programowania ma swoje wzorce bezpieczeństwa, co nie ma miejsca w przypadku wszystkich języków programowania.

Na przykład Cisharp upraszcza programistom proces kodowania, wprowadzając koncepcję zwaną zbieraniem śmieci. Natomiast języki takie jak C nie mają takiej funkcji, a programiści muszą zwalniać pamięć podczas alokacji pamięci do obiektów dynamicznych.

Pobierz motywy WordPress za darmoPobierz najlepsze motywy WordPress do pobrania za darmoPobierz motywy WordPressPobierz bezpłatne motywy WordPress Premiumpobierz płatny kurs Udemy za darmopobierz oprogramowanie redmiPobierz bezpłatne motywy WordPress Premiumdarmowy kurs Udemy do pobrania