Comment puis-je confirmer que les binaires de mon Ubuntu proviennent du code source dont ils devraient provenir?

25

Comme 99% des utilisateurs, j'installe Ubuntu à partir de binaires prêts à l'emploi.

Comment puis-je vérifier moi-même que ces fichiers binaires proviennent bien du code source d'origine d'Ubuntu?

Il serait bon de vérifier que la NSA / quelqu'un n'a pas collaboré avec Ubuntu ou Linode (mon fournisseur VPS) pour jouer avec les binaires. Si nous pouvions vérifier les fichiers binaires, il serait également peu probable qu'ils tentent cela en premier lieu, car il serait facile de les appeler.

mark1111
la source
Vous pouvez jeter un œil au code source, en l'utilisant apt-get source, ou l'utiliser pour compiler le vôtre. Voir cette question: askubuntu.com/questions/28372/…
Wilf
4
Peut-être utile: comment vérifier que les fichiers installés par package correspondent aux originaux? (Debian, mais devrait être suffisamment proche pour être applicable à Ubuntu)
un CVn le
@ MichaelKjörling Je cherchais notre version de cette question ...
Braiam
1
@Braiam Je pense que dans ce cas particulier, Debian / Ubuntu ne fait pas beaucoup de différence. Ce qui fait la différence, c'est le but des questions; celui lié ci-dessus vise principalement à détecter les fichiers corrompus à un moment donné après l'installation, tandis que celui-ci semble viser à détecter les fichiers remplacés ou modifiés par malveillance, ou les fichiers binaires ne correspondant pas au prétendu code source. Différents problèmes, c'est pourquoi j'ai marqué le lien uniquement "peut-être utile".
un CVn le
3
Fait intéressant, je pense que même Gentoo évite complètement ce problème: là, vous devez faire confiance aux archives de code source téléchargées. Utilisez les signatures cryptographiques tout ce que vous voulez; si vous ne pouvez pas croire que ce qui est signé est authentique et que c'est ce qu'il est censé être, il n'y a pratiquement rien à faire.
un CVn le

Réponses:

36

Vous pouvez télécharger le code source et le compiler vous-même. Mais attendez - vous devez d'abord vérifier ce code source, car si Canonical a collaboré avec la NSA, ils ont probablement entré un code quelque part pour permettre un enregistreur de frappe ou quelque chose qui peut être activé à distance.

Alors...

  1. après avoir téléchargé le code source,
  2. vous devez vérifier tout le code,
  3. puis compilez-le!

Mais attendez - pouvez-vous faire confiance au compilateur ?

SPRBRN
la source
15
"Pouvez-vous faire confiance au compilateur?" C'est alors que vous partez sur une tangente et lisez la question Comment compiler le compilateur C à partir de zéro, puis compiler Unix / Linux à partir de zéro (et les réponses associées).
un CVn le
17
Mais pouvez-vous faire confiance à votre matériel? Peut-être que vous devriez également construire votre ordinateur à partir de zéro, et c'est là que vous rencontrez quelques problèmes ...
Thomas
Et pouvez-vous faire confiance à l'hyperviseur qui exécute votre machine virtuelle?
Fernando Correia
1
Je ne suppose pas qu'il pourrait être utile de compiler la source sur quelques compilateurs similaires de différents auteurs et de vérifier les différences de sortie. Mais comment savez-vous que les auteurs ne sont pas vraiment la même entité sous des alias? Ou plus probablement, que faire si tous ces compilateurs ont un ancêtre corrompu commun? Et rien de tout cela n'aiderait les problèmes de confiance matérielle de toute façon.
Keen
6
Mais attendez - pouvez-vous croire que askubuntu n'est pas filtré ou complètement contrôlé par la NSA pour éviter de vous dire toutes les zones potentiellement compromises?
TheZ
9

Si vous n'êtes pas prêt à accepter "parce qu'Ubuntu le dit", alors vous ne pouvez pas.

fkraiem
la source
2
J'ajouterais que vous pouvez [essayer de] vérifier si les binaires sur votre système particulier correspondent aux binaires originaux d'Ubuntu en comparant les sommes de contrôle. Bien sûr, un rootkit approprié ne serait en aucun cas facilement détectable depuis le système.
Peteris
2
Cela ne fonctionne que si vous croyez que les "binaires Ubuntu d'origine" n'ont pas été falsifiés. En d'autres termes, si vous acceptez qu'ils sont bons parce qu'Ubuntu le dit. ;)
fkraiem
5

