OpenBSD 6.1 — throwing star (fish)

51
16
mai
2017
OpenBSD

OpenBSD 6.1 est disponible depuis le 11 avril 2017. OpenBSD est un système d’exploitation orienté sécurité et réseau, dont les principaux avantages sont la stabilité, grâce aux audits sur le code source, mais également l’ensemble très large de fonctionnalités réseau qu’il fournit.

Bannière d'OpenBSD 6.1 sur le thème « throwing star (fish) »
Certaines nouveautés sont détaillées en seconde partie de cet article, qui reprend en grande partie la page d’annonce.

Sommaire

Plates‐formes

Une nouvelle plate‐forme fait son apparition : arm64. Elle utilise clang comme compilateur par défaut pour le système de base, alors que les autres plates‐formes utilisent un GCC modifié par l’équipe d’OpenBSD.

Pour AMR v7, il y a plusieurs améliorations importantes dont le fait d’utiliser EABI (Embedded ABI est un groupe d’ABI proposé par ARM qui améliore les performances) et la prise en charge de nombreux matériels supplémentaires.

À noter que les plates‐formes suivantes sont abandonnées : armish, SPARC (abandonné aussi par Debian lors de la sortie de Jessie) et zaurus.

Virtualisation

La gestion de la virtualisation via vmm(4) et vmd(8) a en fait été introduite lors d’OpenBSD 5.9, mais ces composants étaient désactivés par défaut. Ils sont dorénavant actifs. L’hôte peut maintenant être basé sur amd64 et i386. De plus, les prérequis matériels ont diminué : il n’est plus nécessaire d’avoir des instructions VMX non limitées pour les invités, cela signifie que les processeurs Intel à partir de Nehalem (sorti en 2008) peuvent être utilisés.

Côté invité, on remarquera la possibilité d’utiliser un système GNU/Linux, ou de lui allouer plus de 2 Gio de mémoire vive.

Côté configuration, vm.conf(5) permet de spécifier l’uid et le gid d’une machine virtuelle, ainsi que la configuration automatique des interfaces réseau bridge et switch.

Réseau

Wi‐Fi

  • nouvelle implémentation de MiRa, un algorithme pour l’adaptation du débit lors de l’utilisation de la norme 802.11n ;
  • TKIP/WPA 1 est désactivé par défaut, à cause des problèmes de sécurité du protocole.

Pile réseau générique

Quelques nouveautés dans les interfaces réseau :

  • une nouvelle interface réseau fait son apparition, switch(4), et permet d’être contrôlée par les messages OpenFlow ;
  • avec cette interface viennent le démon switchd(8) et le programme de contrôle switchctl(8) ;
  • la pseudo‐interface gre(4) se dote d’un nouveau mode d’opération, mobileip(4) ;
  • vxlan(4) permet désormais le multi‐point à multi‐point.

Les outils ne sont pas en reste :

  • les deux commandes route(8) et netstat -r affichent correctement les drapeaux des routes et ces derniers sont complètement documentés dans la page de manuel de netstat(1) ;
  • selon les adresses, ipsecctl(8) peut grouper automatiquement les paquets SA ; pour clarifier ce qu’il se passe, le noyau fournit cette information et ipsecctl -s sa renvoie les paquets SA IPsec.

Il y a aussi quelques améliorations du côté de la pile TCP :

  • lors de l’envoi de flux TCP, ces derniers sont stockés localement dans de grosses grappes mbuf pour améliorer la gestion de la mémoire ;
  • le tampon maximum est passé de 256 Kio à 2 Mio, ce qui veut dire que l’empreinte d’OpenBSD, notamment utilisé dans le pare‐feu pf, a changé ;
  • le drapeau TCP_NOPUSH fonctionne avec les sockets listen ;
  • beaucoup de code a été retiré ou simplifié pour faciliter la transition vers du code multiprocesseur, le code d’interruption de verrouillage multiprocesseur a notamment été remodelé.

La brique de pare‐feu, pf, voit arriver quelques nouveautés elle aussi :

  • lors du transfert de paquets depuis la pile réseau vers l’interface, on s’assure qu’ils ne contiennent pas de pointeurs vers pf(4) qui pourraient entraîner une opération de libération de mémoire à un mauvais niveau de protection ;
  • le calcul de la somme de contrôle dans la conversion des paquets ICMP af-to a été réparé ;
  • au passage, le traitement af-to est simplifié et la découverte des chemins MTU dans quelques cas particuliers réparée elle aussi ;
  • le traitement de la fragmentation IPv6 a aussi été amélioré :
    • abandon rapide des fragments atomiques vides,
    • augmentation de la paranoïa lorsque des en‐têtes IPv6 saut à saut apparaissent après des fragments d’en‐tête,
    • suivi plus strict de la RFC 5722 « Manipulation des fragments IPv6 qui se superposent » dans pf(4),
    • la RFC 8021 « fragments atomiques IPv6 considérés comme dangereux » rend caduque la génération des fragments atomiques, donc on ne les envoie plus.

