Jak wykryć wyciek danych — prosty sposób dla każdego

Jak wykryć wyciek danych — prosty sposób dla każdego

Każdy system IT pracuje na różnych danych. A jak wykryć wyciek danych? Dziś się tego dowiesz. Zazwyczaj można powiedzieć, że właśnie te dane są sercem całego systemu. Dzięki nim system jest w stanie dostarczać wartość Klientom. Co to może być?

W systemie e-commerce może to być zbiór wszystkich produktów, zamówień lub danych o Klientach. Oczywiście to nie wszystkie dane, na których operuje taka aplikacja.

W dzisiejszym odcinku najbardziej nas interesują dane wrażliwe. Dla uproszczenia możemy przyjąć, że dane wrażliwe to wszelkie informacje, których nie chcemy upubliczniać z jakiś powodów. Jakiego typu dane wrażliwe mogą być w systemie?

  • Dane osobowe — to dość oczywista kategoria. Są to wszelkiego rodzaju dane użytkowników. W szczególności mogą to być PII (Personally Identifiable Information), czyli dane pozwalające na zidentyfikowanie konkretnej osoby, której te dane dotyczą, Tego typu informacje są szczególnie chronione regulacjami takimi jak RODO czy GDPR.
  • Sekrety w komunikacji pomiędzy serwisami — gdy w systemie korzystamy z innych serwisów, czy to wewnętrznych, czy zewnętrznych, zazwyczaj musimy użyć jakiegoś klucza do zabezpieczenia tej komunikacji. Właśnie te klucze są danymi wrażliwymi, które powinniśmy chronić.
  • Sekrety użytkownika — w niektórych systemach mamy również do czynienia z sekretami, których właścicielem jest użytkownik np. hasła do logowania. Jeżeli zapisujemy takie sekrety użytkownika, to musimy je chronić. Oczywiście dobrą praktyką jest to, żeby nie zapisywać haseł użytkownika w czytelnej formie. Jednak nawet gdy trzymamy je zapisane w postaci zahashowanej, to powinniśmy je chronić. Innym przykładem mogą być dane kart kredytowych, co jest chronione osobnymi standardami bezpieczeństwa PCI-DSS.
  • Szczegóły techniczne — udostępnienie informacji technicznych o budowie lub infrastrukturze naszego systemu może pomóc atakującemu w przeprowadzeniu bardziej wyrafinowanego ataku.
  • Szczegóły biznesowe — również informacje biznesowe takie jak wolumen zamówień w systemie lub całkowita wartość zamówień nie są informacjami, które powinniśmy upubliczniać. Warto o tym pamiętać.

Całe to spektrum różnych danych wrażliwych jest łakomym kąskiem dla atakujących. Głównie dlatego, że te sekrety mają pewną wartość.

Dane osobowe można sprzedać na czarnym rynku, a sekrety można wykorzystać do dalszych ataków.

Ataki nastawione na wyciek danych

Wiemy już, co może być łakomym kąskiem dla atakujących, ale właściwie jak wyglądają ataki mające na celu wykradzenie różnego rodzaju danych?

Na początku atakujący poznaje system i szuka w nim słabych punktów. Następnie z użyciem tych słabych punktów próbuje zdobyć dostęp do bazy danych. Może to być dostęp bezpośredni w postaci hasła (a raczej connectionStringa) do bazy danych lub pośredni, czyli możliwość wykonywania różnych zapytań na tej bazie danych z pomocą aplikacji.

Ważne jest wobec tego zabezpieczenie wszelkich słabych punktów, które mogą umożliwić atakującemu takie działanie. Jest na to bardzo wiele sposobów. Zabezpieczenie się w pełni jest trudne, a być może nawet nieosiągalne. Zawsze znajdzie się coś, co przeoczyliśmy.

Dlatego równie ważnym elementem zadbania o nasze dane jest możliwość szybkiego wykrycia wycieku dowolnych danych wrażliwych. Dzięki temu, w momencie gdy ktoś już sforsuje nasze zabezpieczenia, będziemy w stanie szybko zareagować na włamanie. Możemy wtedy powstrzymać dalsze działania atakujące go, a finalnie pozwoli nam to również zabezpieczyć naszych Klientów, zanim te dane zostaną wykorzystane w złych zamiarach. Podstawową metodą może tu być po prostu poinformowanie Klientów o wycieku zgodnie z regulacjami RODO.

Jak wykryć wyciek danych?

