Jak mogę potwierdzić, że pliki binarne w moim Ubuntu pochodzą z kodu źródłowego, z którego powinny pochodzić?

25

Podobnie jak 99% użytkowników, instaluję Ubuntu z gotowych plików binarnych.

Jak mogę się zweryfikować, czy te pliki binarne pochodzą z oryginalnego kodu źródłowego z Ubuntu?

Dobrze byłoby sprawdzić, czy NSA / ktoś nie współpracował ani z Ubuntu, ani z Linode (moim dostawcą VPS), aby zadzierać z plikami binarnymi. Gdybyśmy mogli zweryfikować pliki binarne, nie byłoby też prawdopodobne, aby spróbowali tego dokonać, ponieważ łatwo byłoby je wywołać.

mark1111
źródło
Możesz rzucić okiem na kod źródłowy, używając go apt-get sourcelub użyć go do skompilowania własnego. Zobacz to pytanie: askubuntu.com/questions/28372/…
Wilf
4
Być może przydatne: Jak sprawdzić, czy pliki zainstalowane w pakiecie pasują do oryginałów? (Debian, ale powinno być wystarczająco blisko, aby
dotyczyło
@ MichaelKjörling Szukałem naszej wersji tego pytania ...
Braiam
1
@Braiam Myślę, że w tym konkretnym przypadku Debian / Ubuntu nie robi dużej różnicy. Co robi różnicę, to cel pytań; ten, do którego prowadzi link powyżej, ma przede wszystkim na celu wykrycie uszkodzonych plików w pewnym momencie po instalacji, podczas gdy ten wydaje się mieć na celu wykrycie złośliwie zastąpionych lub zmienionych plików lub plików binarnych niezgodnych z rzekomym kodem źródłowym. Różne problemy, dlatego oznaczyłem link jako „prawdopodobnie przydatny”.
CVn
3
Co ciekawe, myślę, że nawet Gentoo całkowicie unika tego problemu: tam musisz zaufać pobranym archiwom kodów źródłowych. Używaj podpisów kryptograficznych, jak chcesz; jeśli nie możesz ufać, że to, co podpisano, jest autentyczne i że tak właśnie ma być, naprawdę niewiele można zrobić.
CVn

Odpowiedzi:

36

Możesz pobrać kod źródłowy i samodzielnie go skompilować. Ale poczekaj - najpierw musisz sprawdzić ten kod źródłowy, ponieważ jeśli Canonical współpracował z NSA, prawdopodobnie wprowadzili gdzieś kod, aby umożliwić keylogger lub coś, co można aktywować zdalnie.

Więc...

  1. po pobraniu kodu źródłowego
  2. musisz sprawdzić cały kod,
  3. a następnie skompiluj to!

Ale poczekaj - czy możesz zaufać kompilatorowi ?

SPRBRN
źródło
15
„Czy możesz zaufać kompilatorowi?” Wtedy zaczynasz styczną i czytasz pytanie Jak skompilować kompilator C od zera, a następnie skompilować od podstaw system Unix / Linux (i powiązane odpowiedzi).
CVn
17
Ale czy możesz zaufać swojemu sprzętowi? Być może powinieneś również zbudować swój komputer od zera, i tutaj natrafisz na kilka problemów ...
Thomas
I czy możesz zaufać hiperwizorowi, który uruchamia twoją maszynę wirtualną?
Fernando Correia,
1
Nie sądzę, aby można było użyć kompilacji źródła na kilku podobnych kompilatorach różnych autorów i sprawdzania wyników pod kątem różnic. Ale skąd wiesz, że autorzy nie są tak naprawdę tym samym bytem pod pseudonimami? Lub bardziej prawdopodobne, co jeśli wszystkie te kompilatory mają wspólnego skorumpowanego przodka? I to i tak nie pomogłoby w problemach z zaufaniem sprzętowym.
Keen
6
Ale poczekaj - czy możesz zaufać, że askubuntu nie jest filtrowane ani całkowicie kontrolowane przez NSA, aby uniknąć mówienia o wszystkich potencjalnie zagrożonych obszarach?
TheZ
9

Jeśli nie chcesz zaakceptować „ponieważ Ubuntu tak mówi”, nie możesz.

fkraiem
źródło
2
Dodam, że możesz [spróbować] zweryfikować, czy pliki binarne w twoim systemie pasują do plików binarnych oryginalnych Ubuntu, porównując sumy kontrolne. Oczywiście właściwy rootkit nie byłby w każdym razie łatwo wykrywalny z poziomu systemu.
Peteris,
2
Działa to tylko wtedy, gdy ufasz, że „oryginalne pliki binarne Ubuntu” nie zostały naruszone. Innymi słowy, jeśli zaakceptujesz, że są dobre, ponieważ Ubuntu tak mówi. ;)
fkraiem
5

