10 points par GN⁺ 2025-02-23 | 1 commentaires | Partager sur WhatsApp

Le projet OpenBSD développe et maintient divers logiciels et idées. Voici un aperçu classé approximativement par ordre d’introduction

Concepts

  • IPSec(4) : OpenBSD a été le premier système d’exploitation libre à fournir une pile IPSec. Introduit le 20 février 1997
  • INET6(4) : intégration complète d’IPv6 dans OpenBSD 2.7. Développement commencé le 6 janvier 1999, avec un état de fonctionnement presque complet atteint lors du premier hackathon le 6 juin de la même année
  • Séparation des privilèges (Privilege Separation) : première implémentation dans OpenSSH en mars 2002. Ensuite appliquée à divers programmes comme bgpd(8), dhclient(8), smtpd(8) et tmux(1)
  • Révocation des privilèges (Privilege Revocation) : application d’une méthode permettant d’abaisser les privilèges tout en conservant certaines ressources. Ex. : ping(8), traceroute(8)
  • Protecteur de pile (Stack Protector) : basé sur « propolice », développé depuis 2001. Activé par défaut dans OpenBSD 3.3
  • W^X (Write XOR Execute) : appliqué pour la première fois dans OpenBSD 3.3. Strictement imposé par défaut à partir d’OpenBSD 6.0
  • Protection de la GOT et de la PLT : dans OpenBSD 3.3, ld.so a été amélioré pour protéger la GOT (Global Offset Table) et la PLT (Procedure Linkage Table)
  • ASLR (Address Space Layout Randomization) : OpenBSD 3.4 a été le premier à l’activer par défaut
  • Analyse et vérification de gcc-local(1) : introduites pour la première fois dans OpenBSD 3.4
  • Renforcement de la sécurité de malloc(3) : randomisation et libération différée lors de l’allocation mémoire. Réimplémenté dans OpenBSD 4.4
  • Exécutables indépendants de la position (PIE) : activés par défaut pour la première fois dans OpenBSD 5.3. Sur 7 plateformes matérielles
  • Initialisation mémoire basée sur l’aléatoire : ajout de la section ELF .openbsd.randomdata dans OpenBSD 5.3
  • Protecteur de pile par objet partagé : application de cookies de protection de pile distincts pour chaque objet partagé dans OpenBSD 5.3
  • Static-PIE : prise en charge de binaires statiques indépendants de la position pour /bin, /sbin et le disque RAM. Introduit dans OpenBSD 5.7
  • Atténuation des attaques SROP : activée par défaut dans OpenBSD 6.0
  • Randomisation de l’ordre de chargement des bibliothèques : activée par défaut dans OpenBSD 6.0 et 6.2
  • Amélioration du lazy-binding pour la sûreté W^X en environnement multithread : introduite dans OpenBSD 5.9
  • Renforcement du layout mémoire : appliqué à tous les programmes et bibliothèques dans OpenBSD 6.1
  • Utilisation de la méthode fork+exec : renforcement de la protection de l’espace d’adressage dans les programmes séparés par privilèges
  • trapsleds : application d’une technique de conversion NOP visant à atténuer les attaques ROP (Return-Oriented Programming)
  • Réédition de liens du noyau au démarrage : randomisation du layout interne du noyau à chaque démarrage
  • Renforcement des séquences d’instructions i386/amd64 : amélioration visant à compliquer les attaques ROP
  • Ajout de l’option MAP_STACK : empêche l’exploitation de mémoire autre que la pile dans les attaques ROP
  • RETGUARD : mécanisme de protection plus puissant que les protecteurs de pile existants, introduit à partir d’OpenBSD 6.4
  • Ajout de l’option MAP_CONCEAL : empêche la fuite d’informations sensibles dans les core dumps
  • Blocage des appels système depuis la mémoire PROT_WRITE : introduit dans OpenBSD 6.5
  • Position fixe des appels système : restriction permettant les appels système uniquement depuis des emplacements spécifiques
  • Renforcement de la protection de l’espace d’adressage : limitation des modifications mémoire via mmap(2), mprotect(2), etc.
  • Réédition de liens de sshd au démarrage : introduite dans OpenBSD 7.2
  • Prise en charge du code non lisible (xonly) : restriction empêchant la lecture de la mémoire exécutable
  • Protection des appels système pinsyscalls(2) : protection par enregistrement préalable des emplacements d’appels système
  • Protection des cibles de branchement indirect (BTI, IBT) : application de fonctions de sécurité matérielles
  • Ajout de la fonction -fret-clean : empêche qu’une valeur de retour reste sur la pile afin de bloquer les fuites d’information. Actuellement appliqué uniquement sur amd64