Wystarczy wśród naszych danych wrażliwych różnego typu umieścić czujki. Czyli na przykład sztucznie przygotowany connectionString do pustej, nieużywanej bazy danych. W momencie gdy zauważylibyśmy logowanie do takiej bazy danych, wiedzielibyśmy, że szczegóły i klucze połączenia do niej dostały się w niepowołane ręce. A jak ten connectionString wyciekł, to również możemy zakładać, że inne połączenia do baz danych wyciekły. To wartościowa informacja.

Podobnie możemy zrobić z innymi rodzajami sekretów.

Automatyzacja wykrywania wycieków danych

Jednak nie musimy tego wszystkiego implementować samodzielnie. Na szczęście istnieje rozwiązanie, które pozwoli nam to automatyzować.

Serwis Canary Tokens (https://canarytokens.org/nest/) pozwala na stworzenie różnych rodzajów pułapek, które możemy rozstawić w naszym systemie.

Canary Tokens, ponieważ w kopalniach w XIX wieku kanarki były używane jako system późnego ostrzegania. Górnicy brali je ze sobą pod ziemię i gdy któryś z kanarków dziwnie się zachowywał lub nawet umierał, górnicy wiedzieli że w tym miejscu jest za wysokie stężenie śmiertelnych gazów (np. metanu). Dzięki temu wiedzieli, żeby jak najszybciej uciekać z tego miejsca i ratować swoje życie.

Tym samym jest Canary Token – to kanarek, który ostrzeże nas o wycieku.

Jak wykryć wyciek danych CanaryTokens

Wspiera on wiele różnych rodzajów danych wrażliwych:

  • connectionString do bazy danych,
  • sztuczny plik PDF,
  • sztuczny plik Word czy Excel,
  • alert o klonowaniu strony,
  • sztuczny klucz do AWS lub Azure,
  • a nawet kod QR.

Podczas tworzenia takiego Canary Tokenu definiujemy jego podstawowe możliwości oraz system notyfikacji nas:

  • mail, na który zostanie wysłane ostrzeżenie
  • lub adres webhook, który przyjmie notyfikację w momencie jego użycia
Jak wykryć wyciek danych

To trochę jak zaserwowanie atakującemu podsłuchu, który da nam znać, że atakującemu się udało.

Jak Canary Token działa wewnętrznie?

Bardzo różnie. To bardzo zależy od typu kanarka (Canary Tokena).

Dla przykładu spreparowany plik PDF ma referencję do zewnętrznego zasobu. Dzięki temu w momencie gdy zostanie otworzony, natychmiast będzie próbował pobrać obraz z określonego adresu URL, a pod tym adresem zamiast obrazka będzie trigger systemu ostrzegania.

Podobnie sprawa wygada dla innych typów Canary Tokenów:

  • Word ma makra, które wykonują się po uruchomieniu,
  • alert o klonowaniu strony korzysta z funkcji CSS.

Pozwala to bardzo szybko i prosto wykryć udane próby ataków na nasz system.

Swoją drogą to koncepcja dość podobna do honeypotów. Z tą różnicą, że Canary Tokeny zwabiają atakujących i informują nas o ich sukcesach, zamiast przekierowywać ich ruch i utrudniać. Oba te mechanizmy działają w różnym momencie ataku a przez to pełnią inną funkcję.

Prosta metoda jak wykryć wyciek danych

Nie musimy koniecznie korzystać z Canary Tokenów. Choć osobiście bardzo mocno to polecam.

Można to też zrobić dużo prościej.

Można tego typu spreparowane dane umieścić bezpośrednio pośród na przykład danych osobowych. Minus jest taki, że taka notyfikacja zadziała dopiero po fakcie wycieku danych osobowych, ale jednak bardzo szybko się o tym dowiemy.

Czujka wycieku danych

Jak to można zrobić w najprostszy sposób?

Tworzymy w firmie nowy adres email według schematu <guid>@firma.com. Podpinamy go pod konta pocztowe kilku osób monitorujących bezpieczeństwo.

Taki adres email umieszczamy w bazie danych pośród innych danych osobowych.

W momencie, gdy na ten adres email przyjdzie jakikolwiek email, to znak, że ktoś ma dostęp do naszych danych i prawdopodobnie są one już dostępne i używane.

W taki prosty sposób jesteśmy w stanie zadbać o lepsze mechanizmy wykrywania ataku w naszych systemach.

%d bloggers like this: