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. FTP access to Debian hosted mirrors will be removed
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.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. Perl changes that may break third-party software
5.3.8. iproute2 will replace 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. FTP access to Debian hosted mirrors will be removed

Debian hosted mirrors will stop providing FTP access. If you have been using the ftp protocol in your sources.list, please migrate to http. Please consider the following example for migrating:

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

# tor variant (requires apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

The above examples do not include non-free and contrib. Please remember to include these if you require those components enabled.

For more information, please refer to the annoucement: 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 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).

[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.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. New APT pinning engine

APT 1.1 introduced a new pinning engine that now matches the description in the manual page.

The old engine assigned one pin priority per package, the new 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.

This changes the effect of some pins, especially negative ones. Previously, pinning a version to -1 effectively prevented the package from being installed (the package pin was -1), it now only prevents the version of this package from being installed.

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

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.

If you use reprepro, you want to upgrade it to at least version 4.17.0. For aptly, you will need at least version 1.0.0, which is unfortunately not available in Debian stretch.

Should your tooling be unable to cope with these gracefully, you can ask debhelper to disable this feature by adding "noautodbgsym" in the DEB_BUILD_OPTIONS variable of your build service. Please see the dh_strip manpage for more information

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. Perl changes that may break third-party software

[Note]Note

This section applies to code maintained outside Debian 9 - local, third-party or legacy Perl scripts and modules.

  • Some modules have been removed from Perl core and are now shipped in separate packages. Notable examples are CGI, available in the libcgi-pm-perl package, and Module::Build, available in the libmodule-build-perl package.

  • The current working directory (.) has been removed from the default list of include directories, @INC. This may affect usage of require(), do() etc., where the arguments are files in the current directory.

  • The full list of changes in Perl since the version in Debian 8 is available in perl522delta and perl524delta.

5.3.8. iproute2 will replace net-tools

The net-tools package's priority has been changed from important to optional, while iproute2 has been upgraded to important. New installations will have iproute2 installed by default, while systems upgraded from Jessie should consider migrating from net-tools to iproute2.

Here is a summary of the net-tools commands, together with their iproute2 equivalent:

legacy net-tools commandsiproute2 replacement commands
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
iwconfigiw
nameifip link, ifrename
netstatss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)
routeip r (ip route)