Tunel działał, interfejs się pojawił, a sesja pozostała stabilna przez tydzień. Nic z tego nie mówi, kto zbudował instalator. Klient VPN działa z uprawnieniami wystarczającymi do przepisywania tras i odczytywania danych logowania, więc wydawca jest częścią modelu zagrożeń, a nie przypisem.

Wykonuj kontrole po kolei i zatrzymaj się na pierwszej, która zawiedzie. Są tanie, a każda zamyka inną lukę.

Pierwszy krok: Pobierz z kanału, który wskazuje projekt

Każdy projekt dokumentuje, gdzie znajdują się jego wydania, i ta strona jest odniesieniem. Kompilacje społecznościowe, wpisy w sklepach i portale dostawców to wszystko legalne kanały. Każdy z nich jest legalny tylko wtedy, gdy sam projekt na niego wskazuje. To jest test, i nie jest to samo co wyglądanie na oficjalny.

Plik nazwany po projekcie niczego nie dowodzi. Zmiana nazwy instalatora to operacja trwająca sekundę, a nazwa jest tym, co wynik wyszukiwania pokazuje jako pierwsze.

Drugi krok: Zweryfikuj podpis wobec znanej tożsamości

Weryfikacja podpisu dobrze odpowiada na wąskie pytanie. Mówi, że określona tożsamość podpisała ten plik binarny i że plik nie zmienił się od tego czasu. Odpowiada na jedno pytanie, a odmawia odpowiedzi na inne. Nie może powiedzieć, czy ta tożsamość to ta, której chciałeś zaufać.

# macOS: who signed this app, and is the signature intact?
codesign -dv --verbose=4 /Applications/Tunnel.app
spctl -a -vvv -t install /Applications/Tunnel.app

# Windows: signature and publisher of the installer
Get-AuthenticodeSignature .\tunnel-setup.exe | Format-List Status, SignerCertificate

# Linux: detached signature from the project's release page
gpg --verify tunnel-1.4.2.tar.gz.asc tunnel-1.4.2.tar.gz

Czytaj tożsamość, nie słowo statusu. Niepowiązany deweloper z ważnym certyfikatem tworzy ważny podpis. System operacyjny zgłaszający rozpoznanego wydawcę powiedział ci tylko, że ktoś zapłacił za certyfikat.

Trzeci krok: Porównaj hash z niezależnym źródłem

Suma kontrolna dowodzi zgodności z wartością referencyjną. Jeśli referencja przybyła obok pobrania, obie mogą być błędne jednocześnie, a porównanie i tak przejdzie. To jest wzorzec awarii w większości poradników. Hash znajduje się na tej samej stronie co plik, który opisuje.

# Linux and macOS
shasum -a 256 tunnel-1.4.2.dmg

# compare against the value published on the project's own release page
# not against a value copied from the same mirror

Gdy projekt publikuje podpisane sumy kontrolne lub podpisany manifest wydania, weryfikuj podpis na liście, a nie na każdym pliku osobno. W ten sposób jedno zaufane odniesienie obejmuje całe wydanie.

Po instalacji: Zachowaj ścieżkę aktualizacji

Wspierany kanał nadal ma znaczenie po zakończeniu instalacji. Przepakowane kompilacje mogą nieść własny aktualizator, a ten aktualizator decyduje, co będzie działać w przyszłym miesiącu. Kompilacja, która nigdy się nie aktualizuje, nie jest bezpieczniejsza. Jest po prostu starsza.

Zapisz, jak klient powinien się aktualizować i czy system zarządzania odpowiada za ten krok. Jeśli odpowiedzią jest ręczne pobranie z forum, pytanie o łańcuch dostaw nigdy tak naprawdę się nie zamknęło.

Dwa źródła pochodzenia, nie jedno

Deweloper klienta i wystawca profilu to odrębne strony. Oficjalny klient importujący profil od niepowiązanego operatora to normalny układ, a profil zasługuje na własną kontrolę: kto go wydał, jak został dostarczony i czy certyfikat serwera zgadza się z oczekiwaną nazwą.

Utrzymuj oba źródła pochodzenia rozpoznawalne w notatkach. W momencie, gdy klient zostaje wymieniony lub urządzenie przywrócone z kopii zapasowej, właśnie te dwie linie powstrzymują nieznaną kompilację lub nieznany profil przed powrotem wraz z resztą danych.

Powiązane artykuły