Chapitre 5. Problèmes à connaître pour Stretch

Table des matières

5.1. Mise à niveau d'éléments spécifiques pour Stretch
5.1.1. Le montage tardif de /usr n'est plus pris en charge
5.1.2. Paquets obsolètes
5.1.3. Composants déconseillés pour Stretch
5.1.4. Choses à faire avant de redémarrer après la mise à niveau
5.1.5. Les binaires sont maintenant compilés par défaut comme des exécutables indépendants de l'emplacement (PIE).
5.2. Limitations de la prise en charge de sécurité
5.2.1. État de sécurité des navigateurs web
5.2.2. Manque de prise en charge de sécurité pour l'écosystème autour de libv8 et Node.js
5.3. Problèmes spécifiques à des paquets
5.3.1. Anciens algorithmes de chiffrement et protocole SSH1 désactivés dans OpenSSH par défaut
5.3.2. Possibles modifications non rétrocompatibles dans APT
5.3.3. Le serveur Xorg n'a plus le setuid root par défaut.
5.3.4. Upstart supprimé
5.3.5. L'outil debhelper génère maintenant les paquets dbgsym par défaut

Parfois, des changements ont des effets de bord que nous ne pouvons pas raisonnablement éviter sans nous exposer à des bogues à un autre endroit. Cette section documente les problèmes que nous connaissons. Veuillez également lire l'errata, la documentation des paquets concernés, les rapports de bogues et les autres sources d'informations mentionnées en Section 6.1, « Lectures pour aller plus loin ».

5.1. Mise à niveau d'éléments spécifiques pour Stretch

Cette section concerne les éléments liés à la mise à niveau de Jessie vers Stretch

5.1.1. Le montage tardif de /usr n'est plus pris en charge

[Note]Note

Cette section ne s'applique qu'aux systèmes utilisant un noyau personnalisé, où /usr se trouve dans un point de montage séparé de /. Si vous utilisez les paquets du noyau fournis par Debian, ce problème ne vous affecte pas.

Le montage de /usr en n'utilisant que des outils trouvés dans / n'est plus pris en charge. Cela n'a fonctionné dans le passé que pour quelques configurations spécifiques et est désormais explicitement non pris en charge.

Cela signifie que pour Stretch tous les systèmes dans lesquels /usr est une partition séparée doivent utiliser un générateur d'initramfs qui montera /usr. Tous les générateurs d'initramfs présents dans Stretch le font.

5.1.2. Paquets obsolètes

La liste suivante contient des paquets connus et obsolètes (voir Section 4.8, « Paquets obsolètes » pour une description).

La liste des paquets obsolètes contient :

5.1.3. Composants déconseillés pour Stretch

Avec la prochaine publication de Debian 10 (nom de code Buster), certaines fonctionnalités seront déconseillées. Les utilisateurs devront migrer vers des alternatives pour éviter les problèmes lors de la mise à jour vers 10.

Cela comprend les fonctionnalités suivantes :

  • TODO: Add items if any

5.1.4. Choses à faire avant de redémarrer après la mise à niveau

Lorsque apt-get dist-upgrade a terminé, la mise à niveau « formelle » est complète, mais certaines choses devraient être prises en compte avant avant le redémarrage suivant.


      add list of items here
      
    

5.1.5. Les binaires sont maintenant compilés par défaut comme des exécutables indépendants de l'emplacement (PIE).

[Note]Note

Cette section est principalement destinée aux développeurs ou aux administrateurs système. Les utilisateurs classiques ne devraient pas être affectés par cette section.

Par défaut, le compilateur GNU GCC 6 fourni par Debian Stretch compilera tous les exécutables pour être indépendants de l'emplacement. Cela fournit une limitation de toute une classe de vulnérabilités, mais cela mène également à certaines modifications qu'il est préférable de connaître.

  • L'outil file (entre autres) classera ces exécutables en tant qu'« objets partagés » plutôt que comme des « exécutables ». Si vous avez des filtres basés sur les fichiers exécutables, ceux-ci pourraient devoir être mis à jour (par exemple les filtres anti-pourriels).

  • Les bibliothèques statiques compilées en exécutables doivent maintenant être compilées comme du code indépendant de l'emplacement. Le message d'erreur suivant de l'éditeur de liens en est un symptôme :

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

  • Historiquement, les exécutables indépendants de l'emplacement étaient associés avec une perte de performance sur certains matériels, notamment pourl'architecture Debian i386 (machines Intel 32 bits). Bien que GCC 5 et GCC 6 aient grandement amélioré les performances des exécutables indépendants de l'emplacement sur l'architecture Intel 32 bits, cette optimisation pourrait ne pas s'appliquer à toutes les architectures. Veuillez évaluer la performance de votre code si vous visez des architectures ayant un nombre de registres très limité.