Fonctions

  • issetugid(2) : fonction introduite dans OpenBSD 2.0, permettant de vérifier si un processus s’exécute avec un ID utilisateur ou un ID de groupe défini
  • arc4random(3) : fonction de génération de nombres aléatoires, ajoutée dans OpenBSD 2.1
  • bcrypt(3) : fonction de hachage de mots de passe. Introduite pour la première fois dans OpenBSD 2.1
  • strlcpy(3), strlcat(3) : fonctions pour la copie et la concaténation sûres de chaînes. Introduites dans OpenBSD 2.4
  • strtonum(3) : fonction qui convertit une chaîne en nombre tout en évitant les erreurs. Introduite dans OpenBSD 3.6
  • imsg : API de transmission de messages, utilisée par divers démons. Ajoutée à libutil dans OpenBSD 4.8
  • timingsafe_bcmp(3) : fonction de comparaison d’octets garantissant un temps d’exécution constant. Introduite dans OpenBSD 4.9
  • explicit_bzero(3) : fonction d’effacement sécurisé de la mémoire. Ajoutée dans OpenBSD 5.5
  • ohash : implémentation de table de hachage. Inclus dans libutil dans OpenBSD 5.6
  • asr : résolveur DNS alternatif. Activé dans OpenBSD 5.6
  • reallocarray(3) : fonction évitant les débordements lors de la réallocation mémoire. Ajoutée dans OpenBSD 5.6
  • getentropy(2) : fonction fournissant des nombres aléatoires cryptographiquement sûrs. Introduite dans OpenBSD 5.6
  • sendsyslog(2) : fonction permettant d’envoyer des messages syslog depuis le noyau. Ajoutée dans OpenBSD 5.6
  • timingsafe_memcmp(3) : fonction de comparaison mémoire garantissant un temps d’exécution constant. Introduite dans OpenBSD 5.6
  • pledge(2) : fonction qui limite les appels système afin d’améliorer la sécurité. Ajoutée dans OpenBSD 5.9
  • getpwnam_shadow(3), getpwuid_shadow(3) : fonctions récupérant les données de mots de passe shadow pour renforcer la sécurité. Introduites dans OpenBSD 5.9
  • recallocarray(3) : fonction qui remplit de zéros les données existantes lors d’un redimensionnement mémoire. Ajoutée dans OpenBSD 6.1
  • freezero(3) : fonction qui libère la mémoire après l’avoir remplie de zéros. Introduite dans OpenBSD 6.2
  • unveil(2) : fonction qui restreint l’accès au système de fichiers. Ajoutée dans OpenBSD 6.4
  • malloc_conceal(3), calloc_conceal(3) : fonctions fournissant une protection des données sensibles lors de l’allocation mémoire. Ajoutées dans OpenBSD 6.5
  • ober : API ASN.1 Basic Encoding Rules. Déplacée vers libutil dans OpenBSD 6.6

