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. Suppression de l'accès par FTP aux miroirs hébergés par Debian
5.1.3. Paquets obsolètes
5.1.4. Composants déconseillés pour Stretch
5.1.5. Choses à faire avant de redémarrer après la mise à niveau
5.1.6. Les binaires sont maintenant compilés par défaut comme des exécutables indépendants de l'emplacement (PIE).
5.1.7. Most LSB compatibility packages have been removed
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
5.3.7. Modifications de Perl pouvant casser des logiciels tiers
5.3.8. PostgreSQL PL/Perl incompatibility
5.3.9. iproute2 remplace net-tools

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. Suppression de l'accès par FTP aux miroirs hébergés par Debian

Les miroirs hébergés par Debian vont cesser de fournir un accès FTP. Si vous utilisez ce protocole dans votre sources.list, veuillez migrer vers http. Veuillez considérer l'exemple de migration suivant :

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# variante tor (nécessite apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Les exemples ci-dessus ne comprennent pas non-free ni contrib. N'oubliez pas de les inclure si vous avez besoin de ces composants.

For more information, please refer to the announcement: Shutting down public FTP services.

5.1.3. 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.4. 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.5. 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 le redémarrage suivant.


      add list of items here
      
    

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

By default, the GNU GCC 6 compiler provided by Debian stretch will compile all executables as position independent. This provides a mitigation for an entire class of vulnerabilities.

Unfortunately, the Linux kernel provided in Debian 8 (up to 8.7) has an issue that can cause some programs compiled as position independent executables to crash with a non-descriptive issue like segmentation fault. This issue is solved in the linux version provided in 8.8 (version 3.16.43 or later) and in the kernel provided in Debian 9 (version 4.9 or later).

We recommend that you upgrade your kernel to a fixed version and then reboot before starting the upgrade to stretch. If you are running the kernel Debian 8.8 or newer, you are not affected by this issue.

If you are running an affected version of the kernel during the upgrade, we highly recommend that you perform a reboot into the stretch kernel right after the upgrade to avoid hitting this

5.1.6.1. Behaviour changes of PIE for system administrators and developers

[Note]Note

This section is mainly intended for developers or system administrators. Desktop users are unlikely to be affected by this section.

The above also leads to some changes that are worth being aware of.

  • 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.7. Most LSB compatibility packages have been removed

Due to lack of interest and testability, Debian has removed the vast majority of the Linux Standard Base (LSB) compatibility packages.

Debian will still provide a selected few key LSB utilities used internally and externally, such as lsb-release and the sysvinit init functions in lsb-base. Furthermore, Debian is still firmly standing by the Filesystem Hierarchy Standard (FHS) version 2.3 with the minor alterations described in the Debian Policy Manual.

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 - while built upon the Webkit codebase - is a leaf package, which will be kept up-to-date by rebuilding the current Chromium releases for stable. Firefox and Thunderbird will also be kept up-to-date by rebuilding the current ESR releases for 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. Nouveau moteur d'épinglage (pinning) APT

APT 1.1 a introduit un nouveau moteur d'épinglage que correspond maintenant à la description de la page de manuel.

The old engine assigned one pin priority per package, the new one assigns pin priorities per version. It then picks the version with the highest pin that is not a downgrade or that has a pin > 1000.

Cela modifie l'effet de certaines priorités, en particulier les priorités négatives. Auparavant, fixer une version à -1 empêchait le paquet d'être installé (la priorité du paquet était -1), maintenant cela empêche juste cette version du paquet d'être installée.

5.3.2.3. 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

This section is mainly intended for developers or organizations that build their own debian packages.

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. Pour aptly, il vous faudra au minimum la version 1.0.0, qui n'est malheureusement pas disponible dans Debian Stretch.

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.

5.3.7. Modifications de Perl pouvant casser des logiciels tiers

[Note]Note

Cette section s'applique au code maintenu en dehors de Debian 9 – les scripts et modules Perl locaux, tiers ou anciens.

  • Certains modules ont été supprimés du cœur de Perl et sont maintenant livrés dans des paquets séparés. Les exemples notables sont CGI, disponible dans le paquet libcgi-pm-perl, et Module::Build, disponible dans le paquet libmodule-build-perl.

  • Le répertoire de travail courant (.) a été supprimé de la liste par défaut des répertoires d'inclusion, @INC. Cela pourrait affecter l'utilisation de require(), do(), etc., quand les arguments sont des fichiers dans le répertoire courant.

  • La liste complète des modifications dans Perl depuis la version de Debian 8 est disponible dans perl522delta et perl524delta.

5.3.8. PostgreSQL PL/Perl incompatibility

The PostgreSQL PL/Perl procedural language package in jessie is incompatible with the Perl version in stretch. The postgresql-plperl-9.4 package will be removed during the update, rendering server-side Perl procedures dysfunctional. Upgrading to PostgreSQL 9.6 should be unaffected, the procedures will work in the new PostgreSQL cluster if the postgresql-plperl-9.6 package is installed. If unsure, take a backup of your PostgreSQL 9.4 clusters before upgrading to stretch.

5.3.9. iproute2 remplace net-tools

Le paquet net-tools a vu sa priorité passer d'importante à optionnelle, tandis que celle de iproute2 a été mise à jour vers importante. Les nouvelles installations auront iproute2 installé par défaut et la mise à jour de net-tools vers iproute2 devrait être considérée pour les systèmes mis à niveau depuis Jessie.

Voici une liste des commandes de net-tools, avec la commande équivalente dans iproute2 :

anciennes commandes net-toolscommandes iproute2 de remplacement
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
iwconfigiw
nameifip link, ifrename
netstatss, ip route (pour netstat-r), ip -s link (pour netstat -i), ip maddr (pour netstat-g)
routeip r (ip route)