ProteGO-Safe / specs

Opis, specyfikacja i zadania. Zacznij tutaj.
GNU General Public License v3.0
118 stars 29 forks source link

Konieczność włączenia Bluetooth na stałe / Necessity to permanently enable Bluetooth #31

Closed akorzynski closed 4 years ago

akorzynski commented 4 years ago

Dziękuję za opublikowanie kodu źródłowego tej aplikacji, zanim wprowadzono obowiązek instalowania jej przez obywateli.

Mam uwagę co do wymogu, żeby włączać Bluetooth na stałe w telefonie. Taki wymóg jest dość kontrowersyjny. W przeszłości w technologii Bluetooth znajdowano wiele luk bezpieczeństwa. Dlatego wielu ekspertów bezpieczeństwa radzi wyłączać Bluetooth w miejscach publicznych. Np. następująca publikacja zgłębia tę tematykę: https://www.researchgate.net/publication/326511381_Security_Vulnerabilities_in_Bluetooth_Technology_as_Used_in_IoT

Wybrane cytaty z tej publikacji:

"Mitigating Bluetooth vulnerabilities differ significantly from mitigating vulnerabilities in a computer system. While application software patches are used to resolve vulnerabilities in computer systems, Bluetooth devices require upgrades in device firmware [2]. These upgrades cannot be developed by the general public and/or user community [2]. Therefore, Bluetooth devices will continue to be vulnerable to attacks even if mitigation solutions become available [2,29]."

" (...) Mitigation techniques (...) Turning off a device’s Bluetooth when not needed or in use, especially while in certain public areas such as shopping malls, coffee shops, public transportation, clubs, bars, etc [2]. This can prevent users from receiving advertisements from other Bluejackers."

Pozdrawiam, Aleksander Korzyński

robert-skarzycki commented 4 years ago

@akorzynski - jeśli Bluetooth miałby być wyłączony, zwłaszcza w miejscach publicznych, to jaki miałaby działać ta aplikacja? Bez włączonego bluetootha nie ma rejestrowania "spotkania", no a przecież o to w tym projekcie chodzi.

akorzynski commented 4 years ago

Robert, dzięki za odpowiedź. Na tym właśnie polega moja uwaga, że aplikacja w sposób fundamentalny stwarza niebezpieczeństwo dla użytkowników. Problem, na który zwracam uwagę, nie da się rozwiązać żadną zmianą w kodzie aplikacji. I nie jest to problem teoretyczny.

Aplikacja opiera się na założeniu, że użytkownicy będą cały czas mieć włączony bluetooth w swoich telefonach. Ale to właśnie odradzają eksperci ds. bezpieczeństwa. A to dlatego, że system dystrybucji poprawek bezpieczeństwa do oprogramowania systemowego w telefonach jest dysfunkcjonalny. I wiadomo o tym nie od dziś.

Wynika to ze sposobu, w jaki dystrybuowane są poprawki bezpieczeństwa do urządzeń z Androidem. Google publikuje informacje o znalezieniu luki bezpieczeństwa i poprawkę do oprogramowania. Ale te poprawki nie są od razu dostępne dla użytkowników telefonów. Producenci telefonów z Androidem dopiero muszą zintegrować poprawki ze swoim oprogramowaniem, co może trwać miesiącami. Dopiero potem udostępniają poprawki swoim użytkownikom. Przez te miesiące telefony użytkowników są podatne na atak.

Żeby pokazać, że to nie jest problem teoretyczny, wystarczy poszukać w Google raportów na temat znalezionych niedawno luk bezpieczeństwa w Bluetooth. Na przykład w lutym tego roku znaleziono lukę CVE-2020-0022, która pozwala atakującemu na uruchomienie dowolnego kodu na telefonie znajdującym się w pobliżu. Oto co piszą na ten temat w jednym z serwisów internetowych na temat bezpieczeństwa (pogrubiłem najważniejsze fragmenty cytatu):

The latest Android security update includes a fix for a critical Bluetooth vulnerability that a nearby attacker could use to run arbitrary code on a vulnerable device. (...) Although Google has pushed out a patch for the vulnerability, it may take some time for the majority of Android users to actually get it, thanks to the way that the Android update ecosystem works. Google releases the updates to all of the manufacturers that make Android devices and then those OEMs test and tweak the updates for their devices. The manufacturers then are responsible for pushing the updates to the carriers, who then push them to individual users.

Some OEMs and carriers are faster at this process than others, and Google pushes the new patches directly to its house-made Pixel devices as soon as they’re available. Because of the way this process works, there is often a broad range of patch levels across the Android ecosystem, with some devices completely up to date and others several months behind. The researchers at ERNW have not released the full technical details of the Bluetooth vulnerability yet in order to limit the possibility of exploitation.