Programmes et sous-systèmes

  • Utilitaires liés à YP : ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), ajout du support libc. Distribués pour la première fois dans NetBSD 0.9
  • ypserv(8) : serveur YP introduit dans OpenBSD 2.0
  • mopd(8) : démon prenant en charge MOP (Maintenance Operations Protocol). Ajouté dans OpenBSD 2.0
  • AnonCVS : système conçu pour permettre un accès anonyme au dépôt de code OpenBSD
  • aucat(1) : utilitaire lié au serveur audio. Ajouté dans OpenBSD 2.1
  • OpenSSH : outil de communication sécurisée basé sur SSH. Introduit dans OpenBSD 2.6
  • mg(1) : éditeur de texte léger. Inclus dans OpenBSD 2.7
  • m4(1) : processeur de macros. Étendu et maintenu après OpenBSD 2.7
  • pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8) : pare-feu de filtrage de paquets. Ajouté dans OpenBSD 3.0
  • systrace(4), systrace(1) : outil de surveillance des appels système. Ajouté dans OpenBSD 3.2, puis remplacé par pledge(2) après OpenBSD 5.9
  • spamd(8) : démon de filtrage anti-spam. Introduit dans OpenBSD 3.3
  • dc(1), bc(1) : utilitaires de calcul. Ajoutés dans OpenBSD 3.5
  • sensorsd(8) : outil de supervision des capteurs matériels. Inclus dans OpenBSD 3.5
  • pkg_add(1) : utilitaire de gestion de paquets. Introduit dans OpenBSD 3.5
  • carp(4) : protocole d’interface réseau pour le basculement. Ajouté dans OpenBSD 3.5
  • OpenBGPD : démon de routage BGP. Introduit dans OpenBSD 3.5
  • dhclient(8), dhcpd(8) : client et serveur DHCP. Ajoutés entre OpenBSD 3.5 et 3.6
  • hotplugd(8) : démon de gestion des événements de hotplug. Ajouté dans OpenBSD 3.6
  • OpenNTPD : démon NTP (Network Time Protocol). Ajouté dans OpenBSD 3.6
  • dpb(1) : système distribué de construction de paquets. Introduit dans OpenBSD 3.6
  • ospfd(8), ospfctl(8), ospf6d(8) : démons de routage OSPF (Open Shortest Path First). Introduits entre OpenBSD 3.7 et 4.2
  • ifstated(8) : outil de gestion de l’état des interfaces. Ajouté dans OpenBSD 3.8
  • bioctl(8) : outil de gestion des périphériques bloc et du RAID. Inclus dans OpenBSD 3.8
  • hostapd(8) : outil de gestion des points d’accès sans fil. Introduit dans OpenBSD 3.8
  • watchdogd(8) : watchdog garantissant la stabilité du système. Ajouté dans OpenBSD 3.8
  • sdiff(1) : utilitaire de comparaison de fichiers. Introduit dans OpenBSD 3.9
  • dvmrpd(8), dvmrpctl(8) : prise en charge de DVMRP (Distance Vector Multicast Routing Protocol). Ajoutée dans OpenBSD 4.0
  • ripd(8), ripctl(8) : prise en charge de RIP (Routing Information Protocol). Incluse dans OpenBSD 4.1
  • pkg-config(1) : outil de configuration de paquets. Introduit dans OpenBSD 4.1
  • relayd(8), relayctl(8) : outils de relais de trafic réseau. Ajoutés dans OpenBSD 4.1
  • cwm(1) : gestionnaire de fenêtres léger. Ajouté dans OpenBSD 4.2
  • libtool(1) : outil d’automatisation de construction de bibliothèques. Inclus dans OpenBSD 4.3
  • snmpd(8) : démon SNMP (Simple Network Management Protocol). Ajouté dans OpenBSD 4.3
  • sysmerge(8) : outil de fusion des fichiers de configuration système. Ajouté dans OpenBSD 4.4
  • ypldap(8) : serveur YP basé sur LDAP. Inclus dans OpenBSD 4.4
  • OpenSMTPD : serveur SMTP (Simple Mail Transfer Protocol). Introduit dans OpenBSD 4.6
  • tmux(1) : multiplexeur de terminal. Inclus dans OpenBSD 4.6
  • ldpd(8), ldpctl(8) : prise en charge de LDP (Label Distribution Protocol). Ajoutée dans OpenBSD 4.6
  • mandoc(1) : outil de documentation des pages de manuel. Introduit dans OpenBSD 4.8
  • ldapd(8), ldapctl(8) : serveur LDAP (Lightweight Directory Access Protocol). Ajouté dans OpenBSD 4.8
  • OpenIKED : implémentation du protocole IKE (Internet Key Exchange). Introduite dans OpenBSD 4.8
  • iscsid(8), iscsictl(8) : démons iSCSI. Inclus dans OpenBSD 4.9
  • rc.d(8), rc.subr(8) : gestion des scripts d’initialisation système. Ajoutée dans OpenBSD 4.9
  • npppd(8), npppctl(8) : démon PPP (Point-to-Point Protocol). Ajouté dans OpenBSD 5.3
  • ldomd(8), ldomctl(8) : outils de gestion LDOM (Logical Domains). Inclus dans OpenBSD 5.3
  • sndiod(8) : serveur audio. Introduit dans OpenBSD 5.3
  • cu(1) : utilitaire de communication série. Ajouté dans OpenBSD 5.4
  • slowcgi(8) : outil de traitement des requêtes HTTP lentes. Inclus dans OpenBSD 5.4
  • signify(1) : outil de signature et de vérification de fichiers. Ajouté dans OpenBSD 5.5
  • LibreSSL : projet issu d’un fork d’OpenSSL pour renforcer la sécurité. Publié pour la première fois dans OpenBSD 5.6
  • httpd(8) : serveur web léger. Inclus dans OpenBSD 5.6
  • rcctl(8) : utilitaire de gestion des services rc.d. Ajouté dans OpenBSD 5.7
  • doas(1) : utilitaire simple d’élévation de privilèges. Introduit dans OpenBSD 5.8
  • radiusd(8) : implémentation de serveur RADIUS. Ajoutée dans OpenBSD 5.8
  • eigrpd(8), eigrpctl(8) : prise en charge d’EIGRP (Enhanced Interior Gateway Routing Protocol). Incluse dans OpenBSD 5.9
  • vmm(4), vmd(8), vmctl(8) : système de gestion de machines virtuelles. Ajouté dans OpenBSD 5.9
  • acme-client(1) : client d’émission de certificats utilisant le protocole ACME. Introduit dans OpenBSD 6.1
  • syspatch(8) : outil de gestion des correctifs de sécurité. Ajouté dans OpenBSD 6.1
  • xenodm(1) : fork nettoyé de XDM. Inclus dans OpenBSD 6.1
  • unwind(8) : résolveur DNS local. Introduit dans OpenBSD 6.5
  • sysupgrade(8) : outil de mise à niveau automatique du système. Ajouté dans OpenBSD 6.6
  • rpki-client(8) : client RPKI (Route Origin Validation). Introduit dans OpenBSD 6.7
  • resolvd(8) : outil de gestion de la configuration DNS dans des environnements réseau dynamiques. Ajouté dans OpenBSD 6.9
  • dhcpleased(8) : client DHCP amélioré. Inclus dans OpenBSD 6.9

