Bezpieczeństwo w bazach danych

background image

Bezpieczeństwo
w bazach danych

Dr inż. Izabela Rojek

background image

Plan wykładu

„

Jak należy rozumieć bezpieczeństwo baz
danych?

„

Poziomy bezpieczeństwa

„

Implementacja różnych poziomów
bezpieczeństwa

background image

Jak należy rozumieć
bezpieczeństwo baz danych?

„

Pojęcie bezpieczeństwa baz danych wiąże
się nieodłącznie z bezpieczeństwem
serwera baz danych

„

W hierarchii bezpieczeństwo serwera baz
danych stoi wyżej niż bezpieczeństwo
pojedynczej bazy

background image

Jak należy rozumieć
bezpieczeństwo baz danych?

Bezpieczeństwo serwera baz danych to:

„

zapewnienie stabilnego i w miarę możliwości

bezawaryjnego działania serwera baz danych,

„

zapewnienie uprawnionym użytkownikom dostępu do

odpowiednich baz danych,

„

ograniczenie dostępu do danych dla użytkowników

nieuprawnionych,

„

zapewnienie jak najmniejszej ingerencji serwera baz

danych w działanie systemu operacyjnego komputera.

background image

Jak należy rozumieć
bezpieczeństwo baz danych?

Bezpieczeństwo baz danych natomiast dotyczy

następujących aspektów:

„

umożliwienie tylko autoryzowanym

użytkownikom wykonywania odpowiednich

operacji na bazie danych,

„

zapewnienie bezpieczeństwa fizycznego bazy

danych (odpowiednia strategia kopii

zapasowych).

background image

Jak należy rozumieć
bezpieczeństwo baz danych?

Mówiąc o bezpieczeństwie należy rozróżniać dwa

pojęcia:

„

uwierzytelnienie - oznacza identyfikację

użytkownika na podstawie jego nazwy i hasła

„

autoryzacja - jest fazą następującą po

poprawnym uwierzytelnieniu i polega na

określeniu uprawnień przypadających

uwierzytelnionemu użytkownikowi.

background image

Poziomy bezpieczeństwa

„

bezpieczeństwo fizyczne danych,

„

bezpieczeństwo sieci,

„

bezpieczeństwo domeny,

„

bezpieczeństwo maszyny lokalnej,

„

bezpieczeństwo serwera baz danych,

„

bezpieczeństwo bazy danych,

„

bezpieczeństwo aplikacji bazodanowej.

background image

Poziomy bezpieczeństwa

„

Bezpieczeństwa doskonałego

nie można w

praktyce nigdy zapewnić, ale można podjąć
kroki, by zapobiegać skutkom wszelkich awarii,
katastrof lub niepożądanych ingerencji czynnika
ludzkiego.

„

Aby zadbać o globalne bezpieczeństwo, należy
zaplanować strategię na każdym z
wymienionych poziomów bezpieczeństwa

background image

Poziom bezpieczeństwa fizycznego
danych

„

określa, czy

w przypadku awarii sprzętu, katastrofy

(

jako

katastrofę rozumiemy nie tylko czynniki naturalne jak
powodzie, także kradzieże i inne wpływy czynnika
ludzkiego

) lub

fizycznego uszkodzenia plików danych

jesteśmy w stanie odtworzyć dane i jak długo baza
danych (lub serwer baz danych) będzie niedostępny dla
użytkowników.

„

Na tym poziomie należy też odpowiedzieć na pytanie czy

kopie danych są bezpieczne (m.in. czy niepowołane

osoby nie mają do nich dostępu).

background image

Poziom bezpieczeństwa sieci

„

określa, czy dane są bezpiecznie
przesyłane w sieci.

„

Szczególnie dotyczy to ściśle poufnych
danych, tj. numerów kart kredytowych czy
danych personalnych klientów firmy.

background image

Poziom bezpieczeństwa domeny

„

