Notes sur FreeBSD/alpha 4.6.2-RELEASE

Le Projet FreeBSD

$FreeBSD$

Les notes de version pour FreeBSD 4.6.2-RELEASE contiennent un résumé des modifications apportées au système FreeBSD de base depuis la 4.5-RELEASE. Les changements concernant le noyau et les programmes utilisateurs sont indiqués ainsi que les avis de sécurité pour le système de base émis depuis la dernière version. Quelques brèves remarques à propos de la mise à jour sont également présentées.


Table of Contents
1 Introduction
2 Les nouveautés
2.1 Changements concernant le noyau
2.1.1 Support Processeur/Carte mère
2.1.2 Boot
2.1.3 Support des interfaces réseaux
2.1.4 Protocoles réseaux
2.1.5 Disques et stockage
2.1.6 Systèmes de fichier
2.1.7 Support PCCARD
2.1.8 Support Multimédia
2.1.9 Logiciels tiers
2.2 Security Advisories
2.3 Changements dans les programmes utilisateurs
2.3.1 Logiciels tiers
2.3.2 Collection de Paquetages/Ports
2.4 Intégration et création des versions
3 Mise à jour depuis une version antérieure de FreeBSD

1 Introduction

Ce document contient les notes de version pour FreeBSD 4.6.2-RELEASE sur plate-forme Alpha/AXP. Il décrit les nouvelles fonctionnalités de FreeBSD ajoutées (ou modifiées) depuis la 4.5-RELEASE. Il donne également quelques informations au sujet de la mise à jour depuis les versions précédentes de FreeBSD.

Cette distribution de FreeBSD 4.6.2-RELEASE est une ``version mineure'' conçue pour résoudre les quelques problèmes (principalement liés à la sécurité) découverts dans FreeBSD 4.6-RELEASE. A l'origine, elle devait être la version 4.6.1. Cependant, plusieurs problèmes supplémentaires sont apparus pendant la préparation de cette version, ce qui a repoussé la date de sortie. Pour éviter toute confusion, l'équipe chargée de la sécurité et l'équipe en charge des nouvelles versions ont décidé qu'il était préférable de numéroter cette version en 4.6.2.

Cette distribution est disponible sur ftp://ftp.FreeBSD.org/pub/FreeBSD/releases ou sur un des miroirs. Pour avoir de plus amples informations sur comment obtenir cette (ou une autre) distribution release de FreeBSD, veuillez consulter l'appendice ``Obtenir FreeBSD'' du Manuel de Référence FreeBSD.


2 Les nouveautés

Cette section décrit les nouvelles fonctionnalités ou les modifications les plus visibles dans FreeBSD depuis la 4.5-RELEASE. Il s'agit typiquement des nouveaux drivers ou des nouveaux matériels supportés, des nouvelles commandes ou options, des corrections de bugs majeurs ou des mises à jour des logiciels tiers. Les avis de sécurité concernant le système de base découverts après la 4.5-RELEASE sont également indiqués.

Les entrées qui décrivent les changements spécifiques à cette version sont annotées avec [4.6.2].


2.1 Changements concernant le noyau