Projets maintenus par des développeurs OpenBSD en dehors d’OpenBSD

  • sudo : outil permettant à l’administrateur système d’accorder à certains utilisateurs le droit d’exécuter des commandes limitées. Inclus dans OpenBSD 2.7
  • femail : outil simple de transfert de courrier. Démarré en 2005, avec un port OpenBSD fourni le 22 septembre de la même année
  • midish : séquenceur et outil de traitement MIDI. Démarré en 2003, avec un port OpenBSD fourni le 4 novembre 2005
  • fdm : outil de filtrage et d’organisation du courrier. Démarré en 2006, avec un port OpenBSD fourni le 18 janvier 2007
  • toad : outil de déploiement logiciel automatisé pour OpenBSD. Démarré en 2013, avec un port OpenBSD fourni le 8 octobre de la même année
  • docbook2mdoc : outil convertissant des documents DocBook au format de page de manuel mdoc. Démarré en 2014, avec un port OpenBSD fourni le 3 avril de la même année
  • portroach : outil de suivi des mises à jour de ports, développé à partir d’un fork de portscout de FreeBSD. Démarré en 2014, avec un port OpenBSD fourni le 5 septembre de la même année
  • cvs2gitdump : outil de conversion de dépôts CVS vers Git. Démarré en 2012, avec un port OpenBSD fourni le 1er août 2016
  • Game of Trees : système de gestion de versions pouvant remplacer Git. Démarré en 2017, avec un port OpenBSD fourni le 9 août 2019

