Robert.BrainUsers.net

Nie do końca bezpieczny sklep internetowy

Sklep perkusyjny drumcenter.pl ma bogatą ofertę i obsługa szybko doradzi w przypadku wątpliwości. Jednak zamawiając w zeszłym roku sprzęt perkusyjny nie spodziewałem się, że będę uczestnikiem problemu związanego z bezpieczeństwem mojego hasła.

Wygląda na to, że silnik sklepu przechowuje hasła użytkowników w bazie danych w postaci możliwej do odczytania, zamiast bezpiecznego skrótu kryptograficznego z solą. Mało tego, sklep wysyła hasła na maila w ramach przypomnienia a także... tradycyjną pocztą w liście z pierwszym zamówieniem, podpisanym odręcznie przez właściciela sklepu.

Jeśli używacie tego samego hasła do wielu serwisów, albo macie podobny rdzeń hasła czy nawet algorytm komponowania haseł na kilku kontach - jest on już znany pracownikom drumcenter. Moje wątpliwości nie są fanaberią zgryźliwego paranoika - po kilku miesiącach o sprawie napisało wiele polskich serwisów zajmujących się tematyką bezpieczeństwa IT: Niebezpiecznik, Zaufana Trzecia Strona, Wykop.

Sprawa ma już ponad rok czasu, ale hasło nadal można wysłać sobie na maila. Podobno zrezygnowano jednak z wysyłania hasła pocztą. Nie wiem, nie sprawdzałem, obawiam się sprawdzić. :)

Podstawowe zasady bezpieczeństwa haseł

  1. Jeśli przechowujesz hasła użytkowników do porównania przy uwierzytelnianiu - nigdy, ale to nigdy nie przechowuj ich w formie, z której można odczytać hasło ponownie. Odpadają więc nawet bezpieczne metody szyfrujące. A już trzymanie hasła w formie jawnego tekstu to strzał w głowę - wycieki baz danych nie są wcale rzadkim zjawiskiem.
  2. Używaj bezpiecznych funkcji skrótu i pamiętaj że technika idzie na przód - SHA1 nie jest już bezpieczne. Podczas uwierzytelniania porównuj skrót z bazy ze skrótem hasła wpisanego w formularzu logowania.
  3. Koniecznie sól hasło przed hashowaniem. Zmniejszy to prawdopodobieństwo odszukania hasha do nawet najprostrzych słownikowych haseł Twoich użytkowników, a także zabezpieczy przed użyciem tęczowych tablic, które wskażą wartość przed hashowaniem, ale nie przed zasoleniem. Sól to dodatkowe, mocne ogniwo w łańcuchu bezpieczeństwa.
  4. Z uwagi na to, że nie przechowujesz jawnego hasła, trzeba przewidzieć inną procedurę w przypadku zapomnianych przez użytkowników haseł. Prostym rozwiązaniem jest wysłanie na maila podanego przy rejestracji linku z tokenem do zmiany hasła. W ramach ostrożności należy zapytać użytkownika o jakiś szczegół, na wypadek gdyby ktoś uprzednio przejął dostęp do konta mailowego.
  5. Jeśli korzystasz z gotowych rozwiązań, koniecznie sprawdź jakie zabezpieczenia uwierzytelniania posiadają te skrypty.
  6. Uwierzytelnianie to najważniejszy komponent każdej usługi i zarazem najbardziej niedoceniany. Zadbaj aby było bezpieczne. Lepiej zapobiegać niż leczyć i mieć na głowie w najlepszym wypadku Niebezpiecznik, a w najgorszym GIODO.

Aktualizacja 7.09.2012

Zauważyłem zainteresowanie artykułem w ostatnich dniach, dlatego poprawiłem niektóre fragmenty tak, aby były bardziej obiektywne. Chcąc znać więcej szczegółów sprawy odsyłam do Google - wiele serwisów już o tym pisało.

Aktualizacja 11.09.2012