5.2. Limitations de la prise en charge de sécurité

Il y a certains paquets pour lesquels Debian ne peut pas garantir de rétroportages minimaux pour les problèmes de sécurité. Ceux-ci sont couverts dans les sous-sections suivantes.

Veuillez noter que le paquet debian-security-support aide à suivre le statut de la prise en charge du suivi de sécurité des paquets installés.

5.2.1. État de sécurité des navigateurs web

Debian 9 inclut plusieurs moteurs de navigateur web qui sont affectés par un flot continu de vulnérabilités de sécurité. Ce taux élevé de vulnérabilités ainsi que le manque partiel de prise en charge amont sous la forme de branches maintenues à long terme rendent difficiles les corrections de sécurité rétroportées. De plus, les interdépendances des bibliothèques rendent impossible la mise à niveau vers une nouvelle version. Par conséquent les navigateurs basés sur les moteurs webkit, qtwebkit et khtml sont inclus dans Stretch mais ne sont pas couverts par une prise en charge complète de la sécurité. Ces navigateurs ne devraient pas être utilisés sur des sites web non fiables.

Pour un usage général de navigation web, nous recommandons Firefox et Chromium.

Chromium − bien qu'il soit construit sur Webkit − est un paquet sans dépendance, qui sera maintenu à jour en reconstruisant les versions actuelles de Chromium pour stable. Firefox et Icedove seront également maintenus à jour en reconstruisant les versions ESR actuelles pour stable.

5.2.2. Manque de prise en charge de sécurité pour l'écosystème autour de libv8 et Node.js

La plate-forme Node.js est construite sur libv8-3.14 qui souffre d'un grand nombre de problèmes de sécurité, mais le projet et l'équipe de sécurité manquent de volontaires suffisamment intéressés et souhaitant investir beaucoup de temps pour corriger ces problèmes.

Malheureusement, cela signifie que libv8-3.14, nodejs et l'écosystème de paquets node-* associé ne devraient pas être actuellement utilisés avec du contenu non sûr, par exemple des données non validées depuis Internet.

De plus, ces paquets ne recevront aucune mise à jour de sécurité pendant la durée de vie de la distribution Stretch.

5.3. Problèmes spécifiques à des paquets

Dans la plupart des cas, les paquets devraient se mettre à jour sans incident entre Jessie et Stretch. Il existe un petit nombre de cas pour lesquels une intervention pourrait être nécessaire, avant ou pendant la mise à niveau ; ces cas sont détaillés ci-dessous paquet par paquet.

5.3.1. Anciens algorithmes de chiffrement et protocole SSH1 désactivés dans OpenSSH par défaut

La version 7 d'OpenSSH a désactivé certains anciens algorithmes de chiffrement et le protocole SSH1 par défaut. Soyez prudents en mettant à niveau des machines pour lesquelles vous n'avez qu'un accès SSH.

Veuillez vous référer à la documentation d'OpenSSH pour plus d'informations.

5.3.2. Possibles modifications non rétrocompatibles dans APT

Cette section couvre certaines des modifications d'APT qui pourraient affecter votre système.

5.3.2.1. APT récupère maintenant les fichiers avec un utilisateur sans privilège ("_apt")

APT essaiera désormais de se passer des droits du superutilisateur avant de récupérer des fichiers depuis les miroirs. APT peut détecter certains cas courants pour lesquels cela échouera et se rabattra sur une récupération avec les droits du superutilisateur avec un avertissement. Néanmoins, il pourrait échouer à détecter certaines configurations exotiques (comme par exemple des règles de pare-feu spécifiques à un uid).

