7 votes

Comment puis-je savoir si les mises à jour de mon système sont dignes de confiance ?

Je mets systématiquement à jour mon système lorsqu'il me signale des mises à jour logicielles. C'est l'une de ces choses dont je me fie au fonctionnement sans en connaître les détails, mais je suis devenu curieux récemment : Comment puis-je savoir que

  • le processus de vérification des mises à jour n'affiche que les mises à jour légitimes ?
  • les mises à jour que je reçois et que j'installe ne sont pas malveillantes ?

Je sais que j'ai un ensemble de sources logicielles que je spécifie moi-même par URL et que c'est à moi de décider si je fais confiance à ces sources. Mais que se passe-t-il une fois que j'ai spécifié ces URL ?

D'après ce qui est courant de nos jours, je soupçonne que l'authenticité de ces sources est vérifiée par quelque chose du type HTTPS / SSL, c'est-à-dire que j'ai des certificats qui sont vérifiés par une autorité, ce qui signifie que j'ai besoin de certificats racine fiables installés quelque part (ils sont probablement fournis avec le système).

De plus, je suppose que les paquets sont signés cryptographiquement, comme avec GPG ou similaire.

Ces hypothèses sont-elles correctes ? Où puis-je consulter les clés / certificats utilisés ? Comment puis-je vérifier s'il s'agit des bons certificats ? Comment puis-je vérifier qu'ils sont effectivement utilisés ? Existe-t-il des options de configuration qui rendent le processus plus ou moins prudent, et quelles sont leurs valeurs par défaut ? Existe-t-il des attaques connues ou des vulnérabilités récentes ? Je crois me souvenir que Windows a eu un problème de ce genre il n'y a pas longtemps.

Je suis sous la version 12.04, mais je suppose que la réponse à cette question peut être plus générale.

4voto

jhornnes Points 1211

Il n'y a pas de SSL/https à ma connaissance, et il n'y a pas d'autorité de certification en dehors de votre propre ordinateur.

Pour vérifier les mises à jour, votre ordinateur contacte les serveurs que vous avez désignés comme sources. Il téléchargera un fichier d'index depuis ces serveurs en utilisant le protocole http normal. Ces fichiers d'index sont signés, de sorte que personne ne peut vous donner un faux index, mais le fichier correct peut être servi depuis n'importe quel ordinateur, ce qui permet une utilisation facile des miroirs.

À l'aide de cet indice, votre propre ordinateur calculera les nouveaux paquets qu'il doit télécharger. Encore une fois, ces paquets seront récupérés en utilisant le protocole http normal. Une somme md5 de chaque paquet sera vérifiée avec le fichier de version. En outre, les paquets des dépôts officiels d'Ubuntu sont également signés. Certaines sources tierces peuvent avoir des paquets non signés (mais la vérification md5 est toujours utilisée), lorsque cela se produit le programme d'installation (apt, Ubuntu Software Center, ...) vous en avertira.

En résumé, la sécurité ne se trouve pas dans les serveurs ou dans les connexions, mais dans les paquets eux-mêmes. Un attaquant qui s'introduit dans un serveur de mise à jour ne peut pas endommager votre ordinateur, mais quelqu'un qui peut obtenir une signature valide le peut.

Vous trouverez plus de détails dans l'explication de l'apt sécurisé. aquí . En résumé, tous les paquets ont une signature GPG et apt fait confiance à ceux qui ont été émis par les personnes dont la clé publique se trouve dans le trousseau d'apt ( /etc/apt/trusted.gpg )

3voto

François Wauquier Points 195

Il s'agit d'une excellente question. La réponse est (bien sûr) assez complexe, mais laissez-moi essayer de la décomposer pour vous. Examinons d'abord les processus techniques :

La chaîne de confiance