Otrzymałem od przedstawiciela drumcenter.pl komentarz na temat powyższego wpisu. Jak wynika z korespondencji, sklep drumcenter.pl zrezygnował już z wysyłania hasła na kartce papieru. Natomiast problem z wysyłaniem hasła pocztą elektroniczną w ramach przypomnienia jest od nich niezależny, bo wynika z funkcjonalności silnika sklepu internetowego. Przedstawiciel firmy, która napisała silnik, stwierdził że hashowanie jest tylko jednym z wielu algorytmów służących do przechowywania haseł i szyfrowanie jest równie bezpieczne.

W teorii

Nie polemizuję ze sklepem drumcenter.pl tylko ze wszelkimi projektantami oprogramowania, którzy pozwalają na przechowywanie hasła w postaci możliwej do odczytania/odszyfrowania. Rozumiem, że hasła muszą być tak przechowywane, bo ktoś zaprojektował opcję przypomnienia i wysłania hasła na maila. Jednak ta właśnie opcja stanowi lukę w oprogramowaniu. Możliwe, że hasła są zaszyfrowane mocnym algorytmem, którego złamanie zajęłoby milion lat. Jednak wystarczy wstrzelić się w odpowiednią lukę oprogramowania i skorzystać z funkcji, która to hasło po prostu odszyfruje i poda na tacy. Wszak żaden system nie jest wolny od błędów. Dlatego w celach bezpieczeństwa udostępnia się tylko te opcje, które są niezbędne i nie można ich zastąpić bezpieczniejszymi, np. ograniczanie uprawnień użytkownika bazy danych, ale czasami też baza jest niepotrzebna. Inna sprawa to oprogramowanie, które musi znać hasła np. manager haseł.

Częste jest myślenie, że security through obscurity równa się bezpieczeństwo. Nawet mając dostęp do serwera i znając hash, sól i algorytm, nie jesteśmy w stanie w rozsądnym czasie znaleźc kolizji. Jednak mając zaszyfrowane hasło i klucz prywatny składowany w systemie, odczytanie hasła jest możliwe. System uważa się za bezpieczny jeżeli niemożliwe jest złamanie go nawet jeśli są znane wszystkie algorytmy i procedury. Dlatego lepiej używać hashowania - w teorii.

W praktyce

Normalnych ludzi tak naprawdę nie interesuje bezpieczeństwo w sieci. Internauci dzielą się wszystkimi swoimi danymi na Facebook'u, nie interesuje ich jak te dane są potem przetwarzane. To samo tyczy się innych systemów. Jednak czy przedsiębiorstwa software'owe powinny równie lekko podchodzić do tego tematu?

Istnieje bardzo niewiele standardów bezpieczeństwa teleinformatycznego i raczej są to normy wykorzystywane przy projektach rządowych. W istocie strony internetowe nie muszą spełniać żadnych norm co do bezpieczeństwa haseł i poufnych danych użytkownika - dla przykładu bardzo niewiele sklepów korzysta z szyfrowanego protokołu https, a przecież wysyłamy do sklepu wszystkie dane teleadresowe. W rzeczywistości oprogramowanie oferowane przez poważną firmę może różnić się niewiele od skryptu napisanego po lekcjach przez gimnazjalistę. To jeszcze w dzisiejszych czasach nie jest problemem, ale już za 10-20 lat bezpieczeństwo teleinformatyczne stanie się jednym z głównych priorytetów przedsiębiorstw i rządów państw.

Komentarze

Daro
a skąd wiesz że ta platforma sklepowa hasła przechowuje w taki sposób? Przecież mogą je szyfrować? Nie wierze aby taka platforma sklepowa wg ostatnich info w sieci (ponad 1800 sklepów) trzymała niezabezpieczone hasła. Stawiam raczej na błędną konfigurację sklepu przez właściciela bo kupuje czasami w sklepach iai (mają na dole logo) i nigdy hasła ani mailem ani listem:) nie dostałem.
OK, poprawiłem artykuł aby traktował sprawę bardziej abstrakcyjne. Rzeczywiście może to być wina konfiguracji.
Nie zmienia to faktu, że do dzisiaj wspomniany serwis wysyła moje hasło na maila. Hasła być może są zaszyfrowane, ale możliwe do odczytania. Wniosek: nie są tak bezpieczne jak przy użyciu skrótów kryptograficznych z solą i taka jest puenta tekstu.

Dodaj komentarz