Le périphérique dump du noyau peut maintenant être indiqué au démarrage via la variable dumpdev. Il est donc maintenant possible d'obtenir des dumps de paniques se produisant durant les dernières étapes de l'initialisation du noyau (avant que le système n'entre en mode mono-utilisateur).

Le périphérique snp(4) n'est plus statique et peut maintenant être compilé en module.


2.1.3 Support des interfaces réseaux

Le driver an(4) supporte désormais le Cisco LEAP ainsi que la clef ``Home'' WEP. Les utilitaires Aironet pour Linux sont maintenant supportés via l'émulation.

Le driver dc(4) supporte maintenant les VLANs.

Le driver fpa(4) fonctionne maintenant sur les machines Alpha.

Ajout du driver my, qui supporte les adaptateurs Fast Ethernet et Gigabit Ethernet Myson.

Le driver wi(4) supporte maintenant les cartes réseaux basées sur les Prism II et Prism 2.5. Le WEP en 104/128 bits fonctionne désormais avec les cartes Prism.

Le driver wi(4) supporte désormais l'utilisation de FreeBSD en tant que point d'accès sans fil. Cette fonction peut être activée avec l'option mediaopt hostap option de ifconfig(8). Elle recquiert un adaptateur sans fil basé sur le composant Prism II.

Le driver wi(4) supporte maintenant les bsd-airtools.

Le driver xe peut maintenant être compilé en tant que module.

Quelques drivers réseaux proposent maintenant un mode "semi-polling", ce qui rends le système bien plus résistant aux attaques et aux pointes de charges. Pour autoriser ce mode, les options suivantes sont requises dans le fichier de configuration du noyau :

    options DEVICE_POLLING
    options HZ=1000 # pas obligatoire mais fortement recommandée
La variable système kern.polling.enable activera alors ce mode; avec la variable kern.polling.user_frac indiquant le pourcentage de temps processeur réservé aux programmes utilisateurs. Les périphériques supportant pour le moment ce mode sont dc(4), fxp(4), rl(4) et sis(4). D'autres informations sont disponibles dans la page de manuel polling(4).


2.1.4 Protocoles réseaux

bridge(4) a maintenant un meilleur support des clusters de passerelles indépendantes et est beaucoup plus stable en présence d'attachements et de détachements dynamiques. Un support complet des VLANs est également présent.

Un bug dans le traitement IPsec pour IPv4, qui faisait en sorte que les vérifications SPD en entrées étaient ignorées, a été corrigé.

Ajout du nouveau module netgraph ng_eiface qui apparaît comme une interface Ethernet mais qui délivre ses trames Ethernet vers une redirection Netgraph.

Nouveau noeud netgraph ng_etf(4) qui permet aux paquets de type Ethernet d'être filtrés vers différentes redirections selon le type ethernet.

L'implémentation syncache de tcp(4) avait un bug qui pouvait provoquer des paniques du noyau; cela a été corrigé.

L'implémentation TCP ignore maintenant correctement les paquets à destination des adresses broadcast de la couche IP.


2.1.5 Disques et stockage

Le driver ahc(4) a été mis à jour avec la version de FreeBSD -CURRENT du 29 Avril 2002.

Le driver ata(4) a été mis à jour avec la version de FreeBSD -CURRENT du 18 Mars 2002.

[4.6.2] Un bug qui empêchait parfois le "tagged queueing" de ata(4) de fonctionner correctement a été corrigé.

Le driver ata(4) supporte maintenant la création, la suppression, l'interrogation et la reconstruction des RAID ATA avec atacontrol(8).

[4.6.2] Le gestionnaire de périphérique ata(4) calcule maintenant correctement les vitesses maximales de transfert. Cela corrige les nombreux READ_BIG et autres erreurs qui se produisaient lors des accès sur certains périphériques ATA.


2.1.6 Systèmes de fichier

Correction d'un bug dans "soft updates" qui pouvait provoquer occasionnellement une corruption du système de fichier si le système était arrêté immédiatement après une intense activité du système de fichier, comme l'installation d'un nouveau noyau ou d'un logiciel.


2.1.9 Logiciels tiers

2.1.9.1 IPFilter

Mise à jour de IPFilter avec la version 3.4.27.


2.2 Security Advisories

Un bug ``off-by-one'' a été corrigé dans le code de multiplexage de OpenSSH. Ce bug pouvait permettre à un utilisateur distant authentifié de faire exécuter du code par sshd(8) avec les privilèges super-utilisateur ou pouvait permettre à un serveur SSH d'exécuter du code sur le système client avec les privilèges de l'utilisateur du client. (Consultez l'avis de sécurité FreeBSD-SA-02:13.)

Une erreur de programmation dans zlib pouvait conduire à essayer de libérer le même bloc mémoire plusieurs fois. Les routines malloc(3)/ free(3) utilisés dans FreeBSD ne sont pas vulnérables à cette erreur, mais les applications recevant des blocs spécialement conçus dans ce but ou des données compressées invalides pouvaient ne plus fonctionner correctement ou s'interrompre. Ce bug de zlib a été corrigé. Pour les solutions et savoir comment comment contourner le problème, consultez l'avis de sécurité FreeBSD-SA-02:18.

Des bugs dans les implémentations du cache SYN (``syncache'') et du cookie SYN (``syncookie'') de TCP, qui pouvait faire planter une machine avec un traffic TCP/IP tout à fait correct, ont été corrigés. Pour les patches et savoir comment contourner ce problème, consultez l'avis de sécurité FreeBSD-SA-02:20.

Une perte mémoire dans la table de routage, qui pouvait permettre à un attaquant distant d'épuiser les ressources mémoires d'une machine cible, a été corrigé. Les patches et le moyen de contourner ce problème sont disponibles dans l'avis de sécurité FreeBSD-SA-02:21.

Un bug concernant les Entrées/Sorties "mappées" en mémoire, qui pouvait provoquer un crash du système, a été corrigé. Pour plus d'informations à propos de la solution, consultez l'avis de sécurité FreeBSD-SA-02:22.

Un trou de sécurité, grâce auquel les programmes SUID pouvaient lire ou écrire des fichiers incorrects en manipulant leurs descripteurs de fichier d'Entrées/Sorties standards, a été corrigé. La solution est disponible dans l'avis de sécurité FreeBSD-SA-02:23.

[4.6.2] La première correction pour l'avis de sécurité SA-02:23 (qui visait l'utilisation des descripteurs de fichiers par les programmes en SUID ou en SGID) contenait une erreur. Il était toujours possible pour les systèmes utilisant procfs(5) ou linprocfs(5) d'exploiter ce bug. Cette erreur a maintenant été corrigée; une nouvelle version de l'avis de sécurité FreeBSD-SA-02:23 contient plus de détails.

Un comportement inattendu pouvait se produire avec k5su(8) parce qu'il ne vérifiait pas que l'utilisateur était membre du groupe wheel lorsqu'il essayait de passer en super-utilisateur (c'est le cas avec su(1)). Pour éviter cette situation, k5su(8) est maintenant installé en non-SUID par défaut (ce qui le rends inutilisable). Plus d'informations sont disponibles dans l'avis de sécurité FreeBSD-SA-02:24.

