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.1.6. MIPS 32 bits nécessite maintenant un processeur R2
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
5.3.6. Modifications liées à OpenSSL

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 :

  • la plupart des paquets "-dbg" ont été supprimés de l'archive principale. Ils ont été remplacés par des paquets "-dbgsym" qui sont disponibles dans l'archive "debian-debug". Veuillez consulter Section 2.2.4, « Une nouvelle archive pour les symboles de débogage ».

  • Le gestionnaire de mots de passe fpm2 n'est plus maintenu en amont. Veuillez utiliser un autre gestionnaire de mots de passe tel que pass, keepassx ou keepass2. Assurez-vous d'avoir extrait vos mots de passe de fpm2 avant de supprimer le paquet.

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 pour l'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.1.6. MIPS 32 bits nécessite maintenant un processeur R2

La prise en charge de MIPS 32 bits (à la fois petit boutiste et grand boutiste) nécessite maintenant un processeur prenant en charge la version 2 de MIPS32 du jeu d'instructions MIPS. En particulier, les Loongson-2E/2F et les systèmes basés sur ceux-ci (dont les ordinateurs Yeeloong) ne sont plus pris en charge.

Le script shell suivant peut être utile pour indiquer si votre machine prend en charge R2 (en supposant qu'un seul type de processeur soit présent). Veuillez noter que les processeurs Loongson-3 sont pris en charge bien qu'ils prétendent ne prendre en charge que la version 1 de MIPS32.

if grep -E -q '^isa.*\bmips(32|64)r2\b' /proc/cpuinfo; then
	echo "OK (R2 supported)"
elif grep -q '^cpu model.*\bICT Loongson-3\b' /proc/cpuinfo; then
	echo "OK (Loongson 3)"
else
	echo "NOT OK: R2 not supported"
fi

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.

5.3.6. Modifications liées à OpenSSL

L'application openssl attend les arguments optionnels avant les arguments obligatoires. Par exemple, ceci ne fonctionne plus :

openssl dsaparam 2048 -out file

mais ceci fonctionne toujours :

openssl dsaparam -out file 2048

La commande openssl enc a changé son algorithme par défaut (utilisé pour créer la clé depuis une phrase de passe) de MD5 vers SHA256. L'algorithme peut être indiqué avec l'option -md au cas où d'anciens fichiers devraient être déchiffrés avec une nouvelle version d'openssl (ou l'inverse).

Les algorithmes de chiffrement 3DES et RC4 ne sont plus disponibles pour la communication par TLS/SSL. Les serveurs liés à openssl ne peuvent plus les proposer et les clients ne peuvent plus se connecter à des serveurs ne proposant que ces algorithmes. Cela signifie qu'openssl et Windows XP n'ont aucun algorithme de chiffrement en commun.

Le paquet libssl-dev fournit les fichiers d'en-tête pour compiler avec openssl 1.1.0. L'API a beaucoup changé et il est possible que des logiciels ne soient plus compilables. Il existe un aperçu des modifications. Si vous ne pouvez mettre votre logiciel à jour, il existe également libssl1.0-dev qui fournit les en-têtes pour openssl 1.0.2.