określa, czy komputery w domenie (

w

szczególności kontrolery domeny

) są

odpowiednio zabezpieczone.

„

W dobie integracji serwerów baz danych

(np.

MS SQL Server

) z systemami

operacyjnymi w przypadku braku

zabezpieczeń w systemie operacyjnym

bezpieczeństwo serwera baz danych

spada do minimum

.

background image

Poziom bezpieczeństwa serwera
baz danych

„

określa, czy serwer baz danych jest
odpowiednio zabezpieczony przed
nieuprawnionymi użytkownikami
(fizycznie - maszyna oraz
wirtualnie - odpowiednie mechanizmy
uwierzytelniające
).

background image

Poziom bezpieczeństwa bazy
danych

„

określa, czy dostęp do bazy danych i ról w
bazie danych jest odpowiednio
skonfigurowany
(na ogół jest to sprawa konfiguracji w
SZBD
).

background image

Poziom bezpieczeństwa aplikacji
bazodanowej

„

określa, czy kod aplikacji klienckiej
współpracującej z bazą danych jest
napisany w sposób bezpieczny
(czy aplikacja nie umożliwia zmniejszenia
bezpieczeństwa na którymkolwiek z
pozostałych poziomów
).

„

Szczególnie należy tu zwrócić uwagę na
dane wprowadzane przez użytkowników.

background image

Implementacja różnych poziomów
bezpieczeństwa

„

Implementacja bezpieczeństwa fizycznego

„

Implementacja bezpieczeństwa sieci

„

Implementacja bezpieczeństwa komputerów i
domen

„

Implementacja bezpieczeństwa serwerów baz
danych i samych baz

„

Implementacja bezpieczeństwa aplikacji
bazodanowej

background image

Implementacja bezpieczeństwa
fizycznego

„

Zadaniem administratora baz danych jest

zapewnienie

tolerancji błędów dysków fizycznych dla systemu i dla

danych

oraz

zaplanowanie strategii sporządzania i

przechowywania kopii zapasowych

.

„

Tolerancję błędów dysków fizycznych można osiągnąć

używając woluminów typu RAID

- 1 lub RAID

- 5 (RAID -

ang. Redundant Array of Independent Disks).

background image

Implementacja bezpieczeństwa
fizycznego

„

Implementacja RAID-1 polega na jednoczesnym

przechowywaniu danych na dwóch fizycznych

dyskach stanowiących

jeden dysk logiczny

(

dwie

kopie danych - w przypadku awarii jednego

dysku, drugi nadal umożliwia dostęp do danych

).

„

Oznacza to, że 50% pojemności woluminu typu

RAID-1 jest przeznaczone na przechowywanie

danych, a druga połowa służy do

przechowywania kopii danych.

background image

Implementacja bezpieczeństwa
fizycznego

„

RAID-5 to dysk logiczny składający się z co najmniej

trzech dysków fizycznych (

z każdego dysku wolumin

zabiera tyle samo przestrzeni dyskowej

).

„

W woluminach typu RAID-5 część przestrzeni

dyskowej jest poświęcana na zapis tzw. danych

parzystości (

niezbędnych do odzyskania danych w

przypadku awarii jednego z dysków wchodzących w

skład woluminu

).

„

Im więcej dysków wchodzi w skład woluminu, tym
mniej przestrzeni dyskowej zajmują dane
parzystości (

mniejsza nadmiarowość danych

).

background image

Implementacja bezpieczeństwa
fizycznego

Najlepszym rozwiązaniem w kwestii zapewnienia

tolerancji błędów dysków fizycznych są

sprzętowe woluminy RAID pracujące z
kontrolerami SCSI

