Ctrl+Alt+Prod : automatisation, infra et bonnes pratiques pour admins et devops

  • VMware HyperArmor : Broadcom blinde l’hyperviseur ESX contre le vol d’identifiants

    VMware HyperArmor : Broadcom blinde l’hyperviseur ESX contre le vol d’identifiants

    Le 13 octobre 2026, à VMware Explore Francfort, Broadcom a annoncé VMware HyperArmor, un logiciel qui vient se greffer directement sur la couche ESX pour fermer les deux portes d’entrée les plus utilisées sur une infra virtualisée : les identifiants root volés et les vulnérabilités non corrigées. Rien de révolutionnaire dans l’intention — mais la mise en œuvre, elle, change la donne pour qui gère des hôtes ESX en production.

    Le problème que HyperArmor cible

    Patcher un hyperviseur en prod, ce n’est jamais instantané. Entre la sortie d’un correctif VMware et son déploiement réel sur un cluster, il s’écoule souvent des semaines : fenêtre de maintenance à négocier, validation des applications dépendantes, parfois un redémarrage d’hôte à planifier avec le métier. Pendant ce délai, la vulnérabilité reste exploitable. C’est exactement cette fenêtre que HyperArmor cherche à réduire, sans pour autant remplacer le patch définitif.

    Trois mécanismes, pas un seul

    Virtual patching au niveau de l’hôte

    Le composant détecte et bloque les actions malveillantes connues sans toucher au code d’ESX lui-même. Pas de mise à niveau logicielle, pas de redémarrage de l’hôte : l’atténuation s’applique en continu, en tâche de fond.

    Allow-list des exécutables et des scripts

    HyperArmor inventorie au démarrage les scripts déjà présents sur l’hôte et les laisse s’exécuter normalement. Tout nouveau script ou exécutable doit ensuite être validé explicitement par un administrateur ; sans validation, il est bloqué par défaut. Concrètement, un attaquant qui met la main sur un identifiant SSH ne peut plus simplement déposer un script malveillant et le lancer.

    MFA sur ESX Secure Shell

    Après le mot de passe SSH classique, HyperArmor exige un code TOTP (mot de passe à usage unique basé sur le temps), rattaché à une identité distincte de celle utilisée pour l’authentification initiale. Un identifiant root volé seul ne suffit donc plus à ouvrir une session distante sur l’hôte.

    Eric Chien, distinguished engineer chez Broadcom, est clair sur le rôle de ces trois mécanismes : « We always still want you to patch; that is the right thing to do, but this basically buys you time. » HyperArmor n’est pas un substitut au patch management, c’est un sursis.

    Ce qui existe déjà, en attendant

    En attendant la disponibilité de HyperArmor — prévue pour le premier trimestre de l’exercice fiscal 2027 de Broadcom, qui démarre en novembre, sans date précise annoncée — rien n’empêche de durcir tes hôtes ESX dès maintenant avec ce qui existe déjà nativement. Le mode verrouillage (lockdown mode) limite par exemple les accès directs à l’hôte au seul vCenter :

    Get-VMHost | Get-View | Select Name, @{N="LockdownMode";E={$_.Config.LockdownMode}}

    Ce n’est pas équivalent à une allow-list dynamique de scripts, mais ça réduit déjà la surface d’attaque SSH que HyperArmor viendra renforcer plus tard.

    Où ça se place dans l’arsenal VMware

    HyperArmor ne remplace rien : il complète VMware vDefend (microsegmentation et inspection réseau) et VMware Avi Load Balancer (protection applicative et API), et vient s’ajouter à la gestion d’identités, au chiffrement et au live patching déjà inclus dans VMware Cloud Foundation. Chez Broadcom, Prashanth Shenoy résume le ciblage attendu : les environnements à charges de travail sensibles en ont besoin, les autres pourront s’en passer — « Not every environment needs that layer. »

    Le vrai sujet : le prix

    Ni le tarif ni le statut exact (GA ou preview) n’ont été communiqués au lancement, selon le communiqué officiel de Broadcom. Pour un client déjà sous VMware Cloud Foundation, l’ajout d’une couche payante de plus arrive après deux ans de hausses de licences post-Broadcom, un contexte sur lequel on revenait déjà en détail ici. Dans sa couverture de l’annonce, SiliconANGLE rapporte que l’analyste Stephanie Walter (HyperFrame Research) pose la question qui compte pour un budget IT : où s’arrête la sécurité de base et où commence la protection premium facturée en option ?

    Si tu es déjà engagé sur VCF et que tu gères des workloads exposés (DMZ, environnements réglementés), HyperArmor mérite d’être testé dès sa sortie. Si tu envisages plutôt une sortie de VMware, ce genre d’annonce ne fait que confirmer la direction prise par Broadcom — et notre guide de migration vers Proxmox VE reste d’actualité.

    FAQ

    HyperArmor remplace-t-il les correctifs de sécurité classiques ?

    Non. Broadcom le présente explicitement comme un sursis, pas un substitut : les correctifs définitifs restent nécessaires, HyperArmor réduit seulement la fenêtre d’exposition entre la sortie d’un patch et son déploiement.

    Faut-il installer un agent dans chaque VM ?

    Non, HyperArmor opère au niveau de l’hôte ESX, pas dans les machines virtuelles invitées : aucun agent supplémentaire à déployer dans les VMs.

    Quelles versions sont concernées ?

    ESX 8.x et versions ultérieures, dans le cadre de VMware Cloud Foundation.

    Quand sera-t-il disponible ?

    Broadcom vise le premier trimestre de son exercice fiscal 2027 (qui débute en novembre 2026), sans date précise ni confirmation du statut GA à ce stade.

    Si tu gères une infra VCF avec des workloads exposés, inscris HyperArmor dans ta veille sécurité pour le début 2027, et en attendant, vérifie que le lockdown mode et la rotation des identifiants root sont déjà en place sur tes hôtes ESX.

  • Prometheus LTS : pourquoi rester en 3.13 plutôt que migrer vers la 3.15

    Prometheus LTS : pourquoi rester en 3.13 plutôt que migrer vers la 3.15

    Prometheus sort une version mineure toutes les six semaines. Si tu suis ce rythme à la lettre sur ton cluster de prod, tu passes ton temps à mettre à jour un composant qui, en théorie, ne devrait pas te réveiller la nuit. La 3.14 est sortie le 17 août 2026 ; elle a cessé de recevoir des correctifs le 30 septembre, soit six semaines plus tard quasiment au jour près. La 3.15, sortie le 24 septembre, sera à son tour en fin de vie le 6 novembre. Pendant ce temps, la 3.13 — sortie le 1er juillet — reste supportée jusqu’au 31 juillet 2027. Ce n’est pas un hasard de calendrier : c’est le modèle LTS de Prometheus, et la plupart des équipes qui tournent en prod devraient s’en servir plutôt que de courir après la dernière mineure.

    Comment fonctionne le support LTS chez Prometheus

    Le projet documente son cycle de release sans ambiguïté : une mineure classique sort toutes les six semaines, et passé ce délai, elle ne reçoit en général plus aucun correctif. Si un bug te touche sur une version qui n’est plus maintenue, la seule réponse officielle est de migrer vers la dernière mineure — pas vers un patch rétroporté.

    Les versions LTS cassent cette règle pour une poignée de releases choisies : un an de support au lieu de six semaines. Mais ce support a un périmètre précis, pas un blanc-seing :

    • seules les failles de sécurité avec un score CVSS supérieur ou égal à 7.0 sont corrigées sur une LTS ;
    • d’autres correctifs de bugs ou de documentation peuvent s’ajouter, à la discrétion des mainteneurs ;
    • la chaîne de compilation est maintenue à jour sur toute la durée du support ;
    • deux LTS successives se chevauchent d’au moins un mois, pour laisser le temps de migrer sans courir.

    Et c’est un effort communautaire assumé comme tel : « best effort », sans garantie contractuelle, sans SLA. Les fonctionnalités expérimentales (tout ce qui vit derrière un feature flag) et le support OpenBSD sont explicitement exclus du périmètre LTS, quelle que soit la version.

    L’historique dit tout

    Cinq versions ont porté l’étiquette LTS depuis que le modèle existe :

    • 2.37 — sortie le 14/07/2022, fin de support le 31/07/2023
    • 2.45 — sortie le 23/06/2023, fin de support le 31/07/2024
    • 2.53 — sortie le 16/06/2024, fin de support le 31/07/2025
    • 3.5 — sortie le 14/07/2025, fin de support le 31/07/2026
    • 3.13 — sortie le 01/07/2026, fin de support le 31/07/2027 (en cours)

    Le rythme est régulier : une nouvelle LTS environ chaque année, avec le chevauchement d’un mois prévu par la doc. La prochaine est attendue autour de juin 2027, pour une fin de support en juillet 2028. Si ton infra tourne encore en 3.5 aujourd’hui, tu es dans la fenêtre de chevauchement — mais plus pour longtemps vu l’échéance du 31 juillet 2026, déjà passée au moment où tu lis cet article.

    Ce que tu rates en restant sur la 3.13 plutôt que la 3.15

    La 3.15.0, sortie le 24 septembre, apporte des choses utiles mais rarement critiques pour un cluster déjà stable : scraping via sockets Unix, implémentation du format OpenMetrics 2.0, compression zstd des réponses de scrape derrière le flag zstd-scrape, et un --auto-gomemlimit.refresh-interval qui redétecte à chaud la limite mémoire du conteneur. Côté dépréciation, --log.level cède la place à runtime.log_level, rechargeable sans redémarrer le process — pratique, mais pas une raison de migrer en urgence.

    Il y a aussi un paquet de corrections sur les histogrammes natifs (détection de reset manquée qui sous-estimait rate() et increase(), erreurs d’index dans Compact) et sur le mode Agent, où une écriture WAL échouée pouvait corrompre le fichier. Si tu exploites activement les histogrammes natifs ou le mode Agent, ces correctifs valent une mise à jour ciblée — même en dehors du calendrier LTS. Pour le reste, ça peut attendre la prochaine LTS.

    Notre avis : arrête de courir après chaque mineure

    Sauf si une fonctionnalité précise de la 3.14 ou de la 3.15 te manque vraiment, reste sur la 3.13 jusqu’à l’approche de juillet 2027. Tu gagnes un an de stabilité réelle, un correctif de sécurité garanti pour tout CVSS ≥ 7.0, et tu évites le cycle de mise à jour toutes les six semaines qui n’apporte, la plupart du temps, que du bruit opérationnel. À l’inverse, si tu es du genre à vouloir tester chaque nouveauté avant tout le monde — ou si tu fais tourner Prometheus sur un environnement de test plutôt qu’en prod critique — suivre les mineures reste parfaitement défendable. Ce n’est pas un mauvais choix dans l’absolu, juste un choix qui demande d’accepter le rythme qui va avec.

    FAQ

    Une faille CVSS 6.x découverte sur la 3.13 sera-t-elle corrigée ?
    Pas via le canal LTS officiel : seul un CVSS ≥ 7.0 déclenche un correctif de sécurité garanti sur une LTS. Une faille moins sévère peut être corrigée si un mainteneur s’en occupe bénévolement, mais sans aucune garantie.

    Peut-on sauter une LTS, par exemple passer directement de la 2.53 à la 3.13 ?
    Oui techniquement, mais vérifie les guides de migration de chaque version majeure traversée (le passage 2.x → 3.x a changé pas mal de comportements par défaut) avant de sauter plusieurs cycles d’un coup.

    Le mode Agent et les histogrammes natifs sont-ils couverts par le support LTS ?
    Oui s’ils sont considérés stables selon les garanties de l’API Prometheus ; les fonctionnalités encore derrière un feature flag restent explicitement exclues du périmètre LTS, même sur une version LTS.

    Ce qu’il faut retenir

    Le choix de version Prometheus n’a rien d’arbitraire : c’est une question de politique de support documentée, avec des dates précises et un périmètre de sécurité clair. Pour la très grande majorité des clusters en prod, la bonne réponse en octobre 2026 est 3.13, pas 3.15 — et ça restera vrai jusqu’à l’été 2027. On avait déjà couvert l’arrivée de Prometheus 3 face à Grafana 13 et OpenTelemetry, et plus récemment les Saved Queries de Grafana 13.2 — la question de la version Prometheus sous-jacente, elle, se pose indépendamment de ce qui tourne par-dessus.

  • Veeam KB4902 : cinq failles corrigées dans Backup & Replication, mots de passe en clair compris

    Veeam KB4902 : cinq failles corrigées dans Backup & Replication, mots de passe en clair compris

    Le 25 août 2026, Veeam a publié deux avis de sécurité le même jour : KB4902 pour Backup & Replication, KB4905 pour Veeam ONE. Cinq CVE au total. Rien d’exceptionnel en apparence pour un éditeur qui patche plusieurs fois par an — sauf que l’une de ces failles touche un composant que tu utilises probablement tous les jours sans y penser, et qu’une autre se corrige sans interaction utilisateur depuis le réseau. Si tu gères des sauvegardes Veeam, voici ce qui mérite vraiment ton attention, dans l’ordre.

    Ce que corrige KB4902

    L’avis KB4902 couvre quatre vulnérabilités dans Backup & Replication, toutes signalées via le programme HackerOne de Veeam. Les correctifs arrivent avec la 13.1 (build 13.1.0.411), la 13.0.3 (13.0.3.63), et pour une des failles, la 12.3.2 Patch 4 (12.3.2.4934).

    • CVE-2026-58070 (CVSS v4.0 6.8, moyenne) — les identifiants du compte invité utilisés pour le traitement Application-Aware se retrouvaient enregistrés en clair dans les journaux de la machine invitée. Concerne les versions Windows et l’appliance logicielle, de la 13.0.2.29 et antérieures ; la branche 12.x n’est pas touchée.
    • CVE-2026-58069 (CVSS v4.0 8.3, élevée) — lecture arbitraire de fichiers sur l’hôte du fournisseur de services, exploitable par un locataire Cloud Connect authentifié. C’est celle qui doit inquiéter les MSP : un seul client malveillant ou compromis peut lire des fichiers côté hébergeur. Touche à la fois la 13.0.2.29- et la 12.3.2.4854-.
    • CVE-2026-58068 (CVSS v4.0 6.8, moyenne) — déni de service sur des processus système via Veeam Agent for Microsoft Windows. Le champ de versions affectées remonte jusqu’à la branche 6, ce qui en dit long sur l’ancienneté de certains agents encore déployés en prod.
    • CVE-2025-64391 (CVSS v4.0 4.1, moyenne) — un utilisateur local peut écrire un fichier arbitraire en tant que SYSTEM en manipulant des points de montage et des liens symboliques pendant l’installation de l’agent.

    Le détail qui compte vraiment, c’est la mitigation donnée pour la 58070 : le patch empêche l’écriture de nouveaux mots de passe en clair dans les journaux, mais il ne nettoie pas ceux déjà présents. Si tu utilises le traitement Application-Aware sur des VM sensibles, change les identifiants concernés — patcher ne suffit pas à effacer ce qui est déjà loggé sur le disque.

    Veeam ONE : la vraie urgence, CVSS 9.3

    KB4905 publié le même jour est plus simple à résumer, et plus inquiétant. CVE-2026-65641 permet à un attaquant réseau non authentifié de forcer une authentification SMB depuis le compte de service de Veeam ONE — sans qu’aucun utilisateur n’ait à cliquer sur quoi que ce soit. Score CVSS v4.0 de 9,3, classé critique. Ça touche Veeam ONE 13.1.0.7034 et les builds 13 antérieures (la branche 12.x est épargnée), corrigé en 13.1 Patch 0 (build 13.1.0.7233) et 13.0.2 Patch 1 (13.0.2.7159).

    Un attaquant qui obtient un hash NTLM via coercition SMB peut ensuite tenter un relais vers un autre service, ou simplement craquer le hash hors ligne. Sur un compte de service qui tourne souvent avec des droits étendus sur Active Directory, c’est exactement le genre de faille qu’on ne laisse pas traîner un trimestre avant de patcher.

    Si tu es encore sur la branche 12, ce n’est pas la première fois cette année

    Remonte un peu dans le calendrier 2026 et le tableau devient moins confortable. En mars, CVE-2026-21708 (injection SQL dans le Backup Viewer, CVSS 9.9) permettait une exécution de code sous l’utilisateur postgres — et touchait à la fois la 12.x et les premières builds 13.x. En juin, CVE-2026-44963 (CVSS 9.4) ouvrait une RCE sur le serveur de sauvegarde pour n’importe quel utilisateur de domaine authentifié, mais cette fois seulement sur la branche 12 : les changements d’architecture de la 13.x l’ont rendue immune de fait, sans correctif dédié nécessaire côté 13. Trois vagues de failles critiques en six mois sur la même branche, ça commence à ressembler moins à de la malchance qu’à une dette technique qu’il devient urgent de solder.

    On a déjà détaillé les nouveautés fonctionnelles de la 13.1 — restauration de forêt AD, chiffrement post-quantique, support hyperviseurs élargi : la bascule depuis la 12.x n’est plus seulement un confort pour ces fonctionnalités, c’est une réduction mesurable de la surface d’attaque exposée à ton infra de sauvegarde.

    Dans quel ordre patcher

    Si tu dois prioriser avec un temps de maintenance limité : Veeam ONE d’abord (CVSS 9.3, zéro interaction requise), puis Backup & Replication sur les locataires Cloud Connect exposés (CVE-2026-58069), puis le reste. Et si ton infra tourne encore en 12.x, traite la migration vers la 13.x comme un chantier de sécurité, pas comme une simple montée de version fonctionnelle — ça rejoint directement la logique de la règle 3-2-1-1-0 : une sauvegarde immuable mais gérée par un serveur vulnérable n’est qu’une protection partielle.

    FAQ

    Le patch KB4902 suffit-il pour la fuite de mots de passe (CVE-2026-58070) ?
    Non. Il empêche de nouvelles écritures en clair dans les journaux, mais ne purge pas les logs existants. Change les identifiants du compte invité utilisé pour le traitement Application-Aware après avoir patché.

    Je suis encore en Backup & Replication 12.x, dois-je m’inquiéter de CVE-2026-65641 ?
    Non, cette faille concerne uniquement Veeam ONE 13.x. En revanche, la 12.x reste concernée par CVE-2026-58069 (lecture de fichiers, Cloud Connect) et par les deux CVE critiques de mars et juin 2026.

    Faut-il redémarrer les services après l’application des patchs ?
    Les avis Veeam ne le précisent pas explicitement pour chaque CVE ; suis la procédure de mise à jour standard de Backup & Replication (arrêt des jobs en cours, mise à jour via le Patch Manager ou l’ISO, puis redémarrage des services Veeam) et vérifie la version effective après coup.

    Ce qu’il faut retenir

    Cinq failles corrigées en un seul patch Tuesday, deux critiques, une exploitable sans authentification. Si tu n’as qu’une chose à faire cette semaine : vérifie la version de ton Veeam ONE et patche-la en priorité, puis planifie la montée vers Backup & Replication 13.1 si tu es encore en 12.x. Les correctifs sont disponibles depuis fin août — le risque, à ce stade, c’est surtout le temps qu’il te reste avant qu’un scan automatisé repère l’instance non patchée.

  • Automatic zone balance : Azure rééquilibre tes VMSS tout seul

    Automatic zone balance : Azure rééquilibre tes VMSS tout seul

    Tu as configuré ton scale set sur trois zones de disponibilité, tu as vérifié la répartition le jour du déploiement, et tout allait bien : cinq VMs par zone. Six mois de scale-in et scale-out plus tard, sans que personne ne s’en aperçoive, la répartition réelle est devenue 2 / 4 / 7. Une panne sur la zone qui en concentre sept, et c’est près de la moitié de ta capacité qui disparaît d’un coup — alors que le scale set avait été pensé, à l’origine, pour tenir une perte de zone sans broncher.

    C’est exactement le problème que la fonctionnalité Automatic zone balance pour les Virtual Machine Scale Sets vient corriger, passée en disponibilité générale le 15 octobre 2026. Elle ne remplace pas une stratégie de reprise après sinistre, mais elle règle un angle mort que beaucoup d’équipes découvrent seulement au pire moment.

    Le déséquilibre de zone : un problème qui ne se voit pas

    Quand tu déploies un scale set sur plusieurs zones de disponibilité, Azure tente de répartir les VMs aussi uniformément que possible à la création. Mais les contraintes de capacité et les opérations de scaling qui s’enchaînent ensuite peuvent faire dériver cette répartition dans le temps, sans qu’aucune alerte ne se déclenche — rien ne casse, rien ne tombe en erreur. Microsoft définit un scale set comme « équilibré » si chaque zone compte le même nombre de VMs à plus ou moins une instance près. En dessous de ce seuil, il est considéré en déséquilibre.

    Prends un scale set avec 1 VM en zone 1, 3 en zone 2 et 3 en zone 3 : la zone 1 est sous-provisionnée, les zones 2 et 3 sont sur-provisionnées. Le risque, concrètement, c’est qu’une panne sur une seule zone sur-provisionnée affecte une part disproportionnée de ton application — l’inverse exact de ce que la répartition multi-zone est censée t’apporter.

    Comment fonctionne le rééquilibrage

    Le mécanisme repose sur une approche « create-before-delete » : Azure crée une nouvelle VM dans la zone sous-provisionnée, attend qu’elle devienne saine, puis supprime une VM de la zone sur-provisionnée. Une seule VM est déplacée à la fois, et les nouvelles instances utilisent toujours le SKU le plus récent défini dans le modèle du scale set.

    Le délai d’attente de santé est fixé à 90 minutes. Si la nouvelle VM devient saine dans ce délai, l’ancienne VM de la zone sur-provisionnée est supprimée. Si elle ne le devient pas mais que la VM source, elle, reste saine, c’est la nouvelle VM qui est supprimée — le rééquilibrage échoue proprement plutôt que de dégrader ton application. Si la VM source devient elle-même défaillante pendant l’attente, elle est supprimée et la nouvelle VM est conservée.

    Les garde-fous avant qu’un rééquilibrage ne démarre

    • Le scale set ne doit pas être marqué pour suppression.
    • Aucune opération PUT, PATCH ou POST en cours ou terminée depuis moins de 60 minutes (ajout de VM, suppression, mise à niveau en cours).
    • Les VMs sous instance protection policy ne sont jamais déplacées, ni celles déjà désallouées ou en attente de suppression.
    • Un scale-in déclenché par l’autoscale pendant un rééquilibrage est différé jusqu’à la fin de l’opération ; un scale-out ou un changement de capacité manuel, lui, annule le rééquilibrage en cours et applique directement la nouvelle capacité.

    Détail qui compte en exploitation : le comptage des VMs pour détecter un déséquilibre inclut les instances actives, désallouées et éteintes. Mais le rééquilibrage ne se déclenche que si déplacer une VM active améliore réellement la répartition des VMs actives — une zone qui a le plus de VMs au total mais le moins de VMs actives n’est pas considérée comme sur-provisionnée pour autant.

    Ce qu’il faut préparer avant d’activer la fonctionnalité

    Trois prérequis, non négociables :

    • Le monitoring de santé applicative doit être actif, via l’Application Health Extension ou les health probes du Load Balancer (les deux sont mutuellement exclusifs — un seul des deux mécanismes à la fois).
    • Le scale set doit s’étendre sur au moins deux zones de disponibilité, avec toutes les VMs assignées à une zone — les scale sets avec des VMs régionales (non zonales) ne sont pas éligibles.
    • Utiliser la version d’API Compute 2024-07-01 ou ultérieure.

    Pense aussi à la marge de capacité : le rééquilibrage augmente temporairement ta capacité d’une VM pendant l’opération. Si tu utilises l’autoscale, vérifie que ton instance count maximum et tes règles de scale-in laissent cette marge, et que ton abonnement dispose du quota nécessaire — sans ça, le rééquilibrage ne démarre simplement pas.

    Activer automatic zone balance

    Dans le portail, c’est une case à cocher dans l’onglet Santé, sous la section Résilience, une fois le monitoring de santé configuré. En API REST ou via Azure CLI/PowerShell, ça passe par la propriété resiliencyPolicy du modèle du scale set :

    PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2024-07-01
    
    {
      "properties": {
        "resiliencyPolicy": {
          "AutomaticZoneRebalancingPolicy": {
            "Enabled": true,
            "RebalanceStrategy": "Recreate",
            "RebalanceBehavior": "CreateBeforeDelete"
          }
        }
      }
    }

    Activer automatic zone balance active aussi, par défaut, les automatic instance repairs — les deux mécanismes se complètent (l’un répare les VMs individuellement défaillantes, l’autre rééquilibre la répartition entre zones). Si tu as une raison précise de vouloir l’un sans l’autre, un paramètre automaticRepairsPolicy.enabled: false séparé permet de désactiver les instance repairs tout en gardant le rééquilibrage de zone actif.

    Pour vérifier qu’un rééquilibrage a bien eu lieu, filtre les Activity Logs du scale set sur l’opération BalanceVMsAcrossZones, ou interroge l’Instance View API : le tableau orchestrationServices de la réponse contient l’état du service AutomaticZoneRebalancing et l’horodatage de son dernier changement de statut.

    Les limites à connaître avant de l’activer partout

    Le point le plus important : automatic zone balance détruit et recrée des VMs. Les ID d’instance, la configuration réseau spécifique à l’instance et les disques ne sont pas préservés dans cette opération. C’est pensé pour des charges stateless — un tiers web ou API derrière un load balancer, typiquement — pas pour des VMs avec un état local qui compte.

    Ajoute à ça que le rééquilibrage reste une opération « best-effort » : s’il n’y a pas de capacité disponible dans la zone sous-provisionnée, l’opération est simplement retardée, sans garantie de délai. Et si une VM utilise un SKU différent du modèle actuel du scale set, elle perd ce SKU particulier une fois déplacée, puisque les nouvelles instances créées reprennent toujours le SKU le plus récent défini dans le modèle.

    Faut-il l’activer par défaut ?

    Pour un tier stateless derrière un Load Balancer ou une Application Gateway, oui, sans hésiter — c’est exactement le type de résilience passive qu’on voudrait avoir sans y penser, dans la même logique que le passage de Trusted Launch en option par défaut sur les VMs Gen2 : une protection qui ne coûte rien à l’usage et qu’on n’a plus besoin de se souvenir d’activer. Pour des scale sets avec des VMs qui portent un état local — cache applicatif réchauffé, disques de données attachés avec des données spécifiques à l’instance, configuration post-démarrage coûteuse à refaire — c’est une autre histoire : active plutôt une instance protection policy sur les instances concernées avant d’allumer le rééquilibrage automatique, pour éviter qu’Azure ne les recycle au mauvais moment. Et si tu veux un contrôle plus strict qu’un simple best-effort, la fonctionnalité complémentaire de placement de zone automatique (encore en préversion) permet d’imposer un équilibrage strict via zoneBalance et maxZoneCount — au prix d’un taux d’allocation potentiellement plus faible en cas de contrainte de capacité.

    FAQ

    Automatic zone balance protège-t-il contre une panne de zone en cours ?

    Non. La documentation Microsoft est explicite sur ce point : la fonctionnalité ne surveille pas la santé des VMs en cas de panne de zone et ne doit pas être utilisée comme mécanisme de reprise après panne de zone. Elle corrige un déséquilibre de répartition en amont, pas une panne en cours.

    Est-ce compatible avec des VMs de SKU différents dans le même scale set ?

    Partiellement. Le rééquilibrage fonctionne, mais toute VM déplacée perd son SKU d’origine au profit du SKU le plus récent défini dans le modèle du scale set — à anticiper si tu fais cohabiter plusieurs générations de VMs intentionnellement.

    Ça marche aussi sur les scale sets en mode Flexible orchestration ?

    La documentation Microsoft présente la fonctionnalité pour les scale sets zone-spanning en général ; le suivi de l’état du service d’orchestration via l’Instance View API est en revanche spécifiquement documenté pour le mode Uniform. Vérifie le comportement exact sur le mode Flexible avant de t’appuyer dessus en production.

    En pratique

    Si tu as des scale sets zone-spanning qui tournent depuis plusieurs mois sans qu’on ait jamais revérifié leur répartition, c’est probablement le bon moment de regarder l’Activity Log ou l’onglet Résilience du portail. La dérive ne fait pas de bruit — jusqu’au jour où une zone tombe et où tu découvres, dans le mauvais ordre, à quel point la répartition s’était faite inégale. Ça rejoint une logique déjà vue avec le passage en GA d’Ephemeral OS Disk avec Full Caching : Azure muscle petit à petit la résilience par défaut de ses VMs, sans attendre que tu ailles la chercher toi-même.

  • Certighost (CVE-2026-54121) : quand AD CS fait confiance à un faux contrôleur de domaine

    Certighost (CVE-2026-54121) : quand AD CS fait confiance à un faux contrôleur de domaine

    Un compte utilisateur standard, sans le moindre droit d’administration, qui finit par récupérer le hash krbtgt de ton domaine Active Directory. Pas de phishing, pas d’exploit mémoire exotique : juste une requête de certificat mal validée. C’est ce que permet Certighost (CVE-2026-54121), une faille dans Active Directory Certificate Services corrigée par Microsoft en juillet 2026, mais qui reste exploitable sur tous les parcs qui n’ont pas encore appliqué ce correctif précis.

    Le détail qui fait mal : le CVSS est de 8,8, pas 9,8 ou 10 comme les failles qui font les gros titres. Mais l’impact, lui, est maximal — une compromission complète du domaine depuis un compte de domaine ordinaire, sans interaction utilisateur. Si tu gères une infrastructure AD CS, cet article t’explique exactement comment ça marche, qui est concerné, et ce que tu dois vérifier dès aujourd’hui.

    Le mécanisme de repli qui ne vérifie rien

    AD CS prévoit un cas de figure particulier : quand l’autorité de certification (CA) ne parvient pas à récupérer les informations d’identité d’un demandeur auprès du contrôleur de domaine par défaut, elle peut suivre un mécanisme de repli, appelé « chase », vers un autre hôte désigné par la requête elle-même via l’attribut cdc (Client DC). Jusqu’en juillet 2026, la CA contactait cet hôte en SMB (port 445) et LDAP (port 389) sans jamais vérifier qu’il s’agissait réellement d’un contrôleur de domaine du domaine. Elle faisait simplement confiance à ce que le demandeur affirmait.

    Concrètement, l’attaque se déroule en six étapes :

    • L’attaquant crée un compte machine, en s’appuyant sur le quota par défaut ms-DS-MachineAccountQuota fixé à 10 — accessible à n’importe quel utilisateur de domaine standard — ou réutilise un compte qu’il contrôle déjà.
    • Il monte une infrastructure LSA et LDAP falsifiée sur sa propre machine, en écoute sur les ports 445 et 389.
    • Il envoie une demande de certificat sur le modèle Machine par défaut, avec l’attribut cdc pointant vers sa propre machine plutôt que vers un vrai contrôleur de domaine.
    • La CA suit cet hôte sans vérification et relaie la demande d’authentification via Netlogon vers le véritable contrôleur de domaine, récupérant au passage son objectSid et son dNSHostName.
    • Le compte machine contrôlé par l’attaquant fournit alors l’identité valide nécessaire, et la CA émet un certificat qui porte l’identité du contrôleur de domaine ciblé — mais utilisable par le compte de l’attaquant.
    • Avec ce certificat, l’attaquant s’authentifie via PKINIT en se faisant passer pour un contrôleur de domaine, puis lance un DCSync pour extraire les secrets du domaine, krbtgt en tête.

    Aucune élévation de privilèges locale, aucun malware, aucun clic de l’utilisateur. Juste une CA qui fait confiance à la mauvaise source.

    Qui est concerné

    Selon la fiche NVD de la CVE, les versions affectées couvrent Windows Server 2012 jusqu’à Windows Server 2025, éditions Server Core incluses, ainsi que Windows 10 version 1607 et 1809. Les chercheurs qui ont publié l’analyse technique (dont Aniq Fakhrul) ont validé leurs tests sur une forêt Windows Server 2016 ou plus récente, avec une CA d’entreprise intégrée à Active Directory en configuration par défaut — exactement la configuration qu’on retrouve dans la majorité des environnements d’entreprise.

    La faille a été signalée à Microsoft le 14 mai 2026, confirmée le 22 mai, corrigée le 14 juillet (Patch Tuesday du mois) et divulguée publiquement le 24 juillet. Du code de preuve de concept circule librement sur GitHub depuis cette date. À ce jour, elle ne figure pas dans le catalogue KEV de la CISA et aucune exploitation active confirmée n’a été rapportée publiquement — mais l’historique des failles AD CS (ESC1 à ESC15) montre que ce genre de scénario finit presque toujours par être industrialisé dans des frameworks d’attaque une fois le mécanisme bien documenté, comme ça a été le cas pour BadSuccessor quelques mois plus tôt.

    Le correctif de Microsoft, et sa nuance importante

    Le patch de juillet ajoute une validation stricte de la cible du mécanisme de repli avant que la CA ne la contacte : rejet des adresses IP brutes, rejet des noms trop longs, filtrage de certains caractères LDAP, et surtout exigence d’un objet ordinateur unique dont l’attribut userAccountControl inclut bien le flag SERVER_TRUST_ACCOUNT (valeur 8192). Une comparaison de SID en sortie bloque ensuite toute substitution d’objet au dernier moment.

    Il y a cependant un détail technique à connaître : cette protection passe par un interrupteur de fonctionnalité interne (identifié par les chercheurs comme Feature_3185813818). Si ce flag se retrouve désactivé — configuration héritée, stratégie de groupe particulière, ou simple erreur — le comportement vulnérable d’origine peut potentiellement réapparaître même avec le correctif installé. Ne te contente donc pas de vérifier la présence de la mise à jour de juillet 2026 : vérifie aussi, si tu as un outil de gestion de configuration en place, que ce comportement de validation est bien actif sur tes serveurs AD CS.

    Si tu ne peux pas patcher immédiatement

    Pour les serveurs où le correctif ne peut pas être déployé tout de suite — fenêtre de maintenance à planifier, validation de changement en cours — il existe un contournement temporaire : désactiver le drapeau EditFlags qui active le chase côté CA.

    certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC
    Restart-Service CertSvc -Force

    Attention : ce contournement n’a été validé qu’en laboratoire par les chercheurs à l’origine de la découverte, pas par Microsoft lui-même. Il peut casser des flux d’inscription de certificats légitimes qui dépendent justement de ce mécanisme de repli, notamment dans les environnements multi-forêts ou multi-sites avec de la latence réseau entre contrôleurs de domaine. Teste-le d’abord en pré-production, sur un CA de test, avant d’y toucher en production.

    Pour les systèmes qui ne reçoivent plus de mises à jour officielles (Windows Server 2008 R2, 2012 et 2012 R2 en fin de support), 0patch a publié des micropatches logiquement identiques au correctif Microsoft, appliqués sans redémarrage sur les machines qui disposent de l’agent.

    Détecter une tentative d’exploitation

    Microsoft Defender signale les requêtes malveillantes sous deux alertes dédiées : « Potential Certighost (CVE-2026-54121) AD CS abuse » et « Active Directory Certificate Services attack tool activity ». Si tu n’as pas Defender for Identity déployé sur tes serveurs AD CS, trois réflexes à adopter dès cette semaine :

    • Active l’audit des services de certificats (succès et échecs) sur la CA, et configure le filtre d’audit pour couvrir les événements de cycle de vie des certificats.
    • Surveille les événements de sécurité 4886 et 4887 (demande de certificat et émission) à la recherche de volumes ou de patterns inhabituels, en particulier des émissions issues du modèle Machine qui portent des données d’identité de contrôleur de domaine inattendues.
    • Audite la valeur de ms-DS-MachineAccountQuota sur ton domaine — la valeur par défaut de 10 autorise n’importe quel utilisateur standard à créer jusqu’à dix comptes machine, ce qui est la première brique de cette attaque (et de pas mal d’autres). La ramener à 0 pour les utilisateurs non-admin, avec des exceptions ciblées via délégation, ferme cette porte sans casser les joiners légitimes gérés par un compte de service dédié.

    Pour un audit plus poussé de ta hiérarchie PKI, l’outil open source PSPKIAudit (cité par plusieurs analyses de la faille) permet de repérer les templates de certificats mal configurés et les CA exposées à ce type de scénario de relais, dans la même veine que les vulnérabilités ESC1 à ESC15 déjà documentées.

    Pourquoi un 8.8 mérite autant d’attention qu’un 9.8

    On a tendance à classer les priorités de patch par score CVSS brut, et à reléguer un 8.8 derrière les zero-days à 9.8 ou 10 qui font la une des bulletins mensuels. C’est une erreur dans ce cas précis. Un 9.8 typique touche souvent un service exposé qu’on peut isoler ou filtrer en attendant le correctif. Certighost, lui, touche le cœur de confiance de ton infrastructure d’identité, depuis un compte de domaine banal, sans qu’aucune segmentation réseau classique ne t’en protège — si l’utilisateur a accès au réseau du contrôleur de domaine et de la CA, l’attaque est jouable. Le score reflète la complexité d’exploitation (il faut une CA d’entreprise, un modèle Machine accessible, et une connectivité SMB/LDAP spécifique), pas la gravité du résultat une fois l’attaque réussie.

    FAQ

    Faut-il désactiver AD CS en attendant de tout vérifier ?

    Non, ce serait disproportionné pour la quasi-totalité des environnements. Priorise la vérification du patch de juillet 2026 sur tes serveurs AD CS, et si ce n’est pas possible immédiatement, applique le contournement EditFlags après test en pré-production.

    Un pare-feu entre les sites suffit-il à me protéger ?

    Seulement si l’attaquant n’a pas accès réseau à la fois à la CA et au vrai contrôleur de domaine. Dans la plupart des topologies d’entreprise avec des contrôleurs de domaine accessibles depuis le réseau utilisateur, ce n’est pas une protection suffisante — le patch ou le contournement reste nécessaire.

    Le correctif de juillet 2026 est-il inclus dans les mises à jour cumulatives suivantes ?

    Oui, comme tout correctif de sécurité Windows, il est intégré aux cumulative updates ultérieures. Si tu es à jour sur ton Patch Tuesday depuis juillet 2026, tu l’as déjà. L’enjeu réel pour la plupart des équipes est de vérifier les serveurs AD CS isolés ou en retard de patch, pas les postes clients.

    Comment savoir si le flag Feature_3185813818 est actif chez moi ?

    Microsoft n’a pas publié de commande officielle pour l’interroger directement à ce jour. Le plus fiable reste un test fonctionnel en environnement de pré-production : tenter de reproduire le scénario d’attaque documenté par les chercheurs et vérifier que la demande de certificat est bien rejetée après le patch de juillet.

    En pratique, cette semaine

    Vérifie que tes serveurs AD CS ont bien reçu la mise à jour de juillet 2026, audite ta valeur de ms-DS-MachineAccountQuota, et active l’audit des événements 4886/4887 si ce n’est pas déjà fait. Trois actions concrètes, aucune ne demande de fenêtre de maintenance longue, et elles réduisent une surface d’attaque qui touche directement krbtgt — le cœur de la confiance Kerberos de ton domaine, le même mécanisme qui a justifié la bascule forcée de RC4 vers AES quelques semaines plus tôt.

  • PowerShell 7.7 Preview 5 : pensé pour les agents IA

    PowerShell 7.7 Preview 5 : pensé pour les agents IA

    PowerShell 7.7.0-preview.5 est sorti le 23 septembre 2026, cinquième preview depuis l’ouverture de la branche 7.7 le 28 avril. Pas de date de GA annoncée pour l’instant côté Microsoft. Deux changements de cette preview méritent qu’on s’y arrête, parce qu’ils répondent à des frictions bien réelles plutôt qu’à des ajouts cosmétiques : un réglage pensé pour les agents IA qui pilotent ta session, et un correctif de démarrage qui va soulager pas mal d’admins sous OneDrive.

    $PSStyle.AutoSizeDefaultFormatting : quand ce n’est plus toi qui lis la sortie

    La preview 5 ajoute une propriété $PSStyle.AutoSizeDefaultFormatting, qui force un formatage compact et auto-dimensionné pour les vues table et wide — par défaut, sans avoir à ajouter | Format-Table -AutoSize à chaque commande. L’intérêt saute aux yeux dès que ta session tourne dans un terminal étroit, mais la vraie motivation derrière ce changement est ailleurs : de plus en plus de sessions PowerShell sont désormais pilotées par un agent IA plutôt que lues directement par un humain, et une sortie tronquée ou mal alignée peut faire dérailler un parsing automatisé qui s’attendait à des colonnes propres.

    C’est une propriété $PSStyle, pas une nouvelle cmdlet ni un flag de ligne de commande — tu la positionnes une fois dans ton profil si tu veux ce comportement par défaut sur toutes tes sessions, scriptées ou interactives.

    Le fail-open qui va sauver des démarrages cassés

    Le second changement est plus discret mais plus impactant au quotidien : le fichier powershell.config.json au niveau utilisateur échoue désormais en mode ouvert (fail open) plutôt qu’en faisant planter PowerShell au démarrage. Le ticket (PR #27373) cible précisément le cas d’un fichier de config corrompu ou verrouillé par une synchronisation OneDrive active sur le dossier de profil — un scénario qu’on croise régulièrement en support, où l’utilisateur ne comprend pas pourquoi pwsh refuse de démarrer après un simple déplacement de dossier.

    Attention à la nuance : seul le fichier de config par utilisateur bascule en fail-open. Le fichier de config système continue de faire planter le démarrage s’il ne peut pas être chargé — logique, puisqu’une config système cassée doit rester visible immédiatement plutôt que de s’exécuter silencieusement avec des réglages par défaut potentiellement non voulus.

    Un breaking change qui mérite un test avant upgrade : New-Guid passe en UUID v7

    Dans la liste des breaking changes officielle de la 7.7 (PR #27033), New-Guid génère désormais par défaut des UUID version 7 (triables temporellement) au lieu de la version 4 (aléatoire pure). Le format de sortie ne change pas — ça reste un GUID .NET classique — mais la structure interne, elle, change : un v7 encode un horodatage dans ses premiers octets, ce qu’un v4 ne fait jamais.

    Si un de tes scripts dépend d’une distribution vraiment aléatoire (génération de tokens, tests de charge avec clés dispersées pour éviter les hotspots d’index, etc.), ce changement par défaut peut introduire un biais silencieux. La parade reste simple : appeler directement [guid]::NewGuid() plutôt que la cmdlet si tu as besoin de garantir du v4.

    Le reste de la preview 5, en bref

    • Nouvelle cmdlet New-TemporaryDirectory (PR #27549), contribution externe de @KirtiRamchandani — l’équivalent répertoire de l’historique New-TemporaryFile.
    • Durcissement WLDP : nouveau réglage EnableFileOnlyEntry (PR #26752) côté Windows Lockdown Policy — une brique de plus pour les environnements contraints par Device Guard.
    • Modules mis à jour : Microsoft.PowerShell.PSResourceGet passe en v1.3.0-preview2 (on avait couvert la bascule de ce module vers Microsoft Artifact Registry) et PSReadLine en v2.4.5.
    • Runtime : PowerShell 7.7.0-preview.5 est désormais buildé sur .NET 11.0.0-rc.1 — à ne pas confondre avec les branches LTS 7.6/7.5/7.4, qui restent respectivement sur .NET 10, 9 et 8.

    Rien de tout ça n’est un virage de direction : c’est la continuité directe de la feuille de route 2026 qu’on avait détaillée dans notre article sur PowerShell 7.7, OpenSSH et DSC v3, et ça complète ce qu’apporte déjà DSC v3.3 côté gestion de configuration.

    FAQ

    PowerShell 7.7 est-il prêt pour la production ?

    Non, pas encore — c’est une branche preview, pas de date de GA communiquée à ce stade. Pour la production, reste sur une branche LTS (7.6, 7.5 ou 7.4 selon ta politique de support) et teste les previews à part, sur des machines dédiées.

    Le fail-open du config utilisateur introduit-il un risque de sécurité ?

    Le fail-open ne s’applique qu’au fichier de config par utilisateur, pas au fichier système — celui qui porte les réglages à portée de sécurité reste en fail-closed. L’objectif ici est la résilience du démarrage côté utilisateur, pas un assouplissement des contrôles.

    Dois-je changer mes scripts à cause du passage de New-Guid en UUID v7 ?

    Seulement si tu as une dépendance explicite à une distribution purement aléatoire. Pour la plupart des usages (identifiants d’objets, clés de dictionnaire, etc.), le changement est transparent.

    Pour aller plus loin

    Si tu fais tourner des agents ou des pipelines d’automatisation qui parsent la sortie de PowerShell, teste $PSStyle.AutoSizeDefaultFormatting dès maintenant sur un environnement de preview — c’est le genre de réglage qui t’évite une mauvaise surprise le jour où un agent IA interprète une colonne tronquée comme une valeur vide. Et si OneDrive synchronise ton dossier de profil, note que cette classe de panne au démarrage va bientôt disparaître — sans action de ta part une fois la 7.7 stabilisée.

  • Lockfiles GitHub Actions : verrouille enfin tes dépendances

    Lockfiles GitHub Actions : verrouille enfin tes dépendances

    Le 14 octobre 2026, GitHub a publié en preview publique un mécanisme qui manquait cruellement à Actions depuis ses débuts : un vrai lockfile. Jusqu’ici, épingler une action sur un SHA de commit restait une discipline manuelle, facile à oublier sur une dépendance transitive planquée dans une action composite. Les actions.lock changent la donne : ils figent tout le graphe de dépendances d’un workflow, pas seulement ce que tu écris toi-même dans le YAML.

    Si tu as lu notre article sur les immutable actions et la fermeture de la faille tj-actions, tu sais déjà que GitHub avance par étapes sur la sécurité de la chaîne d’approvisionnement Actions. Les lockfiles sont la pièce suivante : là où les immutable actions sécurisent la distribution côté mainteneur, les lockfiles verrouillent la consommation côté utilisateur.

    Le problème que le SHA-pinning seul ne couvre pas

    Épingler actions/checkout@a1b2c3d... plutôt que actions/checkout@v4 protège contre une réécriture de tag. Mais une action composite peut elle-même appeler d’autres actions en interne, sans que tu le voies dans ton propre workflow. Si cette dépendance de second niveau n’est pas épinglée par son mainteneur, ton pinning de surface ne sert à rien : le code qui s’exécute réellement peut changer sous tes pieds.

    C’est exactement le schéma de l’attaque tj-actions de mars 2025, qu’on a détaillée dans notre article sur les leçons supply chain : environ 23 000 dépôts touchés par une seule action compromise, propagée via des dépendances en cascade. Le pinning manuel ne scale juste pas sur un graphe de dépendances profond.

    Ce qu’un lockfile GitHub Actions verrouille concrètement

    Le fichier généré s’appelle .github/workflows/actions.lock, en schéma v0.0.2 (encore amené à évoluer, le projet est pré-1.0). Il contient deux sections : workflows, qui associe chaque fichier de workflow aux actions et reusable workflows qu’il référence, et dependencies, qui enregistre pour chaque référence le tag (ref), le SHA de commit résolu, et les identifiants numériques owner_id/repo_id — utiles pour détecter un renommage ou une redirection de dépôt, un vecteur d’attaque réel.

    Trois niveaux sont couverts, et c’est là que ça dépasse le simple pinning :

    • Actions directes : tag et SHA résolu enregistrés côte à côte.
    • Actions transitives : pour une action composite, tout le graphe de dépendances imbriqué est verrouillé dans le lockfile de ton propre dépôt.
    • Reusable workflows : ton lockfile épingle le commit du fichier de workflow réutilisable appelé, mais les dépendances internes de ce workflow réutilisable restent gouvernées par le lockfile du dépôt qui le définit — raison de plus pour onboarder en priorité les dépôts qui hébergent des workflows partagés.

    À l’exécution, Actions lance le commit verrouillé, point final — peu importe où pointe le tag amont au moment du run. Les politiques « allowed actions » sont évaluées contre ce commit verrouillé, pas contre le tag.

    Générer et vérifier le lockfile

    L’outillage passe par une extension GitHub CLI :

    gh extension install github/gh-actions-lock
    gh actions-lock

    Lancée depuis la racine du dépôt, cette commande scanne .github/workflows/ et écrit le lockfile. Un scan complet du dossier retire aussi les entrées des workflows supprimés ; tu peux aussi cibler un workflow précis pour ne toucher que celui-là.

    Deux modes de vérification, pour deux contextes différents :

    • gh actions-lock --verify contrôle que le lockfile est à jour sans rien modifier — pensé pour un job de CI sur une pull request.
    • gh actions-lock --verify-local --no-fix tourne hors ligne, pour un hook pre-commit. Il ne vérifie que la complétude structurelle, pas la validité des pins côté GitHub.

    Dependabot s’intègre à la mécanique : quand il bump une action déjà onboardée, il régénère l’entrée correspondante dans la même pull request. Il ne crée en revanche pas d’entrée pour un workflow qui n’a encore aucune couverture — l’onboarding initial reste à faire manuellement.

    La politique « Require lockfile » côté administration

    Pour les organisations qui veulent imposer la pratique plutôt que la suggérer, une politique « Require lockfile » existe en parallèle, elle aussi en preview publique, réglable au niveau entreprise, organisation ou dépôt. Deux modes : Evaluate, disponible uniquement sur GitHub Enterprise, qui remonte dans Policy insights ce qui serait bloqué sans réellement bloquer — et Active, qui bloque pour de vrai l’exécution des workflows ciblés dès qu’une dépendance d’action n’est pas couverte par le lockfile du dépôt.

    La documentation officielle recommande un déploiement en quatre étapes plutôt qu’un passage en force : pilote sur quelques dépôts, automatisation de la maintenance des lockfiles, renforcement de la revue de code via CODEOWNERS sur actions.lock, puis activation large. Vu le nombre de dépôts qui n’ont encore aucun lockfile, basculer direct en mode Active sans ce palier casserait des pipelines pour de mauvaises raisons.

    Ce que ça ne règle pas

    Un lockfile fige quelle révision s’exécute, pas si cette révision est saine. Verrouiller une action compromise revient juste à garantir que c’est toujours la version compromise qui tourne — la revue du code tiers reste nécessaire, lockfile ou pas. Et comme l’ensemble CLI/schéma est pré-1.0, les flags et le format peuvent encore changer avant stabilisation. GitHub Enterprise Server n’est pour l’instant pas couvert : seul Enterprise Cloud (y compris avec data residency) a accès à la fonctionnalité.

    FAQ

    Faut-il abandonner le SHA-pinning manuel si on adopte les lockfiles ?

    Non. Les politiques de SHA-pinning existantes peuvent coexister : pour une dépendance verrouillée, l’exigence de SHA est simplement vérifiée contre le commit du lockfile plutôt que contre le tag.

    Est-ce que ça marche sur GitHub Enterprise Server ?

    Pas pour l’instant. La preview publique du 14 octobre 2026 couvre uniquement GitHub Enterprise Cloud, y compris les configurations avec data residency.

    Que se passe-t-il si un mainteneur renomme son dépôt d’action ?

    Le lockfile stocke owner_id et repo_id, vérifiés à l’exécution — ce qui permet de détecter un renommage ou une redirection, plutôt qu’un simple suivi par nom qui se ferait avoir silencieusement.

    Passer à l’action

    Si tu gères plus d’une poignée de workflows avec des actions tierces, installer gh-actions-lock et lancer un premier gh actions-lock en mode diagnostic coûte dix minutes et te donne une photo exacte de ce qui tourne vraiment dans tes pipelines. Garde la politique « Require lockfile » en mode Evaluate le temps d’onboarder tes dépôts les plus critiques — l’activer trop tôt reviendrait à bloquer tes propres builds pour une couverture encore partielle.

  • FortiMail CVE-2026-104286 : le zero-day activement exploité

    FortiMail CVE-2026-104286 : le zero-day activement exploité

    archive234. Si ce nom de compte apparaît dans les logs CLI de ta passerelle FortiMail, arrête ce que tu fais et traite ta machine comme compromise. C’est l’un des indicateurs que Fortinet a publiés le 1er octobre 2026 pour CVE-2026-104286, une faille critique activement exploitée en zero-day sur l’interface d’administration de FortiMail — et plus de dix jours plus tard, le correctif complet n’est toujours pas confirmé disponible pour trois des quatre branches concernées.

    Ce que permet la faille, techniquement

    CVE-2026-104286 cumule deux faiblesses : un path traversal classique (CWE-22) et un défaut de neutralisation des octets NULL (CWE-158) dans l’interface de management de FortiMail. L’effet combiné permet à un attaquant non authentifié d’écrire des fichiers arbitraires sur le système sous-jacent via une requête HTTP ou HTTPS forgée — pas de credentials nécessaires, pas d’interaction utilisateur. Le CVSS atteint 9.8, et pour une fois le chiffre n’est pas gonflé : écrire où on veut sur le disque d’une passerelle mail qui voit passer toute ta messagerie, c’est à peu près le pire scénario d’accès initial qu’on puisse avoir sur ce type d’appliance.

    Fortinet l’a découverte en interne (l’équipe Product Security, pas un chercheur externe ni un rapport de compromission), ce qui n’a pas empêché l’exploitation active d’être confirmée dès la publication de l’avis FG-IR-26-175. Les versions concernées couvrent large : FortiMail 8.0.0 à 8.0.1, 7.6.0 à 7.6.6, 7.4.0 à 7.4.8, et 7.2.0 à 7.2.9.

    Le patch n’est pas complètement sorti — et c’est le vrai problème

    Voilà le point sur lequel il faut être précis plutôt qu’optimiste. Pour la branche 7.2, Fortinet donne une réponse claire : il n’y aura pas de correctif dédié, il faut migrer vers la 7.4 ou une version ultérieure. Pour les branches 7.4, 7.6 et 8.0, les versions corrigées annoncées sont respectivement 7.4.9, 7.6.7 et 8.0.2 — mais au 5 octobre, elles restaient documentées comme « à venir » plutôt que confirmées disponibles au téléchargement. Avant de planifier ta fenêtre de maintenance, vérifie toi-même sur le portail de support Fortinet et sur l’avis FG-IR-26-175 que la version ciblée est bien publiée : ne te fie pas à un numéro de version lu sur un blog tiers, y compris celui-ci.

    En attendant un correctif confirmé, Fortinet recommande deux mitigations qui se combinent bien : désactiver le support IBE si tu ne l’utilises pas,

    config system encryption ibe
        set status disable
    end

    et surtout bloquer l’accès à l’interface de management depuis Internet, ou la restreindre à des réseaux privés de confiance. C’est la mitigation qui compte le plus, parce que l’exploitation passe précisément par cette interface — et c’est une règle qui devrait de toute façon s’appliquer à toute interface d’administration, faille ou pas.

    Comment savoir si tu as déjà été touché

    Fortinet a publié une liste d’indicateurs de compromission assez précise pour que ça vaille le coup de les chercher maintenant plutôt que d’attendre un incident confirmé. Côté fichiers, surveille la présence de /data/lib/liblog.so, /data/bin/webconsole, /data/bin/mailservice et /data/etc/ld.so.preload, ainsi que des modifications sur /bin/smit, /data/etc/httpd.conf et /data/migadmin.tar.gz. Côté logs, trois signaux se recoupent dans les cas documentés : la création d’un compte d’archivage nommé archive234 pointant vers un serveur distant à l’adresse 79.141.169.187 (répertoire /uploads — un signe net d’exfiltration de données), une tâche cron liée à /migadmin, et des erreurs de déchiffrement IBE causées par un encodage Base64 invalide. Une seconde adresse IP, 45.129.0.192, apparaît aussi dans les communications associées à l’attaque.

    CISA a ajouté la faille à son catalogue Known Exploited Vulnerabilities, avec une échéance au 4 octobre pour les agences fédérales américaines — triage forensique et mitigation. Cette échéance ne te concerne pas directement si tu n’es pas une agence fédérale US, mais l’inscription au catalogue KEV reste un signal fiable que l’exploitation est confirmée et active, pas hypothétique. BleepingComputer a publié l’analyse technique complète le jour de la divulgation, avec le détail des hachages SHA-256 pour chaque fichier IOC.

    FAQ

    Dois-je couper FortiMail en attendant le correctif ?

    Pas nécessairement. La mitigation recommandée par Fortinet — restreindre l’accès à l’interface de management aux réseaux de confiance — neutralise le vecteur d’attaque sans arrêter le service de messagerie lui-même, à condition que cette interface ne soit pas déjà exposée publiquement (et elle ne devrait jamais l’être).

    Comment savoir si mon interface de management FortiMail est exposée sur Internet ?

    Vérifie les règles de pare-feu en amont de l’appliance et teste l’accès depuis une IP externe à ton réseau. Si tu peux atteindre l’interface d’admin sans être sur le VPN ou le réseau interne, elle est exposée — referme-la avant toute autre action.

    La version 7.2 de FortiMail aura-t-elle un correctif ?

    Non, Fortinet ne prévoit pas de correctif pour la branche 7.2. La migration vers la 7.4 (ou ultérieure) est la seule voie indiquée.

    Passe à l’action

    Si tu gères une passerelle FortiMail, la priorité n’est pas le patch — il n’est pas encore confirmé disponible pour ta version — c’est de vérifier dès aujourd’hui que l’interface de management n’est accessible que depuis un réseau de confiance, puis de chercher les IOC listés plus haut dans tes logs. On avait déjà couvert un lot de failles Fortinet ajoutées au catalogue CISA KEV mi-septembre, et le même réflexe de vérification d’exposition s’appliquait déjà à la faille SAML NetScaler traitée début octobre : les interfaces d’administration exposées sont, mois après mois, le point d’entrée le plus rentable pour un attaquant.

  • Azure Pipelines : Docker socket et Node 16, ce qui casse en novembre

    Azure Pipelines : Docker socket et Node 16, ce qui casse en novembre

    Ton pipeline Azure Pipelines qui build une image Docker depuis un job conteneurisé tournait très bien la semaine dernière. Depuis l’agent v5.279.0, il peut échouer sans prévenir sur un job Linux — parce que /var/run/docker.sock n’est plus monté par défaut. Ce n’est pas un bug, c’est un changement de comportement volontaire glissé dans la mise à jour de sprint de septembre, et il n’est pas seul : Node.js 16 sera retiré des agents le 24 novembre 2026, date à laquelle des tâches qui tournent sans problème depuis des années peuvent tout simplement planter.

    Le socket Docker ne se monte plus tout seul

    Si tes pipelines lancent du Docker-in-Docker — build d’image, tests d’intégration qui démarrent des conteneurs, scan de sécurité d’image — depuis un container job sur agent Linux, ce changement te concerne directement. Jusqu’à l’agent v5.279.0, mapDockerSocket valait true par défaut : le socket Docker de l’hôte était monté automatiquement dans le conteneur du job. Depuis cette version, la valeur par défaut passe à false, et il faut l’activer explicitement :

    resources:
      containers:
      - container: my_container
        image: ubuntu:22.04
        mapDockerSocket: true
    

    Si ton job conteneurisé n’a jamais eu besoin de parler au démon Docker de l’hôte, tu n’as rien à faire — c’est exactement le cas que Microsoft cherche à sécuriser par défaut, puisque monter ce socket donne de fait un accès root à la machine hôte depuis l’intérieur du conteneur. Mais si une seule étape de ton pipeline fait un docker build ou lance un conteneur depuis l’intérieur du job, mieux vaut ajouter la ligne avant que ça casse en silence sur ta prochaine mise à jour d’agent.

    Node.js 6, 10 et 16 : la date à cocher dans ton calendrier

    Deuxième nouveauté, plus structurante : Node.js 6, 10 et 16 atteignent leur fin de support et seront retirés de l’agent Azure Pipelines le 24 novembre 2026. Passé cette date, toute tâche qui cible une de ces versions tournera sur un runtime Node plus récent — ce qui peut suffire à casser une tâche personnalisée mal préparée, ou à produire un comportement inattendu sans message d’erreur clair.

    Le plus efficace n’est pas d’attendre le 24 novembre pour découvrir quelles tâches sont concernées. Microsoft a ajouté un réglage dédié pour les identifier à l’avance : dans Organization settings > Pipelines > Settings, l’option « Restrict out of support Node.js versions in pipeline tasks » fait tourner, dès son activation, les tâches ciblant ces versions sur le nouveau runtime — et le journal du pipeline affiche un avertissement pour chaque tâche affectée. Active-le dans un projet non critique d’abord, regarde ce qui remonte, puis généralise : c’est littéralement conçu pour servir de test avant le couperet, pas uniquement pour appliquer la restriction.

    Ce qui change aussi, plus discrètement

    La mise à jour de sprint publiée début septembre embarque trois autres changements qui méritent une ligne chacun.

    GitHub Copilot Code Review passe en disponibilité générale en preview publique pour Azure Repos — accessible à tous les clients Azure DevOps sans inscription à un accès anticipé, contrairement à la preview technique qu’on avait couverte à son lancement fin septembre. La version publique ajoute l’activation granulaire (organisation, projet ou dépôt), le support des Managed DevOps Pools pour exécuter les revues sans passer par les agents hébergés Microsoft, des instructions personnalisées par chemin de fichier, et le déclenchement automatique via les politiques de branche — y compris sur les pull requests en brouillon.

    Le serveur MCP distant d’Azure DevOps — celui qui permet de connecter un assistant IA à tes projets, qu’on avait détaillé dans cet article — sait désormais détecter quand une requête approche la limite de débit du service et renvoyer une consigne d’attente à l’agent appelant, au lieu de simplement échouer.

    Enfin, les pull requests multi-commits héritent automatiquement d’un titre basé sur le nom de la branche source, plutôt que de rester vides tant que personne n’y touche — un détail, mais un de ceux qui évitent les PR anonymes dans l’historique.

    FAQ

    Mon pipeline va-t-il casser immédiatement avec le changement de mapDockerSocket ?

    Seulement si une étape de ton job conteneurisé Linux a besoin d’accéder au démon Docker de l’hôte (build d’image, lancement de conteneurs imbriqués). Les jobs conteneurisés qui n’utilisent pas Docker-in-Docker ne sont pas affectés.

    Que se passe-t-il si je ne fais rien avant le 24 novembre pour Node.js ?

    Tes tâches ciblant Node 6, 10 ou 16 continueront à s’exécuter, mais sur un runtime Node plus récent qu’elles n’ont jamais été testées pour utiliser — le risque va de l’échec franc à un comportement silencieusement différent, selon ce que fait la tâche.

    Le serveur MCP Azure DevOps est-il disponible par défaut ?

    Son activation dépend de ta configuration d’organisation et de l’assistant IA utilisé ; voir notre article dédié pour la mise en place.

    Passe à l’action

    Deux choses à faire cette semaine, pas dans six mois : grep tes fichiers YAML pour repérer les jobs conteneurisés qui lancent du Docker, et active le réglage de restriction Node.js sur un projet test pour voir ce qui remonte dans les logs. Les deux prennent moins d’une heure et t’évitent une mauvaise surprise le jour où l’agent se met à jour tout seul.

  • Terraform 1.17 (bêta) : policies HCL hors expérimental

    Terraform 1.17 (bêta) : policies HCL hors expérimental

    Un administrateur bascule sur -allow-experimental-features pour tester un truc, oublie de le retirer, et six mois plus tard un collègue copie-colle le même flag en prod sans savoir pourquoi il est là. Ça t’est peut-être déjà arrivé avec Terraform : jusqu’à la version 1.16, impossible de vérifier des policies HCL au moment du plan ou de l’apply sans ce garde-fou expérimental. Terraform 1.17, actuellement en bêta, change ça — et en profite pour poser une vraie alternative à Sentinel et OPA.

    Le flag -policies quitte l’expérimental (mais pas tout le produit)

    Dans la liste des changements de la 1.17.0-beta1, un point mérite qu’on s’y arrête : le flag -policies disponible sur init, plan et apply ne nécessite plus -allow-experimental-features. Concrètement, tu peux désormais écrire une policy HCL et la brancher sur ton pipeline Terraform sans activer un mode qui te prévient à chaque exécution que tu utilises quelque chose d’instable.

    Attention à la nuance, parce qu’elle compte : c’est le support du flag dans le CLI Terraform qui sort de l’expérimental, pas le produit Terraform Policy lui-même. Sur la documentation officielle, HashiCorp est explicite : la fonctionnalité est en bêta publique, et la mention est sans ambiguïté — « do not use beta features in production environments ». Tu peux tester, documenter, préparer ta migration depuis Sentinel. Tu ne branches pas encore ça sur ton environnement de production critique.

    Terraform Policy, concrètement : ce qu’il fait que Sentinel et OPA ne font pas

    HashiCorp a annoncé ce nouveau framework le 16 juillet 2026 dans un billet intitulé « Introducing tfpolicy ». L’argument de vente tient en une phrase : écrire tes policies en HCL, le même langage que tes fichiers .tf, plutôt que d’apprendre le DSL Sentinel ou Rego pour OPA. Mais la vraie différence est ailleurs, dans ce que le moteur peut évaluer.

    Sentinel et OPA tournent uniquement au moment du plan, et ni l’un ni l’autre ne peut interroger une data source pendant l’évaluation — ils travaillent sur ce que le plan leur donne, point final. Terraform Policy, lui, peut s’exécuter à trois moments distincts du cycle de vie : pendant terraform init (avant même que les providers et modules soient téléchargés — utile pour bloquer un provider non approuvé avant qu’il touche ton disque), pendant le plan, et après l’apply, pour valider des valeurs qui ne sont connues qu’une fois la ressource provisionnée (un ARN généré par le provider, par exemple). Il peut aussi interroger des données externes au moment de l’évaluation — une liste d’AMI approuvées dans une data source, typiquement.

    Côté niveaux d’application, Sentinel propose advisory / soft-mandatory / hard-mandatory, OPA se limite à pass/fail sans niveau intermédiaire. Terraform Policy introduit un troisième modèle — advisory, mandatory_overridable et mandatory — qui se rapproche de Sentinel sans en reprendre le vocabulaire ni la syntaxe.

    Faut-il migrer tes policies Sentinel dès maintenant ?

    Non, et HashiCorp ne le demande pas. Le produit est en bêta publique sur HCP Terraform depuis juillet, le support CLI vient seulement de sortir de l’expérimental dans une version qui n’est elle-même pas encore stable. Si tu as un parc de policies Sentinel qui fonctionne, le bon réflexe est de suivre l’évolution, éventuellement de tester tfpolicy sur un projet non critique via l’agent skill GitHub mentionné dans l’annonce (conçu pour convertir des policies Sentinel existantes), mais pas de basculer ta gouvernance de prod sur un outil encore en bêta. OpenTofu, pour rappel, n’a pas d’équivalent annoncé à ce jour — un point à peser si la gouvernance par policy fait partie de tes critères de choix entre les deux outils.

    Les autres nouveautés de la 1.17 à ne pas manquer

    Terraform Policy capte l’attention, mais la bêta embarque trois autres changements utiles au quotidien.

    Les variables et les locals sont désormais supportés dans les required_providers — tu peux enfin centraliser une contrainte de version de provider dans une variable plutôt que de la dupliquer dans chaque bloc. Une nouvelle option de planification, -minimal-refresh, rafraîchit uniquement les ressources qui ont des changements proposés au lieu de l’état entier — un gain de temps net sur les configurations avec des centaines de ressources où seule une poignée bouge réellement. Et côté tests, mock_provider prend désormais en charge les ressources éphémères, ce qui évite de devoir provisionner un vrai secret juste pour faire tourner ta suite de tests.

    Un dernier détail technique : la sortie JSON de la commande version gagne un champ format_version. HashiCorp précise que ça ne devrait pas casser les intégrations existantes, mais recommande de vérifier ce champ dans les prochaines versions — un signe que d’autres changements de format sont probablement à venir.

    FAQ

    Terraform 1.17 est-elle disponible en version stable ?

    Non, au moment de la rédaction de cet article la dernière version publiée est la 1.17.0-beta1. La 1.16 reste la version stable recommandée pour la production — on avait détaillé ses apports (import dans les modules, destroy = false) à sa sortie début octobre.

    Terraform Policy remplace-t-il Sentinel ?

    Pas à ce stade. Sentinel reste pris en charge sur HCP Terraform et Terraform Enterprise. Terraform Policy est une alternative construite sur une philosophie différente (HCL plutôt qu’un DSL dédié, évaluation à plusieurs étapes du cycle de vie plutôt qu’au plan uniquement), pas un remplacement annoncé.

    Le flag -policies fonctionne-t-il avec OPA ou Sentinel ?

    Non, ce flag sert spécifiquement à activer les policies HCL de Terraform Policy en local, via le CLI open source. Sentinel et OPA restent gérés via HCP Terraform et Terraform Enterprise, avec leurs propres mécanismes d’activation.

    Passe à l’action

    Si tu gères des policies Sentinel aujourd’hui, le plus utile à faire cette semaine n’est pas de migrer quoi que ce soit : c’est de lire la page de comparaison HashiCorp et de repérer les deux ou trois règles de ton catalogue qui bénéficieraient le plus d’une évaluation post-apply ou d’une data source externe — ce sont elles qui justifieront un vrai test de tfpolicy quand la 1.17 passera stable. En attendant, reste sur la 1.16 pour tout ce qui touche à la production.