Ubuntu oferuje wygodne sposoby kompilacji pakietu na twoim komputerze. Nie ma jednak sposobu, aby sprawdzić, czy plik wykonywalny w pobranym pakiecie binarnym został pobrany z tego kodu źródłowego. Proces podpisywania używany przez Ubuntu znacznie zmniejsza ryzyko manipulowania pakietami przez osoby trzecie, ale nadal musisz ufać, że przed kompilacją nie dodano szkodliwego kodu, który nie znajduje odzwierciedlenia w kodzie źródłowym do pobrania.

Powodem jest to, że niezwykle trudno jest uzyskać dokładnie takie same pliki binarne, jakie znajdują się w skompilowanych pakietach, ponieważ zależą one od dokładnej wersji kompilatora, jego opcji i prawdopodobnie istnieją również ścieżki lub zmienne środowiskowe wkompilowane w plik binarny. Podczas kompilacji nie będziesz w stanie uzyskać dokładnie tego samego pliku binarnego, który „zweryfikuje” pobrany plik binarny.

W rzeczywistości istnieje niewielka społeczność badawcza wokół tego problemu - jak sprawić, by kompilacja była odtwarzalna.

To powiedziawszy, ręczne porównanie pobranego pliku binarnego i samokompilowanego może wykryć dodany / zmodyfikowany kod, więc ryzykowanie dla kogoś, kto oferuje pliki binarne i kod źródłowy, może ukryć coś w plikach binarnych, ponieważ można to wykryć.

Ale jest też problem zaufania do kompilatora, jak już wspomniano ...

DCTLib
źródło
4

Trudno jest stworzyć dokładnie takie same pliki binarne na dwóch różnych komputerach. Projekt TOR robi to regularnie jako część ich kompilacji. Jest opis, jak to robią. Wydaje się, że Debian i Fedora mają projekty umożliwiające taką dystrybucję, ale są na wczesnym etapie. Nie wydaje się, aby w Ubuntu wykonano jakąkolwiek pracę .

Aby odtworzyć pakiet binarny Ubuntu, musisz odtworzyć środowisko, w którym zostało utworzone, tak dokładnie, jak to możliwe. Na początek musisz najpierw dowiedzieć się, gdzie i jak skompilowano te pakiety. Nie wygląda na to, że informacja ta jest łatwa do znalezienia.

Josef
źródło
Szczegółowe informacje na temat tego, co konkretnie?
Josef
Zignoruj ​​mnie, mylony z innym postem :)
Tim
0

Sprawdzanie za pomocą MD5 Ubuntu. Jeśli MD5 otrzymany z twoich plików jest zgodny z opublikowanym przez Ubuntu, to nikt nie manipulował pomiędzy plikami binarnymi.

YoMismo
źródło
To nie jest pytanie OP. Martwi się, że kod źródłowy dystrybuowany przez Ubuntu nie jest taki sam jak pliki binarne dystrybuowane przez Ubuntu. Innymi słowy, mówią „to jest źródło”, ale źródło, z którego budują pliki binarne, faktycznie zawiera dodatkowy kod wprowadzony przez NSA. Nie martwi się, że pliki binarne zostały zmienione po kompilacji.
John Chrysostom
OP napisał: „Jak mogę się zweryfikować, czy te pliki binarne pochodzą z oryginalnego kodu źródłowego z Ubuntu?” Odpowiedź jest na to pytanie. Drugi jest niedorzeczny, kto wie, czy jądro Linuksa nie zostało naruszone przez nikogo (NSA czy ktokolwiek?) Łatwe, pobierz kod, przeczytaj go, a gdy będziesz szczęśliwy, skompiluj go sam. Poza tym moja odpowiedź dotyczy pytania, które skopiowałem na początku tego komentarza.
YoMismo,
Nie odpowiedziałeś na pytanie, które zacytowałeś. Korzystanie z MD5 pozwala mu tylko sprawdzić, czy pliki binarne na komputerze odpowiadają plikom binarnym na serwerze. NIE pozwalają mu sprawdzić, czy pliki binarne, które pobrał, zostały skompilowane ze źródła udostępnianego przez Ubuntu. Teraz zgadzam się, że jego pytania są absurdalne z powodu, który podałeś (i inni). Ale to było jego pytanie.
John Chrysostom
0

To ciężka praca, myślę, że zaufanie tutaj jest lepsze niż ta skomplikowana praca. Ale pytanie Czy możesz zaufać?

Ponieważ oprogramowanie typu open source zapewnia użytkownikom swobodę zmiany kodu, nie można komukolwiek ufać.

Zróbmy scenariusz do tego celu, chcę to sprawdzić Ubuntu == source code, czekaj Dlaczego nie próbujesz porównać pakietów z ich źródłem?

  1. Zbuduj pakiet binarny dla Ubuntu ze źródła.
  2. porównał sam zbudowany pakiet binarny z pakietem opublikowanym przez dystrybucję.
  3. Użyj źródła apt-get -b, aby pobrać źródło.

Ale dla mnie dobre porównywanie daje drobne różne wyniki z powodu różnych znaczników czasu, środowisk, ale czy to dowodzi, że nie pochodzi on z kodu źródłowego!

nux
źródło