(z uwagi na szybszą pracę

niż RAID software'owy). Niestety jest to
jednocześnie najdroższe rozwiązanie.

background image

Implementacja bezpieczeństwa
fizycznego

„

Kopie bezpieczeństwa zwane też kopiami
zapasowymi
(ang. backup) powinny być
przechowywane bądź na zewnętrznym nośniku
(

taśmy, płyty CD lub inne nośniki przenośne

) lub

na innym komputerze niż ten, z którego
kopiujemy dane.

„

Ponadto nośniki z kopiami zapasowymi powinny
być przechowywane w innym miejscu niż
maszyna, z której pochodzą dane (

zmniejszamy

ryzyko w przypadku pożarów czy powodzi

).

background image

Implementacja bezpieczeństwa
fizycznego

„

Strategia kopii zapasowych powinna być zaplanowana

przez administratora baz danych i administratora

systemu operacyjnego.

„

Należy zaplanować strategię, która odpowiada

potrzebom firmy - tzn. należy odpowiedzieć na pytanie,

czy ważniejsze jest szybkie sporządzanie kopii

zapasowych, czy też istotniejsze jest jak najszybsze

przywracanie danych po awarii.

„

Na ogół strategia musi uwzględnić obie kwestie.

„

Stąd najczęściej powtarzanym schematem sporządzania
kopii zapasowych jest wykonywanie co tydzień kopii
wszystkich danych oraz codzienne wykonywanie kopii
różnicowych (tylko dane zmodyfikowane danego dnia).

background image

Implementacja bezpieczeństwa
fizycznego

„

W budowaniu strategii kopii zapasowych należy

też uwzględnić "godziny szczytu" pracy serwera

(proces wykonywania kopii zapasowych pociąga

za sobą dodatkowe obciążenie serwera).

„

Dlatego na ogół operacje te są wykonywane w

godzinach nocnych i są planowane w ten

sposób, by nie kolidowały z czasem, gdy

użytkowanie serwera przez klientów jest

najintensywniejsze.

background image

Implementacja bezpieczeństwa
sieci

„

Przy planowaniu bezpieczeństwa sieci należy zadać

sobie pytanie,

czy dane przesyłane z naszego serwera baz danych

są poufne.

Jeśli tak, to możemy zastosować dostępne protokoły

szyfrujące, tj.

SSH czy IPSec

.

„

Oprócz implementacji sieciowych protokołów

szyfrujących do transmisji danych należy ograniczyć

ilość danych wysyłanych w świat do niezbędnego

minimum

(najlepiej nie "przedstawiać się" zbytnio w sieci -

ujawnienie oprogramowania serwera baz danych to

pierwszy krok do zachwiania bezpieczeństwa naszego

serwera).

background image

Implementacja bezpieczeństwa
komputerów i domen

„

Nie należy instalować serwerów baz

danych na serwerach kluczowych dla

domeny (kontrolery domeny).

„

Najlepsza struktura domeny to taka, w

której każdy serwer pełni pojedynczą

funkcję

(np. serwer aplikacji, serwer plików,

serwer baz danych itd.).

background image

Implementacja bezpieczeństwa
komputerów i domen

Niezbędna jest odpowiednia polityka

administratorów systemu (lub domeny), czyli:

„

utrzymywanie aktualnego poziomu

zabezpieczeń systemu operacyjnego oraz

serwera baz danych,

„

odpowiednia polityka bezpiecznych haseł

użytkowników,

„

zmiana nazw kont administratorskich,

„

monitorowanie logowania do systemu (domeny),

- ograniczanie dostępu do plików i folderów,

background image

Implementacja bezpieczeństwa
komputerów i domen

„

nadawanie minimalnych wymaganych uprawnień dla

użytkowników i grup,

„

jak najmniejsze wykorzystywanie kont

administratorskich,

„

implementacja "zapór ogniowych" (ang. firewall),

„

ogranicznenie fizycznego dostępu do serwerów i

kontrolerów domeny,

„

uruchamianie usług serwera baz danych przy użyciu

konta użytkownika specjalnie stworzonego w tym celu

(nie administratora), zapewnienie stabilności tego konta

(np. nigdy nie wygasające hasło).

background image

Implementacja bezpieczeństwa
serwera baz danych i samych baz

„

Pod hasłem bezpieczeństwa serwera baz

danych rozumiemy umożliwienie korzystania z

serwera tylko osobom do tego uprawnionym.

„

Większość SZBD oferuje uwierzytelnianie

użytkowników na dwóch poziomach: na

poziomie serwera (

użytkownik może dostać się

do serwera

) oraz na poziomie bazy danych

(

użytkownik serwera ma dostęp do konkretnej

bazy danych

).

background image

Implementacja bezpieczeństwa
serwera baz danych i samych baz

„

Mechanizmy uwierzytelniania i autoryzacji są

różne i zależą od konkretnego SZBD.

„

Zazwyczaj użytkownicy dzieleni są na

role

(grupy), natomiast rolom nadawane są

określone

uprawnienia

.

„

Ponadto niezbędnym dobrym nawykiem

administratora baz danych powinno być

rejestrowanie i monitorowanie zdarzeń

na

serwerze w poszukiwaniu nietypowych zdarzeń.

background image

Implementacja bezpieczeństwa
aplikacji bazodanowej

„

Piętą achillesową systemu informatycznego

współpracującego z bazą danych często jest

interfejs

użytkownika

(od strony programistycznej i implementacji

logiki biznesowej).

„

Szczególnie chodzi tu o umożliwienie użytkownikom

oddziaływania na serwer baz danych lub nawet na

system operacyjny serwera z poziomu aplikacji

klienckiej.

„

Należy ze szczególną uwagą projektować aplikacje

bazodanowe.

background image

Implementacja bezpieczeństwa
aplikacji bazodanowej

Oto kilka zasad, którymi należy się kierować przy tworzeniu

interfejsów dla tych aplikacji:

„

zachowaj

przezroczystość aplikacji i bazy danych

(nie

pokazuj informacji o źródle aplikacji i o strukturze bazy
danych), szczególnie uważaj na komunikaty domyślne
aplikacji (lepiej ustawić swoje, które powiedzą tylko, że
wystąpił błąd),

„

nigdy nie ufaj użytkownikowi

aplikacji i wpisywanym

przez niego wartościom,

„

sprawdzaj

tylko, czy wejście jest tym, czego oczekujesz i

odrzucaj wszystko inne,

background image

Implementacja bezpieczeństwa
aplikacji bazodanowej

„

walidację wejścia

przeprowadzaj na wielu poziomach,

„

Termin walidacja pochodzi od angielskiego słowa validate i oznacza — w
kontekście informatycznym — sprawdzanie poprawności i zgodności z
zadanymi kryteriami. Jest on stosowany w odniesieniu do danych
pochodzących od użytkownika jak również w stosunku do zmiennych,
obiektów, typów i klas w różnych językach programowania.

„

Wprowadzając dane, użytkownik może — świadomie lub nie — popełnić
pomyłkę. Jeśli dane odebrane od użytkownika poddamy przetwarzaniu bez
weryfikacji, wówczas, w zależności od odporności aplikacji, możemy mieć do
czynienia z różnymi rodzajami błędów, od drukowania w przeglądarce klienta
komunikatów diagnostycznych PHP czy MySQL, poprzez utratę spójności bazy
danych, aż po ujawnienie niepowołanym użytkownikom informacji poufnych. Z
tego powodu, nie wolno ignorować wagi problemu.

background image

Implementacja bezpieczeństwa
aplikacji bazodanowej

„

używaj

wyrażeń regularnych,

„

staraj się nie używać

konkatenacji

do

tworzenia zapytań SQL (zamiast tego użyj
procedur z parametrami),

„

łącz się z bazą danych używając w miarę
najmniej uprzywilejowanego konta
użytkownika.

background image

Implementacja bezpieczeństwa
aplikacji bazodanowej

Poniżej kilka porad dla administratorów systemów i serwerów

baz danych:
- nigdy nie myśl, że system i serwer baz danych są
bezpieczne,
- nigdy nie ufaj temu, co użytkownik podaje na wejście,
- zachowuj zasadę minimalnych uprawnień,
- zachowuj zasadę "domyślnie zamknięte",
- regularnie szukaj nieprawidłowości w systemie,
- bądź na bieżąco z technologiami i technikami
programistycznymi.

background image

Bezpieczeństwo baz danych

„

Bezpieczeństwo baz danych ma wiele aspektów

i musi być rozpatrywane na wielu poziomach.

„

Raz zabezpieczony serwer baz danych wymaga

stałego nadzoru i monitorowania.

„

Należy pamiętać, że nie wolno nam zakładać,

że coś jest całkowicie bezpieczne, ponieważ jak

w każdej dziedzinie informatyki, również w

bezpieczeństwie codziennie zachodzą zmiany

i dochodzą nowe zagrożenia.

background image

Bezpieczeństwo aplikacji

„

Najczęstsze błędy programistów.

„

SQL Injection.

„

Nawet najlepiej zabezpieczona baza danych może paść ofiarą ataku
przeprowadzonego z poziomu aplikacji, która z bazy danych
korzysta.
Dlatego ważne jest, by administratorzy i programiści byli świadomy
zagrożeń, jakie niesie za sobą dostęp do baz danych przy pomocy
zewnętrznych aplikacji.

Prawdopodobnie najwięcej przypadków nieautoryzowanego dostępu

do danych wynika z błędów programistycznych.
Dlatego niezbędne jest stałe edukowanie programistów w temacie
bezpieczeństwa dostępu do danych.

background image

Programowanie z dostępem do
danych - błędy

Najczęściej popełniane przez programistów błędy to:

„

dostęp do serwera baz danych z użyciem konta o zbyt dużych
uprawnieniach - powoduje to, że w przypadku ataku potencjalny
agresor działa w SZBD często z uprawnieniami administratora,

„

przechowywanie kluczowych danych, takich jak hasła, w plikach
konfiguracyjnych aplikacji - zdobycie takich danych często otwiera
drogę potencjalnemu agresorowi,

„

brak kontroli nad danymi wprowadzanymi w aplikacji przez
użytkowników - daje to bardzo często możliwość ataku SQL
Injection, następstwem czego może być nieuprawniony dostęp do
danych, a w skrajnych przypadkach nawet przejęcie kontroli nad
bazą danych lub serwerem,

background image

Programowanie z dostępem do
danych - błędy

„

wyświetlanie w aplikacji domyślnych komunikatów
błędów SZBD - powoduje to często ujawnienie struktury
bazy danych i użytych w aplikacji zapytań SQL, co
prowadzi na ogół do ataku typu SQL Injection,

„

błędne podejście przy wykrywaniu nieprawidłowości w
danych wprowadzanych przez użytkownika - często
programista stara się wypisać wszystkie przypadki, które
są według niego nieprawidłowe, pominięcie jednego z
przypadków tworzy lukę w bezpieczeństwie,

„

brak kontroli nad zasobami serwera baz danych -
pozostawianie otwartych połączeń, nie zamykanie
obiektów (jak na przykład kursory).

background image

Programowanie z dostępem do
danych – najlepsze nawyki

Jak zatem należy pisać aplikacje? Należy trzymać się

pewnych zasad.

„

Używaj konta o minimalnych uprawnieniach niezbędnych

do wykonania operacji w bazie danych.

„

Nigdy nie ufaj użytkownikom aplikacji. Kontroluj

wprowadzane przez nich dane.

„

Sprawdzaj tylko, czy wprowadzane przez użytkowników

dane są tym, czego się spodziewasz, a resztę odrzucaj.

„

Nie wyświetlaj domyślnych komunikatów o błędach w

aplikacji (zwłaszcza w aplikacjach WWW).

„

Jeśli używasz transakcji, staraj się, by były one jak
najkrótsze.

background image

Programowanie z dostępem do
danych – najlepsze nawyki

„

Nigdy nie trzymaj danych poufnych w plikach
konfiguracyjnych, chyba że w postaci zaszyfrowanej.

„

Zawsze sprzątaj po sobie - zamykaj otwarte przez

aplikację połączenia z serwerami.

„

W razie potrzeby zapewniaj bezpieczne przesyłanie

danych po sieci (używaj SSL).

„

Używaj procedur składowanych i widoków do

implementacji bezpiecznego dostępu do danych.

„

Staraj się nie używać mechanizmów powszechnie

uważanych za niebezpieczne (np. dynamiczny SQL).

background image

SQL Injection

„

SQL Injection to dziś wśród programistów i
administratorów baz danych prawie
legenda.

„

Mimo to wciąż zdarzają się sytuacje, w
których aplikacja jest napisana tak, że
umożliwia ten atak.

background image

SQL Injection - co to takiego?

„

SQL Injection to atak na bazę danych

przeprowadzony przy użyciu nieprawidłowo

napisanej aplikacji.

„

W ataku tym agresor wykorzystuje fakt, że

aplikacja nie sprawdza lub sprawdza

niedostatecznie dane wprowadzane w aplikacji

przez użytkowników.

„

Dzięki temu atakujący jest w stanie podać

fragment kodu języka SQL, który wykona w

bazie danych czynność niedozwoloną i

nieprzewidzianą z punktu widzenia programisty.

background image

SQL Injection - co to takiego?

„

Co jest najważniejsze, na atak ten jest
narażony każdy SZBD, jeśli tylko istnieje
odpowiednio źle napisana aplikacja, która
się do tego systemu dostaje i korzysta z
baz w nim przechowywanych.

background image

SQL Injection– następstwa

Najczęściej występujące objawy to:

„

nieuprawniony dostęp do danych,

„

udana próba uwierzytelnienia w aplikacji bez znajomości

danych uwierzytelniających,

„

wykonanie niepożądanej operacji w bazie danych (np.

usunięcie tabeli),

„

wykonanie niepożądanej operacji w SZBD (np.

stworzenie nowej bazy danych),

„

wykonanie niepożądanej operacji w systemie

operacyjnym (skrajny przypadek, ale możliwy).

background image

SQL Injection – przykłady

Przykład 1 - Nieuprawniony dostęp do danych

„

W powyższym przykładzie zapytanie służy do uwierzytelnienia

użytkownika w aplikacji. Zapytanie pobiera od użytkownika dwie

informacje: login i hasło.

„

W drugim fragmencie kodu na zielono zaznaczono dane wstawione

przez użytkownika w pola tekstowe w aplikacji.

„

Jeśli istnieje podany przez użytkownika login i na dodatek dla

podanego loginu zgodzi się również hasło, to zapytanie zwróci

jeden rekord.

--

zapytanie

bez

danych

użytkownika

SELECT * FROM Uzytkownicy WHERE Login = '' AND

Haslo = '‘

--

zapytanie

z

danymi

użytkownika

SELECT * FROM Uzytkownicy WHERE Login = '

Pawel

'

AND Haslo = '

P@ssw0rd

--

atak

SQL

Injection

-

próba

logowania

SELECT * FROM Uzytkownicy WHERE Login = '

' OR 1=1

--

' AND Haslo = ''

background image

SQL Injection - przykłady

„

Uwaga na trzeci fragment kodu SQL, w którym kolorem czerwonym

zaznaczono napis wstawiony przez atakującego w pole tekstowe

służące do pobrania loginu. Zakładając, że mamy do czynienia z

Microsoft SQL Server (chodzi o symbol komentarza - dwa myślniki

powodują wykomentowanie reszty kodu SQL), atak spowoduje

najprawdopodobniej udaną próbę logowania na pierwszy dostępny

login.

„

Dlaczego ten atak zadziałał? Co powoduje wstawienie złośliwego

kodu. Najpierw zamykany jest apostrof, by zapytanie było

prawidłowym zapytaniem SQL, potem następuje stworzenie

warunku, który zawsze jest prawdziwy (dla każdego rekordu),

wreszcie używany jest symbol komentarza w celu zignorowania

pozostałej części oryginalnego zapytania. W sumie zapytanie

wybiera z tabeli wszystkie rekordy...

-- atak SQL Injection - próba logowania

SELECT * FROM Uzytkownicy WHERE Login = '

' OR 1=1 --

' AND Haslo = ''

background image

SQL Injection - przykłady

„

Taki atak ma szansę powodzenia, jeśli aplikacja

wykorzystuje konkatenację do tworzenia składni

SQL w kodzie aplikacji.

Pamiętaj, że do wykonania ataku SQL Injection czasem nie jest potrzebne

użycie symbolu komentarza. Zamiast tego można we wszystkie pola
w aplikacji wstawić warunek zawsze spełniony i tym sposobem atak
jest możliwy do wykonania nawet w bazach danych, które nie oferują
symbolu komentarza (np. Microsoft Access).

Np.: SELECT * FROM Uzytkownicy WHERE Login = '' OR 'a'='a' AND

Haslo = '' OR 'a'='a'

background image

SQL Injection – przykłady

Przykład 2 - Wykonanie niepożądanej operacji w bazie danych

--

zapytanie

bez

danych

użytkownika

SELECT * FROM Uzytkownicy WHERE Login = '' AND

Haslo = '‘

--

zapytanie

z

danymi

użytkownika

SELECT * FROM Uzytkownicy WHERE Login =

'Pawel' AND Haslo = 'P@ssw0rd‘

-- atak SQL Injection - próba usunięcia tabeli

SELECT * FROM Uzytkownicy WHERE Login = '';

DROP TABLE Uzytkownicy

--

' AND Haslo = ''

background image

SQL Injection – przykłady

Przykład 2 - Wykonanie niepożądanej operacji w bazie danych

„

Tym razem celem ataku nie jest zalogowanie się

do aplikacji, a popsucie bazy danych przez

usunięcie tabeli (polecenie DROP TABLE).

„

Taki atak ma szansę powodzenia, jeśli aplikacja

wykorzystuje konkatenację do tworzenia składni

SQL w kodzie aplikacji i dodatkowo aplikacja

dostaje się do bazy danych w kontekście konta o

zbyt wysokich uprawnieniach (umożliwiających

wykonanie polecenia kasowania tabeli).

background image

SQL Injection – przykłady

Przykład 3 - Przejęcie kontroli nad systemem operacyjnym

„

Czasem SZBD jest mocno zintegrowany z
systemem operacyjnym.

„

Zachodzi wówczas możliwość ataku,
którego efektem będzie wykonanie
niepożądanej operacji w samym systemie
operacyjnym.

background image

SQL Injection – przykłady

Przykład 3 - Przejęcie kontroli nad systemem operacyjnym

--

zapytanie

bez

danych

użytkownika

SELECT * FROM Uzytkownicy WHERE Login = '' AND

Haslo = '‘

--

zapytanie

z

danymi

użytkownika

SELECT * FROM Uzytkownicy WHERE Login =

'Pawel' AND Haslo = 'P@ssw0rd‘

-- atak SQL Injection - próba usunięcia tabeli

SELECT * FROM Uzytkownicy WHERE Login = '';

EXEC master..xp_cmdshell 'net user Haker P@ssw0rd

/add --' AND Haslo = ''

background image

SQL Injection – przykłady

Przykład 3 - Przejęcie kontroli nad systemem operacyjnym

„

W powyższym przykładzie w trzecim bloku kodu

wykonany jest atak polegający na dodaniu użytkownika

do systemu operacyjnego Windows. Następnym krokiem

mogłoby być dodanie użytkownika do grupy

administratorów systemowych.

„

Taki atak ma szansę powodzenia, jeśli aplikacja

wykorzystuje konkatenację do tworzenia składni SQL w

kodzie aplikacji i dodatkowo aplikacja dostaje się do

bazy danych w kontekście konta o zbyt wysokich

uprawnieniach (sysadmin w systemie Microsoft SQL

Server).

background image

SQL Injection- obrona

Aby obronić się przed SQL Injection programista powinien

stosować pewne zasady.

„

Używaj konta o minimalnych uprawnieniach niezbędnych

do wykonania operacji w bazie danych.

„

Nigdy nie ufaj użytkownikom aplikacji. Kontroluj

wprowadzane przez nich dane.

„

Sprawdzaj tylko, czy wprowadzane przez użytkowników

dane są tym, czego się spodziewasz, a resztę odrzucaj.

„

Nie wyświetlaj domyślnych komunikatów o błędach w

aplikacji (zwłaszcza w aplikacjach WWW).

background image

SQL Injection- obrona

„

Używaj procedur składowanych i ich parametrów do

dostępu do danych.

„

Unikaj stosowania konkatenacji (łączenia napisów) przy

tworzeniu składni SQL w kodzie aplikacji.

„

Używaj mechanizmów dostępnych w językach

programowania (jak parametry w .NET lub prepared

statements w Javie).

„

Wykrywaj i usuwaj z podawanych przez użytkowników

danych znaki charakterystyczne dla języka SQL, którego

używa Twój SZBD.

background image

SQL Injection

Jako ciekawostkę można podać również fakt, że wyszukiwarki

internetowe z Google na czele, zapamiętują wystąpienia
komunikatów błędów na stronach WWW. Zatem atakujący
może wyszukać podatne na ataki witryny w bardzo prosty
sposób, jeśli zna słowa kluczowe komunikatów serwera (a to
można znaleźć chociażby w dokumentacji).

background image

Bezpieczeństwo

„

Bezpieczeństwo to temat- rzeka. Jednak znajomość

podstawowych problemów i odpowiedzi na potencjalne

zagrożenia znacznie ogranicza możliwości ataku na

administrowany przez Ciebie serwer. Dlatego warto

poświęcać sporo uwagi zagadnieniom bezpieczeństwa.

„

Bezpieczeństwo aplikacji jest równie ważne, jak

bezpieczeństwo serwera baz danych, jako że bardzo

często decyduje ono o tym, czy nasza baza będzie

funkcjonowała poprawnie i czy firma nie będzie

narażona na straty z powodu udanych ataków, których

liczba rośnie z każdym rokiem.


Document Outline


Wyszukiwarka

Podobne podstrony:
ABC zasad bezpieczenstwa przetwarzania danych osobowych przy uzyciu systemow
3 bezpieczne przesyłanie danych w sieci
kołaczek,bezpieczeństwo i ochrona danych, metody progowe
Bezpieczenstwo i ochrona danych w komputerach i sieciach
kołaczek,bezpieczeństwo i ochrona danych, opracowanie wykładu
WYKŁAD IV - bezpieczenstwo baz danych, Uczelnia, sem V, bazy danych, wyklad Rudnik
SZYFROWANIE INFORMACJI W BAZACH DANYCH, Gospodarka Elektroniczna
Bezpieczenstwo i ochrona danych Nieznany (2)
kołaczek,bezpieczeństwo i ochrona danych, opracowanie wykładu
Dane i bezpieczenstwo ochrona danych
kołaczek,bezpieczeństwo i ochrona danych, pytania i odpowiedzi
Dane i bezpieczenstwo (ochrona danych)

więcej podobnych podstron