Bonnes pratiques en matière de gestion des versions logicielles
Cinq recommandations à l'intention des éditeurs de logiciels concernant les noms de produits, les identifiants de version, les données relatives au cycle de vie et les avis de vulnérabilité
En brefRequest une démoCommencez un essai gratuitPourquoi les identifiants de version sont-ils importants ?
Petit test : dans quelle mesure votre produit est-il identifiable ?
- Clients et opérateurs - peuvent voir d'un seul coup d'œil si leur installation est à jour, si elle bénéficie toujours d'un support technique et si elle est concernée par une faille de sécurité.
- Scanners de vulnérabilités - permet d'associer avec précision les CVE aux versions installées, sans faux positifs ni faux négatifs.
- Suivi en end-of-life - peut signaler en temps utile la fin prochaine du support.
- CMDB et gestion des actifs - permet de consigner les versions de manière cohérente et conforme aux exigences d'audit.
- Les vendeurs eux-mêmes - réduire le nombre de demandes d'assistance et se conformer aux exigences réglementaires telles que celles de la loi sur la cyber-résilience (CRA), notamment en matière de SBOM, de durées de prise en charge et de gestion des vulnérabilités.
1. Définir des noms uniques pour les produits et les fournisseurs
- ✅ - Définissez un nom de produit Canonical et un nom de fournisseur Canonical, en tenant compte de l'orthographe, des espaces, des tirets et de la capitalisation.
- ✅ - N'utilisez des noms de produits différents que pour des produits qui sont réellement distincts, par exemple un serveur et son client.
- ✅ - Si un produit ou un fournisseur change de nom, consignez l'ancien nom et la date du changement dans l'historique des versions.
- ❌ - Variantes portant le même nom selon la plateforme, le programme d'installation ou la page de téléchargement.
2. Respecter les règles de gestion des versions sémantiques
- ✅ - Utilisez exactement un seul schéma de version technique par produit et consignez-le par écrit.
- ✅ - Utilisez toujours le même nombre de chiffres, par exemple 5.0.0, au lieu d'alterner entre 5, 5.0 et 5.0.0.
- ✅ - Attribuez à chaque version publiée exactement un numéro de version, et ne réutilisez jamais un numéro de version pour une autre version.
- ❌ - Noms marketing sans correspondance avec une version technique, par exemple « Spring Release » ou « 2026 R2 ». Si des noms marketing sont nécessaires, associez chacun d'entre eux sans ambiguïté à une version technique.
- ❌ - Les zéros non significatifs, les lettres indiquant le niveau de correctif (par exemple 3.1b) et les séparateurs variables (par exemple 3.1-2 et 3.1.2 pour la même version).
3. Publier l'historique des versions en ligne
- Exhaustivité - Répertoriez toutes les versions, y compris les versions correctives et les correctifs d'urgence. Ne supprimez pas les anciennes versions de la liste lorsqu'elles ne sont plus prises en charge.
- Dates sans ambiguïté - Utilisez le format de date ISO 8601 (AAAA-MM-JJ) pour éviter toute confusion entre le 03/04/2026 et le 04/03/2026.
- URL permanente - Veillez à ce que l'adresse de l'historique des versions reste inchangée afin qu'il puisse être consulté et suivi automatiquement.
- Format lisible par machine - Fournissez également l'historique des versions au format JSON ou XML, de préférence via une API ou un flux.
- Cartographie du CPE - Indiquez l'identifiant CPE (Common Platform Enumeration) du produit dans l'historique des versions lisible par machine, afin que les bases de données de vulnérabilités, telles que la National Vulnerability Database (NVD), puissent être mises en correspondance sans avoir à recourir à des suppositions.
{
"product": "Example Server",
"vendor": "Example Ltd",
"cpe": "cpe:2.3:a:example:example_server:*:*:*:*:*:*:*:*",
"versions": [
{
"version": "4.2.1",
"releaseDate": "2026-09-15",
"endOfMaintenance": "2027-09-30",
"endOfSupport": "2028-03-31",
"releaseNotes": "https://www.example.com/release-notes/4.2.1",
"fixedVulnerabilities": [ "CVE-2026-12345" ]
},
{
"version": "4.2.0",
"releaseDate": "2026-07-01",
"endOfMaintenance": "2027-09-30",
"endOfSupport": "2028-03-31",
"releaseNotes": "https://www.example.com/release-notes/4.2.0"
}
]
}4. Permettre la recherche du produit et de la version installés
- Linux - Enregistrez le nom exact du produit, le nom du fournisseur et la version dans les métadonnées du paquet, par exemple dans les champs « Name », « Vendor » et « Version » d'un paquet RPM, accessibles via la commande « rpm -q » ou « dpkg -s ».
- Windows - Saisissez le nom du produit publié dans le champ « DisplayName », le nom du fournisseur dans le champ « Publisher » et la version dans le champ « DisplayVersion » de la clé de registre de désinstallation et dans les informations de version du fichier, ou indiquez-les via Winget.
- macOS - Définissez les propriétés `CFBundleName` et `CFBundleShortVersionString` dans le fichier `Info.plist` en indiquant respectivement le nom et la version du produit publié ; veillez à ce que les paquets Homebrew portent les mêmes noms et la même version.
- Ligne de commande - Prendre en charge une option --version qui affiche la version exacte sous une forme analysable.
- Appareils, containers et services - Indiquez la version via un point de terminaison API, une valeur SNMP ou une étiquette d'image, par exemple org.opencontainers.image.version.
$ example-server --version
4.2.15. Indiquer les versions exactes dans les avis de vulnérabilité
- ❌ - « Toutes les versions antérieures à la dernière version », « version 3.x », « versions antérieures » ou « contactez le service d'assistance pour plus de détails ».
- ❌ - Les plages de versions telles que « 4.0.0 à 4.2.0 » ou « < 4.2.1 », qui nécessitent de connaître toutes les versions intermédiaires.
- ✅ - Énumérez explicitement toutes les versions concernées, par exemple : « versions concernées : 4.0.0, 4.0.1, 4.1.0, 4.1.1, 4.2.0 ; corrigé dans la version : 4.2.1 ».
- ✅ - Attribuez un numéro de version fixe à chaque branche de version prise en charge, par exemple 3.8.7 et 4.2.1.
- ✅ - Utilisez les mêmes identifiants de version que ceux figurant dans l'historique des versions et dans le produit installé.
- ✅ - Publiez les avis de sécurité sous un format lisible par machine, par exemple sous forme de documents CSAF comportant des identifiants CPE ou des identifiants d'URL de paquet (purl), et répertoriez individuellement les versions concernées dans la fiche CVE.
En savoir plus

Cycle de vie et vulnérabilité des produits
Évaluer chaque version matérielle et logicielle en service afin de déterminer son statut de mise en production, d’EoL et de prise en charge, ainsi que les vulnérabilités CVE connues, et formuler des recommandations de mise à jour.

Technologies d'entreprise prises en charge par Versio.io
Versio.io prend en charge divers matériels et logiciels, automatisant l'inventaire informatique, la création de rapports, la conformité et la gestion.

Référentiel de contenu - Vulnérabilités et expositions courantes
Base de données des vulnérabilités (CVE) mise à jour quotidiennement par le NVD, Red Hat, GitHub, Juniper et Palo Alto – elle sert de base à la détection automatisée des vulnérabilités dans Versio.io.
Talk to me
Pour plus d'informations