Enfin, un nouveau message de socket de routage, RTM_PROPOSAL, a été ajouté afin de faciliter les futures améliorations du processus de configuration du réseau.

Démons et autres outils réseau

Les outils réseau évoluent dans OpenBSD 6.1 :

  • ping(8) et ping6(8) fusionnent au sein du même outil ;
  • les programmes utilisant UDP peuvent maintenant spécifier une adresse source en utilisant IP_SENDSRCADDR, iked(8) (utilisé pour les tunnels chiffrés IPSec) et snmpd(8) utilisent maintenant la bonne adresse quand ils envoient une réponse ;
  • iked(8) gère le chiffrement utilisant ECDSA, les signatures suivant la norme de la RFC 7427 et peut répondre aux messages IKE v2 utilisant des cookies.

Il y a eu aussi plusieurs corrections, dans le démon et l’outil de contrôle ikectl(8), notamment au niveau du renouvellement de clefs.

Le routage n’est pas en reste :

  • ripd(8) gère maintenant les liens de pair à pair avec des adresses dans des sous‐réseaux différents ;
  • ospfd(8) et ospf6d(8) suivent les changements de MTU à l’exécution ;
  • bgpd(8) gère les Large communities de la RFC 8092 ; il est aussi possible de spécifier un message lors d’une extinction administrative (la RFC le décrivant est encore à l’état de brouillon).

Installation

L’installateur dispose maintenant d’une séparation des privilèges lors de la récupération et la vérification des jeux d’installations. Ces mêmes jeux sont d’ailleurs maintenant téléchargés par défaut via HTTPS quand un miroir l’implémente.

En présence d’un serveur DHCP, l’installateur prend maintenant en compte toutes les informations, comme filename, bootfile-name, server-name, tftp-server-name, et next-server, dans les cas d’installations ou de mises à niveau automatisées.

Enfin, l’installateur n’ajoute plus de route vers un alias IP via 127.0.0.1, grâce aux améliorations de composants du noyau sur le routage.

Sécurité

Du côté de la sécurité système, de nombreuses améliorations sont présentes. On notera par exemple l’utilisation de RELRO (read‐only after relocation) sur toutes les bibliothèques partagées, ld.so(1), ainsi que sur les exécutables dynamiques et statiques. Ce mécanisme a pour but de restreindre les données initiales en lecture seule.

On notera que sur la plate‐forme ARM, les options PIE et -static -pie sont utilisées, tandis que MIPS64 voit augmenter la taille de son espace d’adressage utilisateur virtuel, passant ainsi de 2 Gio à 1 Tio.

Côté réseau, le service de routage route6d(8) s’exécute maintenant avec moins de privilèges.

Mise en œuvre de l’espace utilisateur W^X sur les plates‐formes OCTEON Plus et suivantes.

syslogd(8) peut valider les certificats client avec un fichier d’autorité pour les connexions TLS entrantes.

Le processus parent avec haut privilège de syslogd(8) appelle maintenant exec(2) pour remélanger sa structure de mémoire aléatoire.

Une nouvelle fonction recallocarray(3) fait son apparition, pour réduire le risque de nettoyage incorrect de la mémoire avant et après reallocarray(3).

La famille des fonctions de condensat SHA512_256 a été ajoutée à la libc.

L’architecture ARM a été ajoutée la liste des architectures où la famille des fonctions setjmp(3) applique des cookies XOR à la pile et aux valeurs d’adresses retour dans le jmpbuf.

La famille de fonctions printf(3) effectue désormais un rapport à syslog lorsque le formatage %s est utilisé avec un pointeur NULL.

Lorsque l’option C malloc(3) est utilisée, la détection des dépassements de tampon sur le tas a été améliorée. L’option S (déjà existante) inclut désormais l’option C.

La prise en charge du montage de systèmes de fichiers par des utilisateurs non privilégiés a été supprimée.

bioctl(8) utilise désormais bcrypt PBKDF pour dériver les clefs pour les volumes chiffrés par softraid(4).

Administration

syspatch(8) est un nouvel outil pour simplifier les mises à jour (installation des correctifs binaires). L’installation d’un correctif de sécurité n’implique plus une compilation du système ni de passer par le service en ligne m:tier.

Remarquons aussi l’arrivée d’acme-client(1), qui permet d’obtenir des certificats provenant de l’autorité de certification Let’s Encrypt en toute sécurité avec séparation de privilèges.