Si vous rencontrez des problèmes avec cette fonctionnalité, veuillez vous authentifier comme l'utilisateur "_apt" et vérifier qu'il :

  • peut lire les fichiers dans /var/lib/apt/lists et /var/cache/apt/archives ;

  • peut lire dans le dépôt de confiance APT (/etc/apt/trusted.gpg et /etc/apt/trusted.gpg.d/) ;

  • peut résoudre les noms DNS et télécharger des fichiers. Exemples de méthodes pour tester :

    # Depuis le paquet dnsutils (si vous utilisez tor, veuillez plutôt vérifier avec tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Ne peut pas résoudre debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Ne peut pas télécharger la page d'index de debian.org"
    

    Pour les problèmes de DNS, veuillez vérifier que /etc/resolv.conf est accessible en lecture.

5.3.2.2. Nouveaux prérequis pour les dépôts APT

[Note]Note

Cette section ne s'applique que si vous avez (ou comptez utiliser) des dépôts tiers activés ou si vous maintenez un dépôt APT.

Pour améliorer la stabilité de téléchargement et assurer la sécurité du contenu téléchargé, APT requiert maintenant ce qui suit des dépôts APT :

  • le fichier InRelease doit être disponible ;

  • Toutes les métadonnées doivent inclure au moins les sommes de contrôle SHA256 de tous les éléments. Cela comprend la signature gpg du fichier InRelease.

  • Les signatures du fichier InRelease doivent être faites au moyen d'une clé de taille 2048 bits ou plus.

Si vous utilisez des dépôts tiers qui ne peuvent se conformer aux prérequis mentionnés, veuillez les inciter à mettre leur dépôt à jour. Plus d'informations sur le fichier InRelease sont disponibles sur le wiki Debian.

5.3.3. Le serveur Xorg n'a plus le setuid root par défaut.

[Note]Note

Ce changement ne s'applique que si votre gestionnaire d'affichage X prend en charge X sans droit root (ou si vous lancez X manuellement via startx). Le seul gestionnaire d'affichage gérant cela actuellement est gdm. Les autres gestionnaires d'affichage lancent simplement X en tant que root sans considération pour ce changement.

Cela réduit le risque d'élévation de droits à travers des bogues dans le serveur X. Cependant, il a certains prérequis pour fonctionner :

  • Il nécessite logind et libpam-systemd.

  • Il nécessite un pilote vidéo du noyau (puisque Xorg ne peut plus communiquer directement avec le matériel).

  • Il nécessite de s'exécuter dans la console virtuelle depuis laquelle il a été démarré.

Quand il est lancé en tant qu'utilisateur normal, le journal de Xorg doit être disponible dans ~/.local/share/xorg/.

Si ces prérequis ne peuvent pas être remplis, veuillez installer le paquet xserver-xorg-legacy pour rétablir le setuid de Xorg.

5.3.4. Upstart supprimé

À cause du manque de mainteneurs amont, le système de démarrage Upstart a été supprimé de Stretch. Si votre système dépend de ce paquet, notez qu'il ne sera pas mis à jour pendant le cycle de vie de Debian 9 et que les tâches upstart pourraient être supprimées des paquets à partir de Debian 10 (Buster).

Veuillez envisager de passer à un système de démarrage pris en charge, comme systemd ou openrc.

5.3.5. L'outil debhelper génère maintenant les paquets dbgsym par défaut

[Note]Note

Cette section est principalement destinée aux développeurs ou aux organisations construisant leurs propres paquets Debian.

La suite d'outils debhelper génère maintenant les paquets « dbgsym » par défaut pour les exécutables ELF. Si vous développez et empaquetez des exécutables, veuillez vérifier que vos outils prennent en charge ces paquets supplémentaires générés automatiquement.

Si vous utilisez reprepro, il vous faudra mettre à niveau vers la version 4.17.0 au minimum. Au moment d'écrire ces lignes, l'outil aptly ne prend pas en charge les paquets dbgsym.

Si vos outils ne sont pas capables de gérer cela, vous pouvez demander à debhelper de désactiver cette fonctionnalité en ajoutant « noautodbgsym » à la variable DEB_BUILD_OPTIONS de votre service de compilation. Veuillez consulter la page de manuel de dh_strip pour plus d'informations.