Plusieurs vulnérabilités ont été découvertes dans l'utilitaire bzip2(1), qui pouvait conduire à l'écrasement de fichiers sans avertissement ou permettre à des utilisateurs locaux d'accéder à des fichiers protégés. Ces problèmes ont été corrigés avec la mise à jour de bzip2. Pour plus d'informations, consultez l'avis de sécurité FreeBSD-SA-02:25.

Un bug a été corrigé dans l'implémentation du cache SYN de TCP (``syncache''), qui pouvait permettre à un attaquant distant d'interdire l'accès à un service lorsque les filtres d'accès (voir accept_filter(9)) étaient utilisés. Ce bug a été corrigé; pour plus d'informations, consultez l'avis de sécurité FreeBSD-SA-02:26.

A cause d'un bug dans l'utilisation des caractères spéciaux du shell dans rc(8), les utilisateurs pouvaient supprimer le contenu de n'importe quel fichier si /tmp/.X11-unix n'existait pas et que le système était relancé. Ce bug a été corrigé (consultez l'avis de sécuritéFreeBSD-SA-02:27).

[4.6.2] Un débordement de tampon mémoire dans le résolveur, qui pouvait être exploité par un serveur de nom de domaines ou par un attaquant envoyant des messages DNS, a été corrigé. Consultez l'avis de sécurité FreeBSD-SA-02:28 pour plus de détails.

[4.6.2] Un débordement de tampon mémoire dans tcpdump(1), qui pouvait être exploité via des paquets NFS mal formés, a été corrigé. Consultez l'avis de sécurité FreeBSD-SA-02:29 pour plus de détails.

[4.6.2] ktrace(1) ne peut plus tracer les opérations des processus précédemment privilégiés; cela empêche la fuite d'informations sensibles que le processus pouvait avoir obtenu avant d'abandonner ses privilèges. Pour une discussion sur ce problème, consultez l'avis de sécurité FreeBSD-SA-02:30 pour plus de détails.

[4.6.2] Une "race condition" dans pppd(8), qui pouvait être utilisée pour changer les permissions d'un fichier quelconque, a été corrigée. Pour plus d'informations, consultez l'avis de sécurité FreeBSD-SA-02:32.

[4.6.2] Plusieurs débordements de tampon mémoire dans OpenSSL ont été corrigés grâce à la mise à jour de la version incluse dans le système de base. Plus de détails sont disponibles dans l'avis de sécurité FreeBSD-SA-02:33.

[4.6.2] Un débordement du tas mémoire dans le décodeur XDR a été corrigé. Pour plus de détails, consultez l'avis de sécurité FreeBSD-SA-02:34.

[4.6.2] Un bug qui pouvait permettre aux utilisateurs locaux de lire et d'écrire des blocs quelconques d'un système de fichiers FFS a été corrigé. Plus de détails sont disponibles dans l'avis de sécurité FreeBSD-SA-02:35.

[4.6.2] Un bug dans le code du serveur NFS, qui pouvait permettre une attaque distante de type déni de service, a été corrigé. Avis de sécurité FreeBSD-SA-02:36 has more details.

[4.6.2] Un bug qui pouvait permettre aux utilisateurs locaux de provoquer une panique du système en utilisant le mécanisme kqueue(2) a été corrigé. Plus d'informations sont disponibles dans l'avis de sécurité FreeBSD-SA-02:37.


2.3 Changements dans les programmes utilisateurs

Ajout de atacontrol(8) pour contrôler divers aspects du driver ata(4).

Pour les lecteurs CDROM ATAPI, cdcontrol(1) supporte maintenant une commande speed afin d'indiquer la vitesse maximale à utiliser avec le lecteur.

ctags(1) ne créé plus un fichier de tags corrompu si le fichier source utilise des commentaires // (style C++).

dump(8) donne maintenant une indication sur sa progression dans le titre du processus, ce qui peut être utile pour surveiller les sauvegardes automatiques.

/etc/rc.firewall et /etc/rc.firewall6 n'ajoutent plus leurs propres règles dans les cas où le fichier de règles est indiqué dans la variable firewall_type ou si le type de firewall n'existe pas (la motivation pour cette modification est d'éviter de faire des suppositions sur la politique de sécurité d'un site). De plus, le firewall de type closed fonctionne désormais tel que documenté dans la page de manuel rc.firewall(8).

Les fonctionnalités de /etc/security ont été déplacées vers un ensemble de scripts dans le cadre de periodic(8), de manière à faciliter les personnalisations et à les rendre plus simple à maintenir. Ces scripts sont maintenant situés dans /etc/periodic/security/.

La famille d'adresse ether de ifconfig(8) a été modifiée au profit de la famille link plus générique (ether est toujours accepté pour conserver la compatibilité).

fsdb(8) supporte maintenant une commande blocks afin de lister les blocs alloués par un inode particulier.

ispppcontrol(8) a été supprimé et ses fonctionnalités ont été ajoutées dans spppcontrol(8).

k5su(8) n'est plus installé par défaut en tant que SUID root. Les utilisateurs qui ont besoin de cette fonction peuvent soit changer manuellement les permissions sur l'exécutable k5su(8) ou ajouter ENABLE_SUID_K5SU=yes dans le fichier /etc/make.conf avant une mise à jour via les sources.

ldd(1) peut maintenant s'utiliser avec les librairies partagées, en plus des exécutables.

last(1) supporte désormais une option -y qui permet d'inclure l'année dans la date de début de session.

libstand supporte désormais le chargement de noyaux et modules de taille importante partagés entre plusieurs périphériques.

libusb a été renommé en libusbhidpour suivre les conventions de nommage de NetBSD.

lpd(8) reconnait maintenant l'option -s en tant qu'équivalent à l'option -p (ces options indiquent à lpd(8) de ne pas ouvrir de socket pour les travaux d'impression en réseau).