“Users are strongly advised to install the latest available security patch from February 2020. If you have no patch available yet or your device is not supported anymore, you can try to mitigate the impact by some generic behavior rules,” the advisory says.

People who don’t have the February update available for the devices yet can protect themselves by either disabling Bluetooth altogether or making their devices non-discoverable.

Innymi słowy dla wielu użytkowników jedynym sposobem na uchronienie się przed włamaniem na telefon jest wyłączenie Bluetooth lub ograniczenie jego funkcjonalności. Wyłączenie Bluetooth oczywiście sprawi, że aplikacja ProteGo przestanie działać.

Przykro mi, że przynoszę takie złe wieści dla twórców aplikacji, którzy na pewno włożyli w nią dużo pracy, ale obawiam się, że ten problem jest fundamentalny i obecnie nie widzę praktycznego sposobu, żeby go rozwiązać.

Źródło cytatu: https://duo.com/decipher/serious-bluetooth-flaw-fixed-in-android-update

Cierpliwy commented 4 years ago

Myślę, że twórcy aplikacji dobrze zdają sobie sprawę z wielu ograniczeń jakie daje Bluetooth :) Obie platformy iOS oraz Android nakładają szereg restrykcji związanych z pracą w tle, rozgłaszaniem itd. Dużą część z nich starałem się umieścić tutaj.

Moim zdaniem nie jest możliwe zrealizowanie dobrej implementacji dla zastosowań ProteGO biorąc pod uwagę do jakich API mają dostęp programiści. To zadanie powinno zostać skierowane bezpośrednio do Apple / Google w celu przygotowania dobrego gruntu. Whitelistotwanie aplikacji przy zalożeniu, że w bezpieczny sposób chroni prywatność użytkowników też nie rozwiąże problemu.

Moje główne zastrzeżenia dotyczą:

Jest pewnie dużo więcej takich punktów. Zebranie o nich wiedzy jest z pewnością wartością dodaną i wiele deweloperów skorzystałoby z niej w swoich projektach. Jeżeli chodzi o zaimplementowany "protokół", to starałem się być zgodnym z wszystkimi wymaganiami związanymi z prywatnością, o których mogliśmy przeczytać. W przeciwieństwie do np. "TraceTogether" nie przesyłane są żadne inne informacje niż generowany losowo tymczasowy ID.

Pytanie jest, czy istnieje jakikolwiek inny mechanizm dostępny dla deweloperów, który umożliwia contact-tracing w sposób bezpieczny?

AdamStelmaszczyk commented 4 years ago

A może WiFi Direct?

Widzę sporo znajomych nazwisk w projekcie - serdecznie pozdrawiam :)

AdamStelmaszczyk commented 4 years ago

Singapur zdaje się ma TraceTogether (jest na GooglePlay, ma 500k+ pobrań i ocene 4.1, używa BLE), można spojrzeć co w niej działa/nie działa.

Dr-Kownacki commented 4 years ago

Jeśli chodzi o BT i kiedy go włączyć opisałem w #63 z punktu widzenia lekarza

jakublipinski commented 4 years ago

@AdamStelmaszczyk inspirowaliśmy się TraceTogether.

akorzynski commented 4 years ago

Napisałem podsumowanie dyskusji w formie artykułu. Przykro mi, że moja opinia o zasadności tej aplikacji jest negatywna, ale proszę autorów, żebyście nie brali tego do siebie. Potraktujcie to, proszę, jako okazję do usprawnienia aplikacji.

https://www.linkedin.com/pulse/fajne-otwarcie-ale-nie-tędy-droga-aleksander-korzyński/ https://kodujdlapolski.pl/protego-fajne-otwarcie-ale-nie-tedy-droga/

jaworowicz commented 4 years ago

Wydaje mi się, że i tak większość osób z różnych powodów ma dzisiaj włączone BT. Większość smartphonow ma nie ma już wejść słuchawkowych, dochodzą fit zegarki i inne akcesoria. Ta aplikacja będzie głównie instalowana na telefonach osób młodych.

Jasne można byłoby zrobić skan QR kodu przy wejściu do każdego sklepu i potem zrzucać bazę i informować, że w tym sklepie była osoba zarażona, ale wiele osób zwyczajnie o tym skanowaniu by zapomniała no chyba ze ochrona by tego pilnowała na każdym wejściu i wyjściu.

Wg mnie rozwiązanie BT jest rozsądne, ale nie pozbawione wad. Inna sprawa, ze nie znalazłem w Polsce żadnego przypadku realnego (a nie laboratoryjnego) wykorzystania wskazanych przez autora wątku luk. A nawet jeżeli są przypadki jednostkowe to jest to niewielki % w skali ataków innych typów.

KoderFPV commented 4 years ago

Z powodu dłuższej nieaktywności w tym wątku, zostanie on automatycznie zamknięty w najbliższym czasie.