Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Jak łatwo można zhakować duże serwisy (debugger na produkcji = remote code execution)
Patreon to popularna w USA platforma crowdfundingowa pozwalająca artystom na pozyskiwanie funduszy wspierających ich pracę twórczą. W wyniku niedawnego włamania informacje o użytkownikach strony oraz wiele danych technicznych zostało wykradzione i upublicznione.
Ostatecznie okazało się, że upublicznione dane zawierają nie tylko szczegóły dotyczące użytkowników platformy (nazwy, adresy e-mail, skróty haseł utworzone z wykorzystaniem funkcji BCrypt), ale właściwie pełny zrzut bazy danych oraz kody źródłowe. Wszystkie prywatne dane zgromadzone w całym serwisie stały się z dnia na dzień publiczne…
The dollar figure for the Patreon campaigns isn’t the issue, it’s supporters identities, messages, etc. Everything private now public.
— Troy Hunt (@troyhunt) October 2, 2015
Oczywiście zakres wykradzionych danych wskazuje od razu, że nie był to „zwykły” atak typu SQL injection. Rzeczywiście, mamy tutaj do czynienia ze znacznie ciekawszym przypadkiem, który obrazuje, jak fatalne mogą być zabezpieczenia nawet tych dużych i znaczących serwisów internetowych…
Debugger na produkcji
Prawdopodobną przyczyną wycieku danych były rażące zaniedbania programistów, którzy w produkcyjnej wersji aplikacji pozostawili włączony i zupełnie otwarty debugger narzędzia Werkzeug.
web_app.debug = patreon.config.debug web_app.run('0.0.0.0', port=args.port, use_reloader=False)
Powyższa konfiguracja zapisana w aplikacji spowodowała, że praktycznie każdy mógł w prosty sposób uzyskać bezpośrednio w przeglądarce dostęp do konsoli pozwalającej na wykonanie dowolnego kodu… wystarczyło tylko wykorzystać lub sprowokować jakiś błąd samej aplikacji.
Pomimo oczywistego ryzyka, wbrew wszelkim dobrym praktykom oraz wbrew ostrzeżeniom zawartym w dokumentacji, taka właśnie konfiguracja trafiła do produkcyjnego zastosowania…
Even though the interactive debugger does not work in forking environments (which makes it nearly impossible to use on production servers), it still allows the execution of arbitrary code. This makes it a major security risk and therefore it must never be used on production machines.
Co więcej, w związku z tym, że publiczny debugger został zauważony przez Shodana, na kilka dni przed kradzieżą danych firma Patreon została ostrzeżona przed ryzykiem związanym z powyższą podatnością. Niestety, nie zdążyła w odpowiedni sposób zareagować…
Co najgorsze, za pomocą banalnego zapytania do Shodana możliwe jest łatwe odnalezienie tysięcy przykładów potencjalnie podobnie skonfigurowanych serwisów. Powyższy przykład dobitnie pokazuje więc, że włamania do dużych serwisów internetowych często nie stanowią dla potencjalnego intruza zbyt dużego wyzwania…
— Wojciech Smol