Nous n'utilisons pas SSL pour sécuriser APT, nous utilisons des hachages cryptographiques (SHA256, de nos jours) et des signatures OpenPGP. Cela vous permet de faire confiance à des miroirs non fiables et vous évite d'avoir à faire confiance à la PKI de l'AC.

Lorsque vous ajoutez un référentiel à la liste des référentiels d'APT, vous pouvez l'ajouter à la liste des référentiels d'APT. sources.list vous devez également ajouter sa clé PGP au trousseau de clés de confiance d'APT, avec l'attribut apt-key commande. Le trousseau de clés est livré avec les clés des dépôts d'Ubuntu incluses. Et lorsque vous utilisez la commande apt-add-repository pour ajouter un PPA, il ajoute la clé (obtenue de Launchpad via SSL) pour vous.

La chaîne de confiance est :

  1. Cada sources.list points d'entrée APT vers un Release dans le référentiel, avec un Release.gpg (ou ils peuvent être combinés en une signature InRelease ). Ce fichier décrit le dépôt, et doit être signé par une clé dans le trousseau de clés de votre APT.
  2. En Release Le fichier contient les hachages cryptographiques de tous les Packages y Sources fichiers. Ils listent tous les paquets et les versions disponibles dans le référentiel.
  3. En Packages y Sources contiennent les hachages cryptographiques de chaque paquet.
  4. Les paquets eux-mêmes ne sont pas signés. C'est inutile, il y a une chaîne de confiance vers eux, depuis le fichier Release, signé par le miroir. Cependant, les paquets sources, utilisés pour construire les paquets binaires sont signés PGP, par le développeur qui les a envoyés.

Vous pouvez en savoir plus sur le format de référentiel sur le wiki Debian .

Cette chaîne signifie que nous n'avons pas à faire confiance à des miroirs intermédiaires, nous pouvons être sûrs que le paquet que nous installons est identique à celui qui était présent lorsque le fichier Release a été signé.

Vous pouvez inspecter le trousseau de clés d'APT en exécutant sudo apt-key finger .

Vérification des clés d'archivage d'Ubuntu

Comment savez-vous ce qui devrait être là ? Si vous ne faites pas confiance à votre ordinateur, vous ne pouvez pas faire confiance aux programmes qui s'y trouvent pour ne pas vous mentir (tels que apt-key ), et cet exercice est futile. Supposons donc que c'est juste par intérêt académique, et vérifions le contenu du trousseau de clés à partir du paquet source définitif, qui est signé PGP par le développeur qui l'a téléchargé.

Télécharger le ubuntu-keyring le paquet source, et voyez ce qui devrait s'y trouver :

$ apt-get source ubuntu-keyring
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 20.0 kB of source archives.
Get:1 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (dsc) [1542 B]
Get:2 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (tar) [18.5 kB]
Fetched 20.0 kB in 0s (0 B/s)               
dpkg-source: info: extracting ubuntu-keyring in ubuntu-keyring-2012.05.19
dpkg-source: info: unpacking ubuntu-keyring_2012.05.19.tar.gz
$ gpg --verify ubuntu-keyring_2012.05.19.dsc
gpg: Signature made Sat May 19 03:33:12 2012 SAST
gpg:                using RSA key 0x393587D97D86500B
gpg: Good signature from "Colin Watson <cjwatson@chiark.greenend.org.uk>"
gpg:                 aka "Colin Watson <cjwatson@debian.org>"
gpg:                 aka "Colin Watson <cjwatson@ubuntu.com>"
gpg:                 aka "Colin Watson <cjwatson@canonical.com>"
$ gpg --no-default-keyring --keyring ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg --fingerprint
ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg
-------------------------------------------------------------
pub   1024D/0x40976EAF437D05B5 2004-09-12
      Key fingerprint = 6302 39CC 130E 1A7F D81A  27B1 4097 6EAF 437D 05B5
uid                            Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
sub   2048g/0x251BEFF479164387 2004-09-12