Ubuntu offre des moyens pratiques pour compiler un paquet sur votre propre machine. Cependant, il n'existe aucun moyen de vérifier que l'exécutable dans un package binaire que vous avez téléchargé a été obtenu à partir de ce code source. Le processus de signature utilisé par Ubuntu réduit considérablement le risque de falsification par les tiers des packages, mais vous devez toujours vous assurer qu'aucun code nuisible n'a été ajouté avant la compilation qui ne se reflète pas dans le code source téléchargeable.

La raison en est qu'il est extrêmement difficile d'obtenir précisément les mêmes fichiers binaires que dans les packages compilés, car ceux-ci dépendent de la version précise du compilateur, de ses options, et il y a probablement aussi des chemins ou des variables d'environnement compilés dans le binaire. Vous ne pourrez donc pas obtenir précisément le même binaire lors de la compilation, ce qui "vérifierait" le binaire téléchargé.

Il existe en fait une petite communauté de chercheurs autour de ce problème précisément - comment rendre la compilation reproductible.

Cela dit, une comparaison manuelle d'un binaire téléchargé et d'un binaire auto-compilé peut détecter du code ajouté / modifié, il serait donc risqué pour quelqu'un offrant des binaires et le code source de cacher quelque chose dans les binaires, car cela peut être détecté.

Mais il y a aussi le problème de faire confiance au compilateur, comme déjà mentionné ...

DCTLib
la source
4

Il est difficile de créer exactement les mêmes fichiers binaires sur deux machines différentes. Le projet TOR fait cela dans le cadre de leur construction. Il y a une description de la façon dont ils le font. Debian et Fedora semblent avoir des projets rendant cela possible pour ces distributions, mais ils en sont aux premiers stades. Il ne semble pas y avoir de travail effectué dans Ubuntu .

Pour reproduire un package binaire Ubuntu, vous devez reproduire l'environnement dans lequel il a été créé le plus fidèlement possible. Pour commencer, vous devez d'abord savoir où et comment ces packages ont été compilés. Il ne semble pas que ces informations soient faciles à trouver.

Josef
la source
Détails sur quoi spécifique?
Josef
Ignorez-moi, confondu avec un autre post :)
Tim
0

Vérification avec le MD5 d'Ubuntu. Si le MD5 que vous obtenez à partir de vos fichiers correspond à celui publié par Ubuntu, personne n'a altéré les fichiers binaires entre eux.

YoMismo
la source
Ce n'est pas la question d'OP. Il craint que le code source distribué par Ubuntu ne soit pas le même que les binaires distribués par Ubuntu. En d'autres termes, ils disent "c'est la source", mais la source à partir de laquelle ils construisent les binaires a en fait du code supplémentaire introduit par la NSA. Il n'est pas inquiet que les binaires aient été falsifiés après la construction.
John Chrysostom
L'OP a posté: "Comment puis-je vérifier moi-même que ces binaires proviennent bien du code source d'origine d'Ubuntu?" La réponse est à cette question. L'autre est ridicule, qui peut savoir si le noyau Linux n'a été altéré par personne (NSA ou qui?), Téléchargez le code, lisez-le et une fois que vous êtes content, compilez-le vous-même. À part cela, ma réponse est à la question que j'ai copiée au début de ce commentaire.
YoMismo
Vous n'avez pas répondu à la question que vous avez citée. L'utilisation du MD5 lui permet uniquement de vérifier que les fichiers binaires de son ordinateur correspondent aux fichiers binaires du serveur. Ils ne lui permettent PAS de vérifier que les fichiers binaires qu'il a téléchargés ont été compilés à partir de la source fournie par Ubuntu. Maintenant, je conviens que ses questions sont ridicules pour la raison que vous (et d'autres) avez indiquée. Mais c'était SA question.
John Chrysostom
0

C'est un travail difficile, je pense que la confiance ici est meilleure que ce travail compliqué. Mais la question Pouvez-vous faire confiance?

Parce que le logiciel open source donne de nombreuses libertés aux utilisateurs de changer le code, vous ne pouvez pas faire confiance à personne.

Permet de créer un scénario à cet effet, je veux vérifier que mon Ubuntu == source code, attendez Pourquoi vous n'essayez pas de comparer les packages à leur source?

  1. Construisez un paquet binaire pour Ubuntu à partir des sources.
  2. a comparé le package binaire auto-construit avec celui publié par la distribution.
  3. Utilisez apt-get -b source pour télécharger la source.

Mais pour moi, bien comparer vous donne des résultats différents mineurs en raison de différents horodatages, environnements, mais cela prouve-t-il que ce n'est pas du code source!

nux
la source