Le fichier /etc/installurl remplace /etc/pkg.conf. Son contenu est simplifié. Il suffit de renseigner son miroir préféré pour installer ses paquets. Sa syntaxe doit respecter la forme « https://miroir/o/miroir/pub/OpenBSD ». Il prend en charge la release et -current.

Enfin, le gestionnaire de connexion graphique xdm(1) est remplacé par xenodm(1).

Aperçu des mises à jour de logiciels

Cette liste n’est bien entendu pas exhaustive, elle illustre les logiciels les plus couramment utilisés :

  • Chromium 57.0.2987.133 ;
  • Emacs 21.4 et 25.1 ;
  • GCC 4.9.4 ;
  • GIMP 2.8.18 ;
  • GNOME 3.22.2 ;
  • KDE 3.5.10 et 4.14.3 (plus des mises à jour du cœur de KDE 4) ;
  • LibreOffice 5.2.4.2 ;
  • Lua 5.1.5, 5.2.4, et 5.3.4 ;
  • MariaDB 10.0.30 ;
  • Mono 4.6.2.6 ;
  • Mozilla Firefox 52.0.2 ESR et 52.0.2 ;
  • Mutt 1.8.0 ;
  • PHP 5.5.38, 5.6.30, et 7.0.16 ;
  • Postfix 3.2.0 et 3.3-20170218 ;
  • PostgreSQL 9.6.2 ;
  • Python 2.7.13, 3.4.5, 3.5.2 et 3.6.0 ;
  • SQLite3 3.17.0 ;
  • Tcl/Tk 8.5.18 et 8.6.4 ;
  • TeX Live 2015 ;
  • Vim 8.0.0388 ;
  • Xfce 4.12.

Errata et premiers correctifs binaires

Depuis la publication de la version 6.1, des corrections ont déjà été publiées pour les logiciels dhcpd, vmm, LibreSSL et softraid. À noter que OpenBSD 6.0 est également touché par le problème corrigé sur softraid. Pour plus d’informations, consultez la page https://www.openbsd.org/errata61.html (en anglais).

Des mises à jour binaires sont également disponibles pour les plates‐formes i386 et amd64 grâce à l’utilitaire syspatch. Voir la section Administration pour une brève description de cet outil.

CD aux enchères !

La publication des CD d’OpenBSD s’est arrêtée après la version 6.0. Cette nouvelle version 6.1 aurait donc dû être la première à sortir sans support CD officiel achetable. Néanmoins, un unique ensemble de trois CD a quand même été édité pour cette version 6.1. Cet ensemble inclut des dessins de Theo De Raadt lui‐même (qui a pris des cours à cet effet d’après Bob Beck) ! Ce lot a été réalisé de manière artisanale et est signé par Theo.

Ce lot a été proposé aux enchères sur EBay. Celles‐ci ont pris fin le 13 mai et ont rapporté 5 100 dollars canadiens (soit environ 3 403 €) au projet !

N’hésitez pas non plus à donner au projet.

À votre bon cœur !

Aller plus loin

  • # Enchères

    Posté par  . Évalué à 6.

    Par curiosité je suis allé voir les enchères et elles me semblent bizarre.
    Il y a eu 18 enchérisseur pour 93 enchères. On pourrait se dire que ça a été bien disputé et bien en fait … pas tant que cela. Il y a un nombre assez faible de participant qui ont fait monter tout seuls les enchères avec des enchères successives. Par exemple :

    • r**e 10 enchères de 600 à 1050$
    • 3**y 39 enchères de 1100 à 3450$

    Je ne suis pas du tout familier avec ebay, mais je trouve ça bizarre. Si quelqu'un peux m'expliquer …

    • [^] # Re: Enchères

      Posté par  . Évalué à 10.

      C'est comme cela que fonctionne eBay. Voici un exemple de ce qui a pu se passer:
      - l'enchère en cours est à 1€
      - X se dit qu'il est prêt à mettre 1000€, il indique donc 1000€. eBay compare avec 1€, voit que c'est plus grand et passe donc l'enchère en cours à 2€ (juste au dessus de la courante), tout en gardant en mémoire que X est prêt à miser jusqu'à 1000€.
      - Y se dit qu'il est prêt à mettre 500€. eBay compare aux 1000€ de X, voit que c'est moins et donne donc l'enchère en cours à X pour 501€. => dans l'historique, on ne voit pas Y, on voit juste que X a misé 2€ puis 501€, d'affilé.
      - Y essaie alors 600€. Même chose, eBay file donc l'enchère à X pour 601€.
      - Y met 2000€. eBay donne donc l'enchère à Y pour 1001€.

      Ce qui explique l'historique qui semble bizarre.

      • [^] # Re: Enchères

        Posté par  . Évalué à 4.

        Ok merci bien pour les explications

  • # CDs

    Posté par  . Évalué à -1.

    Ca fait beaucoup d'argent pour 3 CDs !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.