pub   1024D/0x46181433FBB75451 2004-12-30
      Key fingerprint = C598 6B4F 1257 FFA8 6632  CBA7 4618 1433 FBB7 5451
uid                            Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>

pub   4096R/0x3B4FE6ACC0B21F32 2012-05-11
      Key fingerprint = 790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
uid                            Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>

pub   4096R/0xD94AA3F0EFE21092 2012-05-11
      Key fingerprint = 8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
uid                            Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>

Je sais qu'il s'agit en fait de la signature de Colin Watson, car je l'ai rencontré plusieurs fois et nous avons vérifié nos identités respectives et signé nos clés respectives. Si vous disposez d'une clé dans le jeu de clés PGP, vous devriez pouvoir trouver un chemin de confiance vers lui. Je sais également que je peux lui faire confiance pour télécharger le bon fichier ubuntu-keyring paquet.

Pour Debian, il y a un paquet ( debian-keyring ) contenant les clés PGP de tous les développeurs Debian, et vous pouvez l'utiliser pour vérifier les signatures des paquets sources. Ubuntu n'a pas d'équivalent, mais de nombreux développeurs Ubuntu sont également des développeurs Debian, et les clés PGP de tous nos développeurs sont disponibles sur leurs profils dans Launchpad.

Les autres questions

Comment puis-je savoir si les mises à jour ne sont pas malveillantes ?

C'est une question de confiance. Vous devez faire entièrement confiance à chaque référentiel que vous utilisez. Vous donnez aux mainteneurs de chaque dépôt la permission d'exécuter des choses en tant que root sur votre machine.

Les paquets Ubuntu ne peuvent être téléchargés que par les développeurs Ubuntu qui se sont vus accorder des droits de téléversement par la Commission européenne. Conseil d'adhésion des développeurs (dont je fais actuellement partie). Pour demander des droits de téléchargement, vous devez être parrainé par plusieurs développeurs Ubuntu existants qui ont travaillé avec vous et qui ont confiance en vos capacités à travailler par vous-même. Sans droits d'upload, les uploads doivent être sponsorisés par les développeurs qui ont les droits (ce qui devrait inclure la révision de l'upload).

Pour les mises à jour postérieures à la sortie de la version, Ubuntu a des politiques strictes concernant le contenu des mises à jour. Elles ne doivent contenir que des correctifs minimaux pour corriger les bogues connus. Les correctifs sont examinés par les membres des équipes SRU / Sécurité avant d'être acceptés.

Évidemment, les PPA et les dépôts de tiers n'ont pas toutes ces restrictions. Vous devez faire confiance aux propriétaires de PPA pour être raisonnable.

Tous les paquets Ubuntu et PPA ont la source disponible, donc ils peuvent être inspectés par n'importe qui.

Existe-t-il des options de configuration qui rendent le processus plus ou moins prudent, et quelles sont leurs valeurs par défaut ?

Vous pouvez désactiver la vérification des signatures dans APT, mais elle est bien sûr activée par défaut. Lorsque vous essayez d'installer quelque chose à partir d'un dépôt non signé / non fiable, apt vous demande de confirmer que vous voulez vraiment le faire.

Y a-t-il des attaques connues ou des vulnérabilités récentes ?

Je me souviens d'un, Bogue Debian 499897 . Debian contourne ce problème en donnant aux fichiers Release une date d'expiration, après laquelle ils ne sont plus dignes de confiance. Ubuntu ne le supporte pas encore .

0voto

Réponse connexe : en plus de vérifier l'authenticité des signatures des paquets, vous pouvez aller plus loin et vérifier que les systèmes sont entièrement à jour avec les derniers correctifs de sécurité applicables grâce à la fonction de rapport de conformité de Landscape.

Il s'agit d'un graphique circulaire mis à jour sur place qui vous indique combien de systèmes sont encore vulnérables et lesquels. C'est probablement trop pour une personne seule, mais c'est une FAQ pour les grandes entreprises et les petites entreprises.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X