Envato Elements - pobieraj co chcesz, ile chcesz

Z racji tego, że korzystam z komunikatora Signal, kolega – który też z niego korzysta – podesłał mi link do artykułu, w którym opisana jest pewna „podatność” w desktopowej (Windows i Mac) komunikatora, która pozwala na relatywnie łatwe odczytanie zaszyfrowanej bazy danych, w której znajdują się m.in. odebrane i wysłane wiadomości. Nie zdziwiło mnie to, gdyż… sam jakiś czas temu, szukając pewnej informacji postanowiłem dobrać się do pliku SQLite wykorzystywanego przez aplikację Signal, i nie było to trudne…

Signal Desktop i jawne hasło do zaszyfrowanej bazy danych

Na stronie Bleeping Computer pojawił się artykuł, w którym autor pokazuje, jak łatwo dostać się do danych zapisanych w bazie danych (plik SQLite) wykorzystywanej na potrzeby działania komunikatora Signal. Komunikatora, który z założenia ma gwarantować prywatność (poufność) prowadzonej komunikacji.

Baza danych programu Signal Desktop znajduje się w pliku SQLite:

%AppData%\Signal\db\db.sqlite

I jest ona – co wydaje się oczywiste – zaszyfrowana:

Skoro jest zaszyfrowana, to znaczy, że musi być do niej jakieś hasło, jakiś klucz. A skoro program nie chciał by taki klucz utworzyć przy pierwszym uruchomieniu, to znaczy, że musi być on gdzieś zapisany.

Mogą to być serwery producenta programu – ale w tym wypadku nie dość, że kolidowałoby to z zaufaniem do aplikacji, to zostałoby tez szybko zauważone (ruch sieciowy). Mogłoby być zapisane wewnątrz aplikacji, ale wtedy byłoby zapewne identyczne dla każdego użytkownika, czyli bez sensu w przypadku tego typu aplikacji. Mógłby je generować jakiś algorytm wewnątrz aplikacji na podstawie parametrów komputera i/lub systemu operacyjnego, ale to oznacza problem w przypadku, gdyby któryś z czynników branych pod uwagę przez algorytm uległ zmianie (np. model procesora, wersja systemu operacyjnego).

Stąd oczywiste się wydaje, że jeśli mamy indywidualny klucz, to musi być on gdzieś zapisany, i to zapewne w formie niezaszyfrowanej (gdyby był zaszyfrowany, to… wracamy do punktu wyjścia, czyli hasło, serwer zewnętrzny, algorytm…).

W przypadku aplikacji Signal Desktop dochodzenie nie jest zbyt skomplikowane, bo w katalogu z danymi aplikacji jest plik konfiguracyjny:

%AppData%\Signal\config.json

Plik ten zawiera tylko jedną wartość, nazwaną dla niepoznaki „key”:

To właśnie ten plik sprawił, że kiedyś postanowiłem poszukać zamka, do którego będzie pasował. Tym zamkiem był oczywiście wspomniany już plik „db.sqlite”.

Plik można otworzyć np. za pomocą aplikacji DB Browser for SQLite (polecam tak ogólnie, nie tylko do przeglądania bazy danych aplikacji Signal):

Gdy zostaniemy poproszeni o hasło, podajemy oczywiście ciąg znaków z pliku „config.json” (jako Raw key, czyli z „0x” na początku). W ten sposób uzyskujemy dostęp do bazy danych:

Czy się tym zmartwiłem? Nie. Nawet nie dlatego, że mam wszystkie dyski zaszyfrowane, bo gdyby na mój komputer trafił jakiś szkodnik, to wykradnie te 2 pliki z momencie, gdy dyski będą odszyfrowane, czyli podczas normalnej pracy na komputerze.

Co więcej – gdyby program nie trzymał tego klucza/hasła na dysku, tylko każdorazowo pytał mnie o nie podczas uruchamiania, to też wiele by to nie zmieniło. Skoro coś mogło wykraść dane z mojego komputera, to może też przechwycić znaki jakie wprowadzam na klawiaturze. No chyba, że by wprowadzić tutaj dodatkowo jeszcze uwierzytelnienie dwuskładnikowe…

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Roztańczona Karolina skorzystała z promocji dla czytelników WebInsider.pl i zapłaciła 80% mniej za księgowość internetową wFirma
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Roztańczona Karolina skorzystała z promocji dla czytelników WebInsider.pl i zapłaciła 80% mniej za księgowość internetową wFirma