1 commentaires

 
GN⁺ 2025-02-23
Discussion sur Hacker News
  • La fondation OpenBSD a levé environ 380 000 dollars

    • Étant donné qu'elle a créé OpenSSH et que toutes les entreprises du Fortune 500 l'utilisent, elle devrait, à mon avis, lever 1 à 2 millions de dollars par an
    • Il est temps que ces entreprises contribuent désormais
    • Les fournisseurs de matériel devraient eux aussi publier leur code source, avec une mention directe de Nvidia
  • John Ioannidis est décédé il y a quelques semaines, et presque personne ne s'en est aperçu

    • Il est aussi connu comme l'un des créateurs des fondements de Mobile IP (qui a permis le fonctionnement d'IP sur les téléphones mobiles)
  • Au-delà de la conception privdrop/privsep d'OpenBSD et de l'adoption de pledge(2)/unveil(2), des travaux récents d'atténuation comme mimmutable passent inaperçus

    • Sur OpenBSD, l'espace d'adressage statique de la plupart des programmes est automatiquement devenu immuable
    • Sur les machines Intel/AMD et ARM modernes, la mémoire exécutable seule ainsi que BTI/IBT sont activés par défaut
    • Cela inclut aussi le travail de développement des ports pour préparer un écosystème logiciel plus large
  • La mémoire de données aléatoires a été implémentée dans OpenBSD 5.3 par Matthew Dempsky

    • RETGUARD fait partie des cas d'usage de cette fonctionnalité
    • RETGUARD remplace les stack protectors et vérifie de manière cohérente l'adresse de retour sur la pile à l'aide de cookies aléatoires par fonction
  • AmigaOS utilisait des exécutables indépendants de la position (PIE) et l'ASLR en 1985

    • L'Amiga n'avait pas de MMU et disposait de peu de mémoire, donc tout ce qui était chargé devait être placé dans la RAM disponible
    • Les sections individuelles pouvaient être placées à différents emplacements, et le compilateur en créait beaucoup à cette fin
  • Étonnement face au fait que pledge/unveil ne soient pas présentés de manière plus visible

  • Quelqu'un se demande si OpenBSD a implémenté ISO C11 _Thread_local

    • C'était le plus gros désagrément lors du portage de logiciels vers OpenBSD
    • OpenBSD était le seul grand OS à ne pas prendre en charge le stockage local de thread natif
  • Question sur la raison pour laquelle les pages OpenBSD n'utilisent que du HTML de base, sans style ni CSS

    • La typographie est importante pour la lisibilité, et il faudrait au minimum une hauteur de ligne correcte et limiter les lignes à environ 60 caractères
    • Il se demande si OpenBSD ne prend pas sérieusement en compte les utilisateurs potentiels
    • L'expérience utilisateur compte, et la lisibilité de la documentation fait aussi partie de l'UX
  • Une autre excellente ressource recommandée : <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a>;