lpd(8) dispose maintenant d'une nouvelle option printcap rc. Lorsqu'elle est spécifiée dans une file d'impression pour un hôte distant, cette option indique à lpd(8) de réenvoyer le fichier de données pour chaque copie demandée par l'utilisateur via la commande lpr -#n.

ls(1) accepte désormais l'option -h, qui lorsqu'elle est combinée avec l'option -l, permet d'afficher l'unité utilisée pour les tailles des fichiers choisi de façon à ce que le nombre de chiffres affichés soit inférieur à quatre.

m4(1) accepte maintenant l'option -s qui permet d'émettre les directives #line pour une utilisation avec cpp(1).

mergemaster(8) supporte désormais deux nouvelles options. L'option -p indique un mode ``pre-buildworld'' pour comparer les fichiers essentiels à la réussite des étapes buildworld et installworld de la mise à jour du système. L'option -C, utilisé après une première utilisation réussie de mergemaster(8), compare les options de /etc/rc.conf avec les options par défaut de /etc/defaults/rc.conf.

ngctl(8) supporte maintenant une commande write pour envoyer un paquet de données à travers une redirection donnée.

patch(1) accepte maintenant une option -i pour lire un patch depuis un fichier plutôt que depuis l'entrée standard.

[4.6.2] pam_opie(8) n'envoie plus de faux "challenges" lorsque la variable no_fake_prompts est spécifiée.

[4.6.2] Ajout d'un module pam_opieaccess(8).

[4.6.2] Mise à jour de pam_radius(8), pam_ssh(8) et pam_tacplus(8) avec les versions de FreeBSD -CURRENT du 3 Juillet 2002.

Un module pam_ssh(8) a été ajouté afin de permettre l'utilisation des mots de passe et des clefs SSH pour l'authentification. Ce module prends également en charge la gestion des sessions en utilisant ssh-agent(1).

[4.6.2] pam_unix(8) a été synchronisé avec la version de FreeBSD -CURRENT du 9 Mars 2002 (pre-OpenPAM).

pr(1) supporte maintenant les options -f et -p pour interrompre la sortie vers le terminal.

L'option -W de ps(1) (pour extraire des informations à partir d'un périphérique de swap spécifique) est inutile depuis déjà quelque temps; elle a été supprimée.

reboot(8) accepte maintenant une option -k pour spécifier le noyau lors du prochain démarrage.

sshd(8) n'émets plus un faux challenge S/Key pour les utilisateurs qui n'ont pas activé S/Key. Le comportement antérieur pouvait prêter à confusion en envoyant une invite inutile de mot de passe à utilisation unique avec certains clients SSH récents lors d'une connexion à un système FreeBSD.

sysinstall(8) a maintenant un support rudimentaire pour retrouver les paquetages depuis le bon volume d'une installation faites à partir de plusieurs volumes (comme une distribution sur plusieurs CD).

tftp(1) et tftpd(8) supportent désormais IPv6.

Ajout de usbhidctl(1) pour la manipulation des périphériques d'interfaces homme-machine USB.

uuencode(1) et uudecode(1) acceptent désormais une option -o pour indiquer leurs fichiers de sortie. uuencode(1) peut maintenant coder en base64 grâce à l'option -m, et uudecode(1) peut maintenant automatiquement décoder les fichiers base64.

watch(8) dispose maintenant d'une option -f pour spécifier le périphérique snp(4) à utiliser.

Les noms de locales de la forme *.EUC ont été renommés en *.euc??. Par exemple, ja_JP.EUC est devenu ja_JP.eucJP. Cela permet d'améliorer la compatibilité des noms de locales avec FreeBSD CURRENT, X11R6 et plusieurs autres versions d'UNIX.

Le support de la localisation a été mis à jour avec FreeBSD -CURRENT. Ce changement apporte un support des catégories LC_NUMERIC, LC_MONETARY, et LC_MESSAGES, plusieurs améliorations à strftime(3), une révision des définitions de locales, et une amélioration de la localisation pour de nombreux programmes du système de base.


2.3.1 Logiciels tiers

[4.6.2] Mise à jour de BIND avec la version 8.3.3.

Mise à jour de bzip2 avec la version 1.0.2.

Mise à jour de Heimdal Kerberos avec la version 0.4e.

Mise à jour du client ISC DHCP avec la version 3.0.1RC8.

[4.6.2] Mise à jour de OpenSSH avec la version 3.4p1. Parmi les changements :

  • Les fichiers *2 sont obsolètes (par exemple, ~/.ssh/known_hosts peut avoir le contenu de ~/.ssh/known_hosts2).

  • ssh-keygen(1) peut importer et exporter les clefs au format SECSH pour les échanges avec plusieurs implémentations commerciales de SSH.

  • ssh-add(1) ajoute maintenant 3 clefs par défaut.

  • ssh-keygen(1) n'a plus un type de clef spécifique par défaut; ce type doit maintenant être spécifié explicitement avec l'option -t.

  • Une fonction de ``séparation de privilèges'', qui met en oeuvre des processus non privilégiés pour contenir et restreindre les effets des éventuels futurs trous de sécurité ou des erreurs de programmation.

  • Plusieurs corrections de bugs, dont un trou de sécurité qui pouvait conduire à un dépassement de capacité sur un entier et à une augmentation des privilèges.

Note: Comme depuis FreeBSD 4.6-RELEASE, Protocol 1,2 reste le protocole par défaut dans /etc/ssh/ssh_config. Dans FreeBSD -CURRENT (et pour l'instant dans FreeBSD 4-STABLE), le protocole par défaut est Protocol 2,1.



[4.6.2] Mise à jour de OpenSSL avec la version 0.9.6e.

Mise à jour de texinfo avec la version 4.1.

Mise à jour de la base de données des fuseaux horaires avec la version tzdata2002c.


2.3.1.1 Sendmail

Mise à jour de sendmail avec la version 8.12.3. sendmail(8) n'est plus installé en tant que binaire avec les droits root (et il appartient maintenant au groupe smmsp). Consultez /usr/src/contrib/sendmail/RELEASE_NOTES et /etc/mail/README pour plus d'informations.

Avec cette mise à jour de sendmail, plusieurs démons sendmail (dont certains requis pour la gestion des messages sortant) sont lancés par rc(8) même si la variable sendmail_enable est mise à NO. Pour désactiver complètement sendmail, sendmail_enable doit être mis à NONE. Pour les systèmes utilisant un MTA différent, la variable mta_start_script peut être utilisée pour pointer sur un script de démarrage différent (de plus amples détails se trouvent dans rc.sendmail(8)).

Les permissions des alias et des bases de données sendmail générés via /etc/mail/Makefile ont maintenant le mode 0640 par défaut pour assurer une protection contre le déni de service par vérouillage local du fichier. Ce mode peut être modifié avec la nouvelle option SENDMAIL_MAP_PERMS du fichier make.conf.

Les permissions du fichier de statistiques /var/log/sendmail.st de sendmail ont été modifiés du mode 0644 au mode 0640 pour assurer une protection contre le déni de service par vérouillage local du fichier.

[4.6.2] Un bug potentiel de débordement de tampon mémoire au niveau de la résolution DNS (dans du code qui n'est pas utilisé dans les configurations par défaut) a été corrigé.

Note: Ce bug a été corrigé dans FreeBSD 4.6-STABLE avec l'import d'une nouvelle version de sendmail.




2.3.2 Collection de Paquetages/Ports

La collection des ports utilise désormais XFree86 4.2.0 comme version par défaut de X Window pour le respect des dépendances. Pour utiliser XFree86 3.3.6, ajoutez la ligne suivante au fichier /etc/make.conf :

    XFREE86_VERSION=3

2.4 Intégration et création des versions

XFree86 4.2.0 est maintenant la version par défaut de X Window supporté par sysinstall(8). Il installe XFree86 comme un ensemble de paquetages binaires standards et donc les utilitaires habituels dédiés aux paquetages comme pkg_info(1) peuvent être utilisés afin d'examiner/de manipuler ses composants.

[4.6.2] Un bug qui donnait un répertoire /usr/share/examples incomplet sur les nouvelles installations a été corrigé.


3 Mise à jour depuis une version antérieure de FreeBSD

Si vous effectuez une mise à jour depuis une version antérieure de FreeBSD, vous avez généralement 3 options :



Veuillez consulter le fichier INSTALL.TXT pour plus d'informations, si possible avant de commencer la mise à jour. Si vous faites une mise à jour à partir des sources, consultez également le fichier /usr/src/UPDATING.

Enfin, si vous désirez utiliser une des manières de suivre les branches -STABLE ou -CURRENT de FreeBSD, veuillez consulter la section ``-CURRENT vs. -STABLE'' du Manuel de Référence FreeBSD.

Important: La mise à jour de FreeBSD doit, bien évidemment, être effectuée uniquement après avoir sauvegardé toutes les données et tous les fichiers de configuration.


This file, and other release-related documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/releases.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.

All users of FreeBSD 4-STABLE should subscribe to the <stable@FreeBSD.org> mailing list.

For questions about this documentation, e-mail <doc@FreeBSD.org>.