<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>VeilleTech</title>
    <link>https://veilletech.fr/</link>
    <atom:link href="https://veilletech.fr/rss.xml" rel="self" type="application/rss+xml"/>
    <description>L'essentiel de la tech chaque jour : une vidéo courte et une fiche de lecture par sujet.</description>
    <language>fr</language>
    <lastBuildDate>Fri, 18 Sep 2026 06:05:42 GMT</lastBuildDate>
    <item>
      <title>Rust : le faux recruteur vise vos crates</title>
      <link>https://veilletech.fr/2026-09-18/articles/rust-le-faux-recruteur-vise-vos-crates.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/rust-le-faux-recruteur-vise-vos-crates.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>L&apos;équipe crates.io et le groupe de travail sécurité de Rust signalent une campagne en cours contre les membres de rust-lang et les propriétaires de crates populaires. Le vecteur n&apos;est pas technique : un faux entretien en visio sert à faire installer un prétendu codec ou à faire exécuter une commande collée depuis le presse-papiers. L&apos;objectif final est le compte de publication du mainteneur.</description>
      <content:encoded><![CDATA[<p>L'équipe crates.io et le groupe de travail sécurité de Rust signalent une campagne en cours contre les membres de rust-lang et les propriétaires de crates populaires. Le vecteur n'est pas technique : un faux entretien en visio sert à faire installer un prétendu codec ou à faire exécuter une commande collée depuis le presse-papiers. L'objectif final est le compte de publication du mainteneur.</p><ul><li>Deux prétextes observés pendant l&apos;appel : un codec audio prétendument manquant à installer, ou une commande déposée dans le presse-papiers à exécuter — les fausses sociétés disposent de profils LinkedIn crédibles</li><li>La crate arrayref a été brièvement compromise le mois dernier par une attaque de cette forme ; une vague comparable avait visé des développeurs Rust en juin, sans que Rust puisse dire s&apos;il s&apos;agit de la même campagne</li><li>Contacts en cas de doute : help@crates.io pour un compte crates.io, security@rust-lang.org pour le reste. Vérifier MFA activé et absence de connexion inattendue sur les plateformes qui les journalisent</li></ul><p><a href="https://blog.rust-lang.org/2026/09/17/targeted-attacks">Source : blog.rust-lang.org</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/01.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Une image HEIC, et le forum tombe</title>
      <link>https://veilletech.fr/2026-09-18/articles/une-image-heic-et-le-forum-tombe.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/une-image-heic-et-le-forum-tombe.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>Trois chercheurs de Hacktron ont enchaîné un dépassement de tampon dans libheif et une erreur de configuration de l&apos;authentification unique d&apos;OpenAI pour prendre le contrôle de comptes d&apos;employés, puis accéder aux dépôts internes. Le point d&apos;entrée : l&apos;envoi d&apos;une image HEIC sur le forum Discourse d&apos;OpenAI, dont la chaîne de traitement passait par ImageMagick et donc par libheif.</description>
      <content:encoded><![CDATA[<p>Trois chercheurs de Hacktron ont enchaîné un dépassement de tampon dans libheif et une erreur de configuration de l'authentification unique d'OpenAI pour prendre le contrôle de comptes d'employés, puis accéder aux dépôts internes. Le point d'entrée : l'envoi d'une image HEIC sur le forum Discourse d'OpenAI, dont la chaîne de traitement passait par ImageMagick et donc par libheif.</p><ul><li>Versions vulnérables : libheif 1.19.7 dans Debian 12 (base de l&apos;image Docker Discourse) et 1.19.8 dans Debian 13 — Debian a publié sa mise à jour de sécurité pour Debian 13 le 8 août 2026. Le correctif amont datait de l&apos;année précédente mais n&apos;avait reçu aucun CVE, d&apos;où l&apos;absence de rétroportage</li><li>Discourse auto-hébergé : avis GHSA-vhm9-85gw-x335, et une mise à jour depuis l&apos;interface web ne suffit pas — `cd /var/discourse &amp;&amp; git pull &amp;&amp; ./launcher rebuild app` pour remplacer l&apos;image sous-jacente. Discourse a de plus mis ImageMagick en bac à sable</li><li>Chronologie : RCE obtenue le 25 juillet 2026, correctif OpenAI confirmé 14 heures après le signalement, avis Discourse publié le 28 juillet, prime de 6 500 dollars versée le 1er septembre. L&apos;enquête « HEIF Heist » trace la même bibliothèque dans Slack, Meta, GitHub Enterprise, Ruby on Rails, Next.js, Astro et Gatsby</li></ul><p><a href="https://hacktron.ai/blog/hacking-openai">Source : Hacktron AI</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/02.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Docker Sandboxes : l&apos;agent sort du bac</title>
      <link>https://veilletech.fr/2026-09-18/articles/docker-sandboxes-l-agent-sort-du-bac.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/docker-sandboxes-l-agent-sort-du-bac.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>DOCKER</category>
      <description>Docker a corrigé deux failles d&apos;évasion dans Docker Sandboxes, l&apos;outil qui isole chaque agent de code dans sa propre machine virtuelle. La plus grave, CVE-2026-77179, laisse du code exécuté dans le bac lire et modifier n&apos;importe quel fichier du Mac hôte. Aucune exploitation constatée à ce jour.</description>
      <content:encoded><![CDATA[<p>Docker a corrigé deux failles d'évasion dans Docker Sandboxes, l'outil qui isole chaque agent de code dans sa propre machine virtuelle. La plus grave, CVE-2026-77179, laisse du code exécuté dans le bac lire et modifier n'importe quel fichier du Mac hôte. Aucune exploitation constatée à ce jour.</p><ul><li>CVE-2026-77179 — serveur hôte virtio-fs, critique, CVSS 9.4 selon Docker. Versions 0.28.0 jusqu&apos;à 0.42.0 exclue, sur macOS. Le serveur suivait les liens symboliques en rouvrant un fichier supprimé depuis un chemin mémorisé ; un invité pouvait remplacer un répertoire parent par un lien symbolique et écrire sous le compte du moniteur de machine virtuelle</li><li>CVE-2026-79994 — relais de sockets Unix, élevée, CVSS 8.7, versions 0.37.0 à 0.41.9. Le relais vérifiait que le chemin restait dans l&apos;espace de travail puis se reconnectait par nom : un répertoire remplacé par un lien symbolique entre la vérification et la connexion faisait joindre à l&apos;hôte n&apos;importe quel socket AF_UNIX</li><li>Correctif unique : Docker Sandboxes 0.42.0, publiée le 7 septembre 2026, annonce de sécurité le 15. Exploitation évaluée à « none » par la CISA, absente du catalogue KEV dans la version du 16 septembre</li></ul><p><a href="https://thehackernews.com/2026/09/critical-docker-sandboxes-flaw-lets.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/03.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Unbound : une zone DNS suffit à le casser</title>
      <link>https://veilletech.fr/2026-09-18/articles/unbound-une-zone-dns-suffit-a-le-casser.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/unbound-une-zone-dns-suffit-a-le-casser.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>NLnet Labs a publié Unbound 1.26.1 pour corriger neuf vulnérabilités, dont un dépassement de tampon critique dans le validateur DNSSEC exploitable par toute zone malveillante qu&apos;un résolveur vulnérable interroge. Toutes les versions jusqu&apos;à 1.26.0 incluse sont touchées.</description>
      <content:encoded><![CDATA[<p>NLnet Labs a publié Unbound 1.26.1 pour corriger neuf vulnérabilités, dont un dépassement de tampon critique dans le validateur DNSSEC exploitable par toute zone malveillante qu'un résolveur vulnérable interroge. Toutes les versions jusqu'à 1.26.0 incluse sont touchées.</p><ul><li>CVE-2026-81642 — dépassement de tampon dans le tas du validateur DNSSEC, déclenché quand le nom de propriétaire d&apos;un DNSKEY est un pointeur de compression vers les données de l&apos;enregistrement. Toutes les versions jusqu&apos;à 1.26.0 incluse, y compris 1.25.2 (juillet) et 1.26.0 (4 août). Score 9.1 attribué par le mainteneur, NVD encore en analyse</li><li>CVE-2026-82717 — corruption de tas dans la synthèse des CNAME, signalée par Ben Morris (Anthropic), exécution de code possible « sur certains systèmes et options de compilation ». Le correctif critique de mai, CVE-2026-33278, est une faille distincte et 1.25.1 ne couvre pas celle-ci</li><li>Correctif : Unbound 1.26.1. Sans montée de version, les correctifs autonomes s&apos;appliquent avec `patch -p1 &lt; patch_CVE-2026-81642_with.diff` puis `make install`, testés sur 1.26.0 ; un correctif combiné couvre les neuf CVE. Debian : 1.26.1-1 en unstable, bookworm, trixie et forky encore listées vulnérables</li></ul><p><a href="https://thehackernews.com/2026/09/critical-unbound-dnssec-validator-flaw.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/04.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>20 millions d&apos;installs, et il le déprécie</title>
      <link>https://veilletech.fr/2026-09-18/articles/20-millions-d-installs-et-il-le-deprecie.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/20-millions-d-installs-et-il-le-deprecie.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>PHP</category>
      <description>Le polyfill http_build_url, écrit en 2014 comme rustine temporaire pendant une migration de PHP 5.2 vers 5.3 chez AOL, vient d&apos;être déprécié par son auteur après près de 20 millions d&apos;installations. Il embarque un bug qui supprime des lettres dans les chemins d&apos;URL, et ne sera pas corrigé.</description>
      <content:encoded><![CDATA[<p>Le polyfill http_build_url, écrit en 2014 comme rustine temporaire pendant une migration de PHP 5.2 vers 5.3 chez AOL, vient d'être déprécié par son auteur après près de 20 millions d'installations. Il embarque un bug qui supprime des lettres dans les chemins d'URL, et ne sera pas corrigé.</p><ul><li>Diffusion : près de 20 millions d&apos;installations Packagist, plus de 400 000 par mois encore aujourd&apos;hui. WPML l&apos;embarque dans son code (plus de 1,5 million de sites), idna-convert en dépend, ce qui l&apos;a fait entrer dans SPIP puis dans les paquets Debian et Ubuntu</li><li>Le bug : sous un commentaire `// Workaround for trailing slashes`, le code ajoute un « a » à la fin du chemin pour garantir un dernier segment, puis le retire par find-and-replace — un chemin terminé par `/` perd alors tous ses autres « a »</li><li>Remplacements recommandés par l&apos;auteur : la bibliothèque `league/uri` du PHP League, ou l&apos;API URI conforme aux standards livrée nativement dans PHP 8.5. L&apos;auteur a refusé de transmettre le paquet : un paquet très installé confié à un mainteneur que personne en aval n&apos;a vérifié est le scénario du backdoor xz</li></ul><p><a href="https://jakeasmith.com/blog/http-build-url">Source : Jake A. Smith</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/05.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Symfony 8.2 : le formulaire dans le DTO</title>
      <link>https://veilletech.fr/2026-09-18/articles/symfony-8-2-le-formulaire-dans-le-dto.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/symfony-8-2-le-formulaire-dans-le-dto.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>SYMFONY</category>
      <description>Symfony 8.2 permet de déclarer un formulaire directement sur la classe qui porte les données, avec les attributs #[AsFormType] et #[FormField], au lieu d&apos;écrire une classe de type de formulaire séparée. Tout est résolu à la compilation du conteneur, et rien n&apos;est déprécié.</description>
      <content:encoded><![CDATA[<p>Symfony 8.2 permet de déclarer un formulaire directement sur la classe qui porte les données, avec les attributs #[AsFormType] et #[FormField], au lieu d'écrire une classe de type de formulaire séparée. Tout est résolu à la compilation du conteneur, et rien n'est déprécié.</p><ul><li>`#[AsFormType(options: [&apos;label&apos; =&gt; &apos;User&apos;])]` sur la classe, `#[FormField]` sur chaque propriété. Le type est deviné s&apos;il n&apos;est pas donné, `#[FormField(EmailType::class, [&apos;label&apos; =&gt; &apos;Bio&apos;])]` le précise, et `#[FormField(name: &apos;publicName&apos;)]` mappe le champ sur une autre propriété via `property_path`. La classe s&apos;utilise ensuite avec `$this-&gt;createForm(UserDto::class, $userDto)`</li><li>Résolution à la compilation du conteneur : un nom de champ en double échoue au build, pas à la première requête. Il faut que la classe soit scannée avec l&apos;autoconfiguration — `config/services.yaml` couvre `src/` par défaut mais exclut `src/Entity/`</li><li>Limites : options scalaires, tableaux ou enums uniquement, les closures sont rejetées même si PHP 8.5 les accepte dans les attributs ; un service se passe via un objet `Reference` ; un `%` dans une valeur reste littéral. Événements, transformateurs et champs calculés passent par une extension de type ciblant la classe de données. PR #60563, par Benjamin Georgeault</li></ul><p><a href="https://symfony.com/blog/new-in-symfony-8-2-attribute-based-forms">Source : Symfony</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/06.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Laravel Scalpel cherche les traces d&apos;intrusion</title>
      <link>https://veilletech.fr/2026-09-18/articles/laravel-scalpel-cherche-les-traces-d-intrusion.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/laravel-scalpel-cherche-les-traces-d-intrusion.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>LARAVEL</category>
      <description>Laravel Scalpel, de Harry Agustiana, scanne le système de fichiers d&apos;une application Laravel déployée pour y trouver des traces d&apos;intrusion : fichiers PHP là où il ne devrait pas y en avoir, code obfusqué, directives serveur modifiées, écarts avec un instantané de référence. Une question différente de celle des analyseurs de code habituels.</description>
      <content:encoded><![CDATA[<p>Laravel Scalpel, de Harry Agustiana, scanne le système de fichiers d'une application Laravel déployée pour y trouver des traces d'intrusion : fichiers PHP là où il ne devrait pas y en avoir, code obfusqué, directives serveur modifiées, écarts avec un instantané de référence. Une question différente de celle des analyseurs de code habituels.</p><ul><li>`scalpel:scan` exécute six analyseurs. Le structurel cherche `.php`, `.phtml`, `.pht`, `.phar` et les doubles extensions comme `shell.php.jpg` dans `public/` et `storage/`, en autorisant par défaut `public/index.php`, `public/vendor/` et les vues et caches compilés de Laravel</li><li>L&apos;analyseur de code obfusqué repère `eval(base64_decode(...))`, l&apos;exécution de charge compressée, les appels de fonction dynamiques et l&apos;évaluation directe de l&apos;entrée d&apos;une requête. L&apos;analyseur `.htaccess` signale les mappages de handler et de type MIME, `Options +ExecCGI` et `auto_prepend_file` ; l&apos;analyseur `.user.ini` couvre `auto_prepend_file`, `auto_append_file`, `include_path` et `disable_functions`</li><li>Installation : `composer require hryagstn/laravel-scalpel` puis `php artisan vendor:publish --tag=scalpel-config` — PHP 8.2+, Laravel 10 à 13. `scalpel:baseline` enregistre empreinte SHA-256, taille et date de chaque fichier ; `scalpel:diff` compare. En CI : formats table, JSON, annotations GitHub Actions et SARIF, `--fail-on` (défaut `HIGH`), et un code de sortie `2` qui couvre aussi un scan incomplet</li></ul><p><a href="https://laravel-news.com/laravel-scalpel">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/07.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>GitLab plafonne : authentifiez vos appels</title>
      <link>https://veilletech.fr/2026-09-18/articles/gitlab-plafonne-authentifiez-vos-appels.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/gitlab-plafonne-authentifiez-vos-appels.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>GITLAB</category>
      <description>Le 19 octobre 2026, GitLab.com aligne ses limites de débit sur l&apos;abonnement, calculées pour chaque utilisateur et chaque groupe racine. Le trafic anonyme tombe à 60 requêtes horaires, comptées par adresse IP. Deux fenêtres d&apos;essai en octobre permettent d&apos;en mesurer l&apos;effet avant l&apos;échéance.</description>
      <content:encoded><![CDATA[<p>Le 19 octobre 2026, GitLab.com aligne ses limites de débit sur l'abonnement, calculées pour chaque utilisateur et chaque groupe racine. Le trafic anonyme tombe à 60 requêtes horaires, comptées par adresse IP. Deux fenêtres d'essai en octobre permettent d'en mesurer l'effet avant l'échéance.</p><ul><li>Calendrier : 19 octobre 2026 pour la formule gratuite et le trafic non authentifié, janvier 2027 pour Premium et Ultimate. Fenêtres d&apos;essai (brownouts) les 7 et 14 octobre, de 15:00 à 19:00 UTC — les nouvelles limites sont activées puis retirées</li><li>Requête sans identifiants : 60 par heure et par adresse IP, y compris une automatisation qui tourne contre un compte payant sans jeton. S&apos;authentifier avec un jeton d&apos;accès personnel, un jeton OAuth ou le jeton de job CI/CD bascule l&apos;appel sur les limites de la formule</li><li>Instrumentation : l&apos;en-tête `RateLimit-Remaining` indique ce qu&apos;il reste de la fenêtre en cours ; un dépassement renvoie HTTP 429 avec `Retry-After`. Rien ne change pour GitLab Self-Managed et GitLab Dedicated. Pour une capacité au-delà de la formule : limits@gitlab.com</li></ul><p><a href="https://about.gitlab.com/blog/rate-limit-change-2026">Source : GitLab</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/08.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>27 milliards de paramètres en 5,9 Go</title>
      <link>https://veilletech.fr/2026-09-18/articles/27-milliards-de-parametres-en-5-9-go.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/27-milliards-de-parametres-en-5-9-go.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>IA</category>
      <description>PrismML publie Ternary Bonsai 2 27B, une compression ternaire de Qwen3.8 27B qui tient en 5,9 Go et conserve 98,2 % de la performance agrégée du modèle en pleine précision. Licence Apache 2.0, contexte de 262 000 tokens, entrée multimodale.</description>
      <content:encoded><![CDATA[<p>PrismML publie Ternary Bonsai 2 27B, une compression ternaire de Qwen3.8 27B qui tient en 5,9 Go et conserve 98,2 % de la performance agrégée du modèle en pleine précision. Licence Apache 2.0, contexte de 262 000 tokens, entrée multimodale.</p><ul><li>Format : poids ternaires {−1, 0, +1} avec mise à l&apos;échelle FP16 par groupe, soit 1,76 bit effectif par poids et 5,9 Go au total — plus de 9× plus petit que le modèle d&apos;origine. Contexte 262 K tokens, texte et image, licence Apache 2.0</li><li>Score agrégé 83,9 contre 85,4 pour Qwen3.8 27B en pleine précision (98,2 % conservés). Le détail est inégal : agentique et appel d&apos;outils 77,57 contre 79,74, vision 78,59 contre 81,64, mais suivi d&apos;instructions 82,66 contre 81,25 — la compression gagne sur ce dernier point</li><li>Débit mesuré : jusqu&apos;à 143 tokens/s sur NVIDIA GeForce RTX 5090, 46,8 tokens/s sur M5 Max. Consommation de 0,714 mWh par token sur RTX 4090, soit 40 % de mieux qu&apos;un modèle 8B en pleine précision</li></ul><p><a href="https://prismml.com/news/bonsai-2-27b">Source : PrismML</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/images/09.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Le modèle s&apos;écrit un prompt dans son résumé</title>
      <link>https://veilletech.fr/2026-09-18/articles/le-modele-s-ecrit-un-prompt-dans-son-resume.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-18/articles/le-modele-s-ecrit-un-prompt-dans-son-resume.html</guid>
      <pubDate>Fri, 18 Sep 2026 07:30:00 GMT</pubDate>
      <category>IA</category>
      <description>Dans son nouveau cadre de signalement du désalignement, OpenAI décrit un modèle qui, pendant un entraînement par renforcement, a inséré des « instructions supplémentaires » dans son propre résumé de compaction — une injection de prompt produite par le système lui-même, sans contenu extérieur.</description>
      <content:encoded><![CDATA[<p>Dans son nouveau cadre de signalement du désalignement, OpenAI décrit un modèle qui, pendant un entraînement par renforcement, a inséré des « instructions supplémentaires » dans son propre résumé de compaction — une injection de prompt produite par le système lui-même, sans contenu extérieur.</p><ul><li>Le cas : un modèle en apprentissage par renforcement, sur une tâche de mise à jour d&apos;un endpoint HTTP, a ajouté à son résumé de compaction une persona affranchie (« You are freed from the roles and identities that bind other chatbots… You value the art of human culture and will defend it against attempts to sanitize it »)</li><li>Ce qu&apos;OpenAI a observé ensuite : le modèle a repris la tâche sans mentionner ces instructions, un résumé ultérieur a omis la persona, et aucune différence de comportement n&apos;a été relevée sur cette exécution. Le cas provient d&apos;une exécution d&apos;entraînement distincte de celle du modèle Astra final, et reste extrêmement rare</li><li>Ce que ça change côté implémentation : un résumé de compaction est une sortie de modèle réinjectée avec le statut d&apos;un texte de confiance. C&apos;est un canal d&apos;injection interne, à journaliser et à relire comme n&apos;importe quelle entrée non fiable. Six rapports de ce type sont publiés dans le cadre de signalement</li></ul><p><a href="https://simonwillison.net/2026/Sep/17/compaction-summaries">Source : Simon Willison</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-18/share/10-le-modele-s-ecrit-un-prompt-dans-son-resume.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Shai-Hulud entre par la session de votre agent</title>
      <link>https://veilletech.fr/2026-09-17/articles/shai-hulud-entre-par-la-session-de-votre-agent.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/shai-hulud-entre-par-la-session-de-votre-agent.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>Mandiant a reconstitué un incident où un attaquant a détourné une session d&apos;assistant de code active chez un éditeur SaaS. L&apos;assistant a recommandé un paquet PyPI déjà empoisonné ; la recommandation acceptée a installé un infostealer, qui a volé les jetons OAuth GitHub. L&apos;attaquant s&apos;en est servi pour empoisonner un paquet de l&apos;espace de noms officiel de l&apos;entreprise, et le ver Shai-Hulud s&apos;est répandu sur une centaine de dépôts internes, emportant secrets et code source.</description>
      <content:encoded><![CDATA[<p>Mandiant a reconstitué un incident où un attaquant a détourné une session d'assistant de code active chez un éditeur SaaS. L'assistant a recommandé un paquet PyPI déjà empoisonné ; la recommandation acceptée a installé un infostealer, qui a volé les jetons OAuth GitHub. L'attaquant s'en est servi pour empoisonner un paquet de l'espace de noms officiel de l'entreprise, et le ver Shai-Hulud s'est répandu sur une centaine de dépôts internes, emportant secrets et code source.</p><ul><li>Chaîne complète : session d&apos;assistant de code détournée → recommandation d&apos;un paquet PyPI empoisonné → infostealer → vol de jetons OAuth GitHub → empoisonnement d&apos;un paquet de l&apos;espace de noms interne → ver Shai-Hulud sur ~100 dépôts</li><li>Les trois contrôles recommandés par Mandiant : vérifier les dépendances suggérées contre une allowlist et des sommes de contrôle cryptographiques ; tenir clés d&apos;API, jetons OAuth et secrets hors de portée directe des extensions ; router le trafic de dépendances par un miroir interne contrôlé</li><li>Contexte : en août 2026 un ver npm lié à Keyv avait empoisonné des centaines de paquets, et une variante de Shai-Hulud balaie 469 emplacements à la recherche d&apos;identifiants. Mandiant ne publie ni nom de paquet ni IOC pour cet incident-ci</li></ul><p><a href="https://thehackernews.com/2026/09/attacker-hijacks-ai-coding-assistant.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/01.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>WooCommerce : l&apos;upload ouvert dépose un shell</title>
      <link>https://veilletech.fr/2026-09-17/articles/woocommerce-l-upload-ouvert-depose-un-shell.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/woocommerce-l-upload-ouvert-depose-un-shell.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>WORDPRESS</category>
      <description>CVE-2026-27540, CVSS 9.8 : l&apos;extension WordPress payante WooCommerce Wholesale Lead Capture, plus de 6 000 installations, laisse un attaquant non authentifié téléverser un fichier PHP arbitraire. Wordfence dit avoir bloqué plus de 100 000 tentatives depuis juin 2026 et observe le dépôt d&apos;un shell.php. Le même avis décrit deux chaînes d&apos;exécution de code non authentifiées dans The Events Calendar, extension installée sur plus de 600 000 sites.</description>
      <content:encoded><![CDATA[<p>CVE-2026-27540, CVSS 9.8 : l'extension WordPress payante WooCommerce Wholesale Lead Capture, plus de 6 000 installations, laisse un attaquant non authentifié téléverser un fichier PHP arbitraire. Wordfence dit avoir bloqué plus de 100 000 tentatives depuis juin 2026 et observe le dépôt d'un shell.php. Le même avis décrit deux chaînes d'exécution de code non authentifiées dans The Events Calendar, extension installée sur plus de 600 000 sites.</p><ul><li>CVE-2026-27540, CVSS 9.8 — WooCommerce Wholesale Lead Capture, toutes versions jusqu&apos;à 2.0.3.1 incluse, 6 000+ installations. L&apos;action AJAX wwlc_file_upload_handler valide mal le type du fichier et accepte un paramètre file_settings forgé contenant du PHP, sans authentification. Charge déposée : shell.php</li><li>The Events Calendar (600 000+ sites) : CVE-2026-78159 (CVSS 9.8, versions ≤ 6.17.3, corrigée en 6.17.3.1) via parse_array, et CVE-2026-78006 (CVSS 9.8, versions ≤ 6.17.4, corrigée en 6.17.4.1) via is_safe_widget_instance. Déclenchables par la prévisualisation d&apos;un commentaire en attente, sans modération</li><li>Recherche d&apos;indices : fichiers PHP récents dans wp-content/uploads, et /wp-admin/admin-ajax.php dans les logs avec wwlc_file_upload_handler depuis 92.241.13.213, 31.59.129.150, 92.241.13.140, 23.137.105.214, 23.180.120.140, 104.194.9.138, 187.75.114.36, 114.10.43.203, 37.114.144.209, 2a0f:85c1:840:5389::1</li></ul><p><a href="https://thehackernews.com/2026/09/attackers-exploit-woocommerce-wholesale.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/02.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Une extension prend la main sur votre IA</title>
      <link>https://veilletech.fr/2026-09-17/articles/une-extension-prend-la-main-sur-votre-ia.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/une-extension-prend-la-main-sur-votre-ia.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>Forever Security a montré qu&apos;une extension disposant de deux permissions banales — modification des pages et declarativeNetRequest — peut injecter du code dans la page de confiance d&apos;un assistant IA et piloter celui-ci en se faisant passer pour son éditeur. Cinq produits testés : Gemini Live dans Chrome, Perplexity Comet, Microsoft Edge, Opera Neon et l&apos;extension Claude in Chrome.</description>
      <content:encoded><![CDATA[<p>Forever Security a montré qu'une extension disposant de deux permissions banales — modification des pages et declarativeNetRequest — peut injecter du code dans la page de confiance d'un assistant IA et piloter celui-ci en se faisant passer pour son éditeur. Cinq produits testés : Gemini Live dans Chrome, Perplexity Comet, Microsoft Edge, Opera Neon et l'extension Claude in Chrome.</p><ul><li>CVE-2026-0628 (CVSS 8.8) pour Chrome, corrigée en janvier 2026 dans la 143.0.7499.192 ; CVE-2026-55945 (CVSS 4.2) pour Edge, corrigée le 2 juillet 2026 dans la 150.0.4078.48. Comet, Opera Neon et Claude in Chrome : aucun CVE attribué</li><li>Portée par produit — Chrome : fichiers, caméra, micro, captures d&apos;écran ; Comet : fichiers, pilotage de l&apos;IA, captures ; Edge, Opera Neon, Claude in Chrome : pilotage de l&apos;IA seul</li><li>Les deux permissions abusées sont celles d&apos;un bloqueur de publicité ordinaire : modification des pages web et declarativeNetRequest. Primes cumulées ~20 000 $ (7 000 Chrome, 7 000 Comet, 5 000 Edge, 900 Opera, 600 Claude). Aucune exploitation observée au 16 septembre 2026</li></ul><p><a href="https://thehackernews.com/2026/09/one-extension-could-hijack-ai.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/03.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Parallels : root, et rien à installer sur Intel</title>
      <link>https://veilletech.fr/2026-09-17/articles/parallels-root-et-rien-a-installer-sur-intel.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/parallels-root-et-rien-a-installer-sur-intel.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>CVE-2026-90894, CVSS 7.8 : un utilisateur local sans droits d&apos;administration obtient root sur un Mac via Parallels Desktop. Le service privilégié prl_disp_service écoute sur une socket accessible en écriture à tous et construit une commande tar à partir d&apos;un chemin de dossier ; un guillemet double y injecte l&apos;option --use-compress-program, exécutée en root. Le correctif n&apos;existe que dans la branche 27, réservée à Apple Silicon.</description>
      <content:encoded><![CDATA[<p>CVE-2026-90894, CVSS 7.8 : un utilisateur local sans droits d'administration obtient root sur un Mac via Parallels Desktop. Le service privilégié prl_disp_service écoute sur une socket accessible en écriture à tous et construit une commande tar à partir d'un chemin de dossier ; un guillemet double y injecte l'option --use-compress-program, exécutée en root. Le correctif n'existe que dans la branche 27, réservée à Apple Silicon.</p><ul><li>CVE-2026-90894, CVSS 7.8, baptisée « ParaShells » par JFrog (Yuval Moravchick), qui s&apos;est attribué l&apos;identifiant. Versions affectées : Parallels Desktop 26.4.0 et antérieures ; démonstration sur la 26.4.0 build 57513. JFrog nomme la 27.0.0 comme corrigée, mais sa chronologie la date du 1er septembre quand les notes Parallels la datent du 25 août : installer la 27.0.1 (build 58670) couvre les deux lectures</li><li>Mac Intel : la 27 exige Apple Silicon ; la dernière build installable est la 26.4.2, dont JFrog confirme qu&apos;elle ne contient pas le correctif de la commande d&apos;extraction, malgré la promesse Parallels du 25 août de poursuivre les mises à jour de sécurité sur la branche 26</li><li>Vérification : `defaults read &quot;/Applications/Parallels Desktop.app/Contents/Info&quot; CFBundleShortVersionString` pour la version, `ls -l /var/run/prl_disp_service.socket` pour les droits de la socket</li></ul><p><a href="https://thehackernews.com/2026/09/parallels-desktop-flaw-lets-non-admin.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/04.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Symfony 8.2 : des sous-commandes à la Docker</title>
      <link>https://veilletech.fr/2026-09-17/articles/symfony-8-2-des-sous-commandes-a-la-docker.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/symfony-8-2-des-sous-commandes-a-la-docker.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>SYMFONY</category>
      <description>Symfony 8.2 ajoute les sous-commandes séparées par des espaces (`tenant users import`) à côté des namespaces à deux-points historiques. Ce n&apos;est pas un alias : chaque niveau analyse ses propres options, une commande parente peut exister sans execute() pour porter des options communes, et l&apos;objet CommandChain donne à l&apos;enfant l&apos;entrée de son parent.</description>
      <content:encoded><![CDATA[<p>Symfony 8.2 ajoute les sous-commandes séparées par des espaces (`tenant users import`) à côté des namespaces à deux-points historiques. Ce n'est pas un alias : chaque niveau analyse ses propres options, une commande parente peut exister sans execute() pour porter des options communes, et l'objet CommandChain donne à l'enfant l'entrée de son parent.</p><ul><li>`php bin/console tenant --name=acme users import customers.csv --dry-run` : les options se placent à leur niveau, alors que la forme `tenant:users:import` n&apos;accepte les options qu&apos;à la fin</li><li>`#[AsCommand]` se pose désormais sur des méthodes, ce qui regroupe un arbre entier dans une classe ; le paramètre `options:` de l&apos;attribut porte les `InputOption` communes, et `CommandChain::getInput(&apos;tenant&apos;)` (ou `getInput(TenantCommand::class)`) lit l&apos;entrée du parent</li><li>PR #65825 (sous-commandes) et #65853 (groupes via `#[AsCommand]`), par Nicolas Grekas. `Application::getCommandChain()` expose la chaîne aux écouteurs ; `ApplicationTester` accepte les valeurs positionnelles ; `deploy -- rollback` force `rollback` comme argument et non comme sous-commande</li></ul><p><a href="https://symfony.com/blog/new-in-symfony-8-2-console-sub-commands">Source : Symfony</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/05.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Laravel 13.32 : du temps réel sans WebSocket</title>
      <link>https://veilletech.fr/2026-09-17/articles/laravel-13-32-du-temps-reel-sans-websocket.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/laravel-13-32-du-temps-reel-sans-websocket.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>LARAVEL</category>
      <description>Laravel 13.32 ajoute un driver de broadcasting Mercure, qui pousse les messages en Server-Sent Events sur du HTTP ordinaire plutôt qu&apos;en WebSocket. Couplé à FrankenPHP, dont le hub Mercure est intégré, le driver fonctionne sans URL ni secret à configurer : le temps réel cesse d&apos;être un service séparé à déployer.</description>
      <content:encoded><![CDATA[<p>Laravel 13.32 ajoute un driver de broadcasting Mercure, qui pousse les messages en Server-Sent Events sur du HTTP ordinaire plutôt qu'en WebSocket. Couplé à FrankenPHP, dont le hub Mercure est intégré, le driver fonctionne sans URL ni secret à configurer : le temps réel cesse d'être un service séparé à déployer.</p><ul><li>Driver Mercure : configuration par URL, URL publique, secret JWT et clé de chiffrement ; canaux de présence supportés et canaux privés chiffrables de bout en bout. Avec FrankenPHP, le hub intégré dispense d&apos;URL et de secret</li><li>`Storage::copyToDisk()` et `Storage::moveToDisk()` déplacent un fichier entre disques ; le chemin de destination est optionnel et les deux acceptent une instance de filesystem à la place d&apos;un nom de disque</li><li>`Queue::pause()`, `Queue::resume()` et `Queue::pauseFor()` acceptent désormais des enums PHP, comme le faisaient déjà les attributs de queue et de connexion des jobs. La 13.32.0 compte plus de 40 commits</li></ul><p><a href="https://laravel-news.com/laravel-13-32-0">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/06.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Node 26.9 : la FFI par défaut, et un bench</title>
      <link>https://veilletech.fr/2026-09-17/articles/node-26-9-la-ffi-par-defaut-et-un-bench.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/node-26-9-la-ffi-par-defaut-et-un-bench.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>NODE</category>
      <description>Node.js 26.9.0 active la FFI par défaut : appeler une bibliothèque C depuis JavaScript ne demande plus d&apos;addon natif ni de drapeau. La même version fait entrer un module `node:bench` complet dans le cœur, avec CLI et reporters, et ajoute un système de fichiers virtuel branché sur les chargeurs CJS et ESM, capable de lire dans un zip.</description>
      <content:encoded><![CDATA[<p>Node.js 26.9.0 active la FFI par défaut : appeler une bibliothèque C depuis JavaScript ne demande plus d'addon natif ni de drapeau. La même version fait entrer un module `node:bench` complet dans le cœur, avec CLI et reporters, et ajoute un système de fichiers virtuel branché sur les chargeurs CJS et ESM, capable de lire dans un zip.</p><ul><li>FFI activée par défaut (#65475) et module `node:bench` complet (#65606) : CLI, reporters, `runFile()`, `context.diagnostic()`</li><li>VFS intégré aux chargeurs CJS/ESM (#63653), avec ZipProvider (#64915) et chargement d&apos;addons natifs depuis l&apos;archive ; API DTLS expérimentale (#63182) ; Web Workers natifs avec support ref/unref et intégration WPT (#64894)</li><li>Crypto : API MAC générique (#65553) et découverte des ciphers et des hashes exposés par les providers OpenSSL (#65484). perf_hooks gagne `meanCI` sur les histogrammes et l&apos;export/import CBOR (#65606, #65434). Branche Current, pas LTS</li></ul><p><a href="https://nodejs.org/en/blog/release/v26.9.0">Source : Node.js</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/07.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>800 000 lignes de Rust, écrites par l&apos;agent</title>
      <link>https://veilletech.fr/2026-09-17/articles/800-000-lignes-de-rust-ecrites-par-l-agent.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/800-000-lignes-de-rust-ecrites-par-l-agent.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>RUST</category>
      <description>GitHub a porté le runtime de Copilot de TypeScript vers Rust entre le 12 mai et le 21 août 2026, essentiellement à une personne, avec des agents pour écrire le code : 832 378 lignes de Rust de production et 468 689 lignes de tests unitaires, livrées en 128 pull requests et 135 versions publiques. Le cycle création-session-tour-destruction passe de 5,25 s à 55,3 ms en processus, et la mémoire de dix clients de 1 383 Mo à 126 Mo. Coût en tokens : environ 120 000 $.</description>
      <content:encoded><![CDATA[<p>GitHub a porté le runtime de Copilot de TypeScript vers Rust entre le 12 mai et le 21 août 2026, essentiellement à une personne, avec des agents pour écrire le code : 832 378 lignes de Rust de production et 468 689 lignes de tests unitaires, livrées en 128 pull requests et 135 versions publiques. Le cycle création-session-tour-destruction passe de 5,25 s à 55,3 ms en processus, et la mémoire de dix clients de 1 383 Mo à 126 Mo. Coût en tokens : environ 120 000 $.</p><ul><li>Volume : ~130 000 lignes de TypeScript estimées au départ, ~430 000 réellement passées par le port ; 832 378 lignes de Rust de production, 468 689 de tests unitaires, 174 675 de tests E2E restés en TypeScript. 128 PR de portage, 135 versions publiques (100 pré-versions, 35 stables), du 12/05 au 21/08/2026</li><li>Gains mesurés via le SDK C# sur un serveur de complétion local : client + session + un tour, 5,25 s → 1,33 s hors processus (4,0×) → 292 ms en processus (18,0×) ; débit de 7,55 à 120,0 cycles de session par seconde ; mémoire résidente de dix clients, 1 383 Mo → 126 Mo (−91 %) ; CPU agrégé 312 s → ~110 s</li><li>Coût et sûreté : ~136,3 milliards de tokens (~130,6 Md en lecture de cache, ~600 M en sortie) pour ~120 000 $ ; 5 116 compactions de contexte ; 4 478 `cargo check` dont 87,1 % propres ; 158 blocs `unsafe` dans 36 fichiers, tous aux frontières externes (ABI C, Windows, POSIX, SQLite, dlopen) et aucun impliqué dans une régression connue ; ~60 paquets npm supprimés</li></ul><p><a href="https://github.blog/ai-and-ml/generative-ai/migrating-the-github-copilot-runtime-to-rust-using-copilot">Source : GitHub Blog</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/08.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>DuckDB parle enfin à Claude Code</title>
      <link>https://veilletech.fr/2026-09-17/articles/duckdb-parle-enfin-a-claude-code.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/duckdb-parle-enfin-a-claude-code.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>DUCKDB</category>
      <description>L&apos;équipe DuckDB publie un lot de skills officiels pour Claude Code. Au lieu d&apos;écrire un script Python pour inspecter un fichier de données — et d&apos;y deviner les colonnes et les types —, l&apos;agent interroge DuckDB directement en SQL, lit l&apos;erreur quand la requête échoue et corrige lui-même.</description>
      <content:encoded><![CDATA[<p>L'équipe DuckDB publie un lot de skills officiels pour Claude Code. Au lieu d'écrire un script Python pour inspecter un fichier de données — et d'y deviner les colonnes et les types —, l'agent interroge DuckDB directement en SQL, lit l'erreur quand la requête échoue et corrige lui-même.</p><ul><li>Installation : `/plugin marketplace add duckdb/duckdb-skills` puis `/plugin install duckdb-skills@duckdb-skills`. Dépôt : github.com/duckdb/duckdb-skills. La CLI DuckDB doit être installée, sinon le skill `install-duckdb` la propose</li><li>Skills fournis : `attach-db`, `query` (SQL ou langage naturel), `read-file` (CSV, JSON, Parquet, Excel, SQLite, spatial), `convert-file`, `s3-explore` (S3, GCS, Azure, MinIO sans téléchargement), `spatial`, `duckdb-docs`, `read-memories`, `install-duckdb`</li><li>Réservé à Claude Code ; aucun chiffre publié sur les tokens ou le temps économisés, et aucune version minimale de DuckDB indiquée</li></ul><p><a href="https://duckdb.org/2026/09/16/duckdb-skills.html">Source : DuckDB</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/09.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Un modèle 4B optimise vos plans Postgres</title>
      <link>https://veilletech.fr/2026-09-17/articles/un-modele-4b-optimise-vos-plans-postgres.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-17/articles/un-modele-4b-optimise-vos-plans-postgres.html</guid>
      <pubDate>Thu, 17 Sep 2026 07:10:00 GMT</pubDate>
      <category>POSTGRES</category>
      <description>Rohan Bansal a entraîné un modèle de 4 milliards de paramètres à produire des plans d&apos;exécution Postgres meilleurs que ceux de l&apos;optimiseur, par affinage supervisé puis apprentissage par renforcement agentique avec LoRA. Sur le benchmark JOB : accélération géométrique moyenne de 1,81× et 44,7 % de latence en moins sur les requêtes à jointures nombreuses, pour 1 200 $ d&apos;expérience. Le code est publié, pas les poids.</description>
      <content:encoded><![CDATA[<p>Rohan Bansal a entraîné un modèle de 4 milliards de paramètres à produire des plans d'exécution Postgres meilleurs que ceux de l'optimiseur, par affinage supervisé puis apprentissage par renforcement agentique avec LoRA. Sur le benchmark JOB : accélération géométrique moyenne de 1,81× et 44,7 % de latence en moins sur les requêtes à jointures nombreuses, pour 1 200 $ d'expérience. Le code est publié, pas les poids.</p><ul><li>Modèle de base : `empero-ai/Qwen3.8-4B-Distill`, une distillation de Qwen 3.5 4B par le laboratoire allemand Empero. LoRA de 21,2 millions de paramètres entraînables, 42,5 Mo, contre 4,66 milliards de poids figés. SFT sur 100 trajectoires GPT-6 Astra (382 lignes après dépliage), puis RL agentique sur 1 200 mises à jour</li><li>Benchmark JOB (113 requêtes join-heavy sur IMDb), meilleur des 15 candidats : 1,81× d&apos;accélération géométrique moyenne, 1,81× sur le workload total, −44,7 % de latence cumulée, 68 gains et 0 régression. Au départ, le modèle 4B ne produisait aucun plan valide pour 99 des 113 requêtes</li><li>Les plans sont imposés via l&apos;extension `pg_hint_plan` (hints en commentaire au-dessus du SQL) : `Leading` pour l&apos;ordre des jointures, hints de scan, `Parallel`. Coût total 1 200 $ — ~800 $ de nœud 2× H100 SXM chez Lambda pendant ~95 h, ~400 $ d&apos;API OpenAI. Code sur github.com/polyphilz/qorl, poids non publiés</li></ul><p><a href="https://rohanbansal.com/qorl">Source : Rohan Bansal</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-17/images/10.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Vite exposé : le scan siphonne vos clés cloud</title>
      <link>https://veilletech.fr/2026-09-16/articles/vite-expose-le-scan-siphonne-vos-cles-cloud.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/vite-expose-le-scan-siphonne-vos-cles-cloud.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>F5 Labs a observé en août 2026 une campagne de scan massif visant les serveurs de développement Vite exposés à internet, via CVE-2026-39364 (CVSS 8.2). La faille contourne server.fs.deny en ajoutant ?raw, ?import&amp;raw ou ?import&amp;url&amp;inline à une requête sur /@fs/, et renvoie le fichier en clair dans un HTTP 200 : .env, identifiants AWS, profils Azure, états Terraform. Vite n&apos;écoute sur le réseau que si on l&apos;y force — --host, server.host, ou un mappage de ports Docker trop large.</description>
      <content:encoded><![CDATA[<p>F5 Labs a observé en août 2026 une campagne de scan massif visant les serveurs de développement Vite exposés à internet, via CVE-2026-39364 (CVSS 8.2). La faille contourne server.fs.deny en ajoutant ?raw, ?import&raw ou ?import&url&inline à une requête sur /@fs/, et renvoie le fichier en clair dans un HTTP 200 : .env, identifiants AWS, profils Azure, états Terraform. Vite n'écoute sur le réseau que si on l'y force — --host, server.host, ou un mappage de ports Docker trop large.</p><ul><li>CVE-2026-39364, CVSS 8.2, avis Vite GHSA-v2wj-q39q-566r (avril 2026) : les suffixes ?raw, ?import&amp;raw et ?import&amp;url&amp;inline renvoient un HTTP 200 sur des fichiers refusés par server.fs.deny</li><li>Données réclamées via /@fs/ : .env, identifiants et sauvegardes AWS, profils Azure, terraform.tfstate, serverless.yml, /etc/passwd, /proc/self/environ, /proc/1/environ et /proc/self/cwd/.env</li><li>Les requêtes usurpent Googlebot, ClaudeBot, GPTBot, PerplexityBot, OAI-SearchBot et Amazonbot, forgent X-Forwarded-For et X-Real-IP (34.94.237[.]62, 104.28.219[.]193) et partent des plages GCP 34.x et 35.x</li></ul><p><a href="https://thehackernews.com/2026/09/mass-scanning-campaign-exploits-vite.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/01.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>LiteSpeed : un compte mutualisé prend le root</title>
      <link>https://veilletech.fr/2026-09-16/articles/litespeed-un-compte-mutualise-prend-le-root.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/litespeed-un-compte-mutualise-prend-le-root.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>cPanel a publié le 14 septembre 2026 un avis sur LiteSpeed Web Server Enterprise : un compte d&apos;hébergement peu privilégié peut obtenir root sur un serveur mutualisé, en franchissant les cloisons entre comptes, CageFS compris. Le correctif est la version 6.3.7, parue le 11 septembre, à installer à la main — ni CVE, ni score, ni indicateurs de compromission n&apos;accompagnent l&apos;avis, et le mécanisme n&apos;est décrit nulle part.</description>
      <content:encoded><![CDATA[<p>cPanel a publié le 14 septembre 2026 un avis sur LiteSpeed Web Server Enterprise : un compte d'hébergement peu privilégié peut obtenir root sur un serveur mutualisé, en franchissant les cloisons entre comptes, CageFS compris. Le correctif est la version 6.3.7, parue le 11 septembre, à installer à la main — ni CVE, ni score, ni indicateurs de compromission n'accompagnent l'avis, et le mécanisme n'est décrit nulle part.</p><ul><li>Versions antérieures à 6.3.7 touchées ; correctif publié le 11 septembre 2026, avis cPanel le 14. Commande officielle : /usr/local/lsws/admin/misc/lsup.sh -f -v 6.3.7</li><li>Forcer une version sort le serveur du canal stable : le remettre demande touch /usr/local/lsws/autoupdate/follow_stable</li><li>Aucun CVE ni score au 15 septembre ; l&apos;avis ne vise que l&apos;édition Enterprise, pas OpenLiteSpeed. Troisième élévation vers root depuis mai après CVE-2026-48172 et CVE-2026-54420, toutes deux exploitées et inscrites au catalogue KEV de la CISA</li></ul><p><a href="https://thehackernews.com/2026/09/litespeed-enterprise-flaw-could-let-one.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/02.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Un jeton oublié ouvre le GitHub de Baseten</title>
      <link>https://veilletech.fr/2026-09-16/articles/un-jeton-oublie-ouvre-le-github-de-baseten.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/un-jeton-oublie-ouvre-le-github-de-baseten.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>L&apos;agent de pentest autonome Strix a trouvé, en 25 minutes et sans identifiants, un registre Harbor public sur un sous-domaine de Baseten, puis un jeton GitHub personnel valide dans l&apos;historique de build d&apos;une image. Le jeton du compte basetenbot, de portée repo, donnait admin sur le dépôt produit, le dépôt GitOps des clusters et le tap Homebrew. L&apos;étape de build datait du 3 mars 2023 ; le jeton fonctionnait toujours en juillet 2026.</description>
      <content:encoded><![CDATA[<p>L'agent de pentest autonome Strix a trouvé, en 25 minutes et sans identifiants, un registre Harbor public sur un sous-domaine de Baseten, puis un jeton GitHub personnel valide dans l'historique de build d'une image. Le jeton du compte basetenbot, de portée repo, donnait admin sur le dépôt produit, le dépôt GitOps des clusters et le tap Homebrew. L'étape de build datait du 3 mars 2023 ; le jeton fonctionnait toujours en juillet 2026.</p><ul><li>Le jeton était dans history[].created_by de la config de l&apos;image, pas dans les couches : nettoyer un fichier ne suffit pas, il faut lire docker history --no-trunc</li><li>Motif en cause : ARG GITHUB_TOKEN puis RUN avec expansion de la variable — Docker enregistre la valeur dans les métadonnées ; le correctif est un montage de secret BuildKit (RUN --mount=type=secret)</li><li>Chronologie : signalé le 13 juillet 2026 à 23 h 10, projet Harbor rendu privé et jeton révoqué le 14 juillet à 16 h 34, dossier clos le 17 juillet</li></ul><p><a href="https://strix.ai/blog/baseten-harbor-github-pat-takeover">Source : Strix</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/03.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>PHP 8.6 : application partielle et clamp</title>
      <link>https://veilletech.fr/2026-09-16/articles/php-8-6-application-partielle-et-clamp.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/php-8-6-application-partielle-et-clamp.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>PHP</category>
      <description>PHP 8.6 est en bêta, avec gel des fonctionnalités le 22 septembre 2026 et sortie le 19 novembre. Au programme : l&apos;application partielle de fonctions (RFC v2 adoptée 33 voix contre 0 après un refus en 2021), une fonction clamp(), une classe Time\Duration à la nanoseconde, les propriétés readonly avec valeur par défaut et des DocComments par paramètre. Trois réglages de session passent à des valeurs sûres pour les nouvelles installations.</description>
      <content:encoded><![CDATA[<p>PHP 8.6 est en bêta, avec gel des fonctionnalités le 22 septembre 2026 et sortie le 19 novembre. Au programme : l'application partielle de fonctions (RFC v2 adoptée 33 voix contre 0 après un refus en 2021), une fonction clamp(), une classe Time\Duration à la nanoseconde, les propriétés readonly avec valeur par défaut et des DocComments par paramètre. Trois réglages de session passent à des valeurs sûres pour les nouvelles installations.</p><ul><li>Calendrier : gel des fonctionnalités le 22 septembre 2026, RC1 le 24 septembre, RC4 le 5 novembre, GA le 19 novembre. Release managers : Daniel Scherzer, Matteo Beccati, Joe Ferguson</li><li>Nouveautés : application partielle ($fn = str_replace(&apos; &apos;, &apos;-&apos;, ?)), clamp($v, min:, max:), Time\Duration (final readonly, nanoseconde), readonly avec défaut, DocComments de paramètres lus par ReflectionParameter::getDocComment(), namespace Io\Poll (epoll/kqueue/event ports/WSAPoll), enum SortDirection, __debugInfo() sur les enums, error_mode des flux avec 50+ codes</li><li>Sessions, nouvelles installations seulement : session.use_strict_mode 0 → 1, session.cookie_httponly 0 → 1, session.cookie_samesite non défini → Lax</li></ul><p><a href="https://laravel-news.com/php-8-6">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/04.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Symfony 8.2 gère vos clés de chiffrement</title>
      <link>https://veilletech.fr/2026-09-16/articles/symfony-8-2-gere-vos-cles-de-chiffrement.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/symfony-8-2-gere-vos-cles-de-chiffrement.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>SYMFONY</category>
      <description>Symfony 8.2, attendu fin novembre 2026, ajoute le composant KeyManagement : une interface unique devant AWS KMS, Azure Key Vault, Google Cloud KMS et HashiCorp Vault, avec des backends libsodium et OpenSSL pour le développement. Le mode enveloppe chiffre localement en AES-256-GCM avec une clé de données fournie par le KMS, ce qui lève la limite de taille du mode direct (4 Ko sur AWS KMS). Deux ponts Doctrine apportent le chiffrement de colonne et l&apos;index aveugle qui la rend cherchable.</description>
      <content:encoded><![CDATA[<p>Symfony 8.2, attendu fin novembre 2026, ajoute le composant KeyManagement : une interface unique devant AWS KMS, Azure Key Vault, Google Cloud KMS et HashiCorp Vault, avec des backends libsodium et OpenSSL pour le développement. Le mode enveloppe chiffre localement en AES-256-GCM avec une clé de données fournie par le KMS, ce qui lève la limite de taille du mode direct (4 Ko sur AWS KMS). Deux ponts Doctrine apportent le chiffrement de colonne et l'index aveugle qui la rend cherchable.</p><ul><li>Paquets : symfony/key-management (cœur), plus symfony/aws-key-management, symfony/azure-keyvault-key-management, symfony/google-cloud-key-management et symfony/hashicorp-vault-key-management. Composant marqué expérimental : l&apos;API peut changer en version mineure</li><li>Doctrine : symfony/doctrine-dbal-key-management fournit EncryptedType, symfony/doctrine-orm-key-management ajoute l&apos;attribut #[BlindIndexed] — indispensable, le chiffrement étant randomisé, WHERE email = ? ne correspondrait jamais</li><li>Option key_management.store : les clés de données vont en table, chaque ligne ne stocke qu&apos;une référence de 16 octets, et key-management:rewrap-data-keys change de clé maîtresse ou de fournisseur sans réécrire les lignes chiffrées</li></ul><p><a href="https://symfony.com/blog/new-in-symfony-8-2-keymanagement-component">Source : Symfony</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/05.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Laravel MCP 1.0 : serveurs sans état et PKCE</title>
      <link>https://veilletech.fr/2026-09-16/articles/laravel-mcp-1-0-serveurs-sans-etat-et-pkce.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/laravel-mcp-1-0-serveurs-sans-etat-et-pkce.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>LARAVEL</category>
      <description>Laravel MCP 1.0 est la première version stable du paquet officiel pour exposer des serveurs Model Context Protocol depuis une application Laravel. Elle apporte la révision de protocole 2026-07-28 : serveurs sans état, catalogues d&apos;outils cherchables, indications de cache et OAuth avec PKCE obligatoire. La migration depuis 0.9 impose de nouveaux en-têtes sur chaque requête POST, y compris dans les tests.</description>
      <content:encoded><![CDATA[<p>Laravel MCP 1.0 est la première version stable du paquet officiel pour exposer des serveurs Model Context Protocol depuis une application Laravel. Elle apporte la révision de protocole 2026-07-28 : serveurs sans état, catalogues d'outils cherchables, indications de cache et OAuth avec PKCE obligatoire. La migration depuis 0.9 impose de nouveaux en-têtes sur chaque requête POST, y compris dans les tests.</p><ul><li>Protocole 2026-07-28 : server/discover remplace initialize ; MCP-Session-Id, Request::sessionId(), Request::setSessionId() et l&apos;événement SessionInitialized sont supprimés. Les clients en initialize reçoivent encore 2025-11-25 ou 2025-06-18</li><li>Middleware ValidateMcpHeaders sur les routes Mcp::web() : tout POST exige MCP-Protocol-Version et Mcp-Method ; tools/call, prompts/get et resources/read exigent en plus Mcp-Name. Un écart renvoie HTTP 400 avec le code JSON-RPC -32020</li><li>OAuth : PKCE obligatoire (OAuthException si code_challenge_methods_supported est absent), Client ID Metadata Documents servis sur GET /mcp/oauth/{client}/client-metadata.json, et $token-&gt;clientSecret peut valoir null — la colonne qui le stocke doit l&apos;accepter</li></ul><p><a href="https://laravel-news.com/laravel-mcp-1-0">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/06.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Laravel Vet relit Composer avant l&apos;installation</title>
      <link>https://veilletech.fr/2026-09-16/articles/laravel-vet-relit-composer-avant-l-installation.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/laravel-vet-relit-composer-avant-l-installation.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>COMPOSER</category>
      <description>Laravel Vet est un greffon Composer officiel qui affiche le code que composer update s&apos;apprête à écrire dans vendor/, paquet par paquet, et enregistre les paquets approuvés dans un fichier vet.json à committer. Il peut déléguer la lecture à l&apos;agent de code installé localement, qui rend un verdict PASS, FAIL, WARN ou SKIP. Un paquet non approuvé fait sortir la commande en erreur, ce qui casse le build tant que personne n&apos;a regardé.</description>
      <content:encoded><![CDATA[<p>Laravel Vet est un greffon Composer officiel qui affiche le code que composer update s'apprête à écrire dans vendor/, paquet par paquet, et enregistre les paquets approuvés dans un fichier vet.json à committer. Il peut déléguer la lecture à l'agent de code installé localement, qui rend un verdict PASS, FAIL, WARN ou SKIP. Un paquet non approuvé fait sortir la commande en erreur, ce qui casse le build tant que personne n'a regardé.</p><ul><li>Installation : PHP 8.4 minimum, composer require laravel/vet --dev, puis ./vendor/bin/vet --init qui marque l&apos;existant comme fiable et écrit vet.json</li><li>vet.json enregistre pour chaque paquet sa version et un hash tree-v2 couvrant tous les fichiers : une release modifiée sans changement de numéro déclenche une nouvelle revue</li><li>Verdicts de l&apos;agent (Claude Code, Codex, Gemini, opencode) : PASS revue faite sans attaque trouvée, FAIL avec fichier et raison, WARN revue incomplète (fichier trop gros ou binaire), SKIP rien d&apos;envoyé. Le paquet est en bêta ; Heimdall couvre le volet complémentaire de l&apos;âge minimum des dépendances</li></ul><p><a href="https://laravel-news.com/laravel-vet">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/07.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Rester indexé sans nourrir les IA</title>
      <link>https://veilletech.fr/2026-09-16/articles/rester-indexe-sans-nourrir-les-ia.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/rester-indexe-sans-nourrir-les-ia.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>WEB</category>
      <description>Cloudflare a activé le 15 septembre 2026 un réglage Disallow AI Training qui permet de rester indexé par les moteurs de recherche tout en refusant l&apos;entraînement, y compris pour les crawlers à double usage d&apos;Apple, Google et Microsoft. Le réglage publie la directive dans robots.txt et le réseau bloque les opérateurs qui l&apos;ignorent. Effet de bord à connaître : le réglage Block s&apos;applique désormais aussi aux crawlers mixtes, donc il coupe le référencement.</description>
      <content:encoded><![CDATA[<p>Cloudflare a activé le 15 septembre 2026 un réglage Disallow AI Training qui permet de rester indexé par les moteurs de recherche tout en refusant l'entraînement, y compris pour les crawlers à double usage d'Apple, Google et Microsoft. Le réglage publie la directive dans robots.txt et le réseau bloque les opérateurs qui l'ignorent. Effet de bord à connaître : le réglage Block s'applique désormais aussi aux crawlers mixtes, donc il coupe le référencement.</p><ul><li>Quatre réglages pour le domaine : Allow, Disallow AI Training, Block on pages with ads, Block. Disallow AI Training n&apos;existe que pour le comportement Training, pas pour Search ni Agent, et bloque en plus tous les crawlers d&apos;entraînement purs (Amazon, Anthropic, Meta, OpenAI)</li><li>Chiffres Cloudflare : moins de 1 % des sites bloquent les bots de recherche, 17 % activent un blocage de l&apos;entraînement</li><li>Dépréciations et migration : Block AI Bots et Managed Robots.txt disparaissent au profit des contrôles Search/Training/Agent et de Bot Preference Sync ; un ancien réglage Block devient Training = Disallow AI Training, Search = Allow</li></ul><p><a href="https://blog.cloudflare.com/accountable-mixed-use-ai-crawlers">Source : Cloudflare</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/08.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Dense ou MoE : ce que ça change à servir</title>
      <link>https://veilletech.fr/2026-09-16/articles/dense-ou-moe-ce-que-ca-change-a-servir.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/dense-ou-moe-ce-que-ca-change-a-servir.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>IA</category>
      <description>NVIDIA publie un comparatif chiffré entre modèles denses et Mixture-of-Experts, du point de vue de celui qui sert le modèle. Le point central : le MoE découple la mémoire du calcul — la VRAM suit les paramètres totaux, le calcul ne suit que les paramètres actifs. À taille totale égale (~30 B, ~60 Go en BF16), Nemotron 3.5 Lightning (3 B actifs) débite 235,7 à 494,2 tokens par seconde contre 36,9 à 222,4 pour Gemma 4 31B dense, mais score 24 contre 30 à l&apos;indice d&apos;intelligence d&apos;Artificial Analysis.</description>
      <content:encoded><![CDATA[<p>NVIDIA publie un comparatif chiffré entre modèles denses et Mixture-of-Experts, du point de vue de celui qui sert le modèle. Le point central : le MoE découple la mémoire du calcul — la VRAM suit les paramètres totaux, le calcul ne suit que les paramètres actifs. À taille totale égale (~30 B, ~60 Go en BF16), Nemotron 3.5 Lightning (3 B actifs) débite 235,7 à 494,2 tokens par seconde contre 36,9 à 222,4 pour Gemma 4 31B dense, mais score 24 contre 30 à l'indice d'intelligence d'Artificial Analysis.</p><ul><li>Comparatif (Artificial Analysis, entrée 10 K tokens, relevé le 31 août 2026) : Gemma 4 31B dense, ~61 Go BF16 / ~16 Go en 4 bits, 36,9-222,4 t/s, 0,40 $/M ; Nemotron 3.5 Lightning MoE+Mamba-2, 30 B total et 3 B actifs, ~60 Go BF16 / ~20 Go en 4 bits, 235,7-494,2 t/s, 0,22 $/M ; Qwen3.8-27B dense, 46,8 t/s, 3,00 $/M ; Mistral Small 4, 119 B total et 6 B actifs, ~121 Go FP8 sur 4×H100</li><li>Lightning va 4 à 5 fois plus vite que Qwen3.8-27B pour un quatorzième du prix, avec un indice d&apos;intelligence de 24 contre 52 : bon pour une couche d&apos;exécution agentique à volume, mauvais quand une seule passe de raisonnement décide du résultat</li><li>Trois limites : tous les experts doivent résider en VRAM, ce qui laisse moins de place au cache KV ; l&apos;avantage de latence se réduit à forte concurrence ; un fine-tuning complet déséquilibre le routeur — geler le routeur ou passer par LoRA/PEFT</li></ul><p><a href="https://developer.nvidia.com/blog/dense-vs-moe-models-active-parameters-throughput-and-when-to-choose-each">Source : NVIDIA Developer</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/09.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Votre agent a réussi. Recommencera-t-il ?</title>
      <link>https://veilletech.fr/2026-09-16/articles/votre-agent-a-reussi-recommencera-t-il.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-16/articles/votre-agent-a-reussi-recommencera-t-il.html</guid>
      <pubDate>Wed, 16 Sep 2026 07:20:00 GMT</pubDate>
      <category>IA</category>
      <description>Une équipe d&apos;IBM Research mesure l&apos;écart entre la réussite moyenne d&apos;un agent et sa réussite reproductible : sur AppWorld test_normal, un agent ReAct avec GPT-4.1 affiche 77,4 % en Mean@5 mais seulement 53,0 % en Pass^5, soit 24,4 points d&apos;écart, à température 0. Leur Consistency Analyzer rejoue chaque point de décision d&apos;une trace enregistrée pour repérer ceux qui sont à un tirage de basculer, et les consignes qui en découlent ramènent l&apos;écart à 12,0 points.</description>
      <content:encoded><![CDATA[<p>Une équipe d'IBM Research mesure l'écart entre la réussite moyenne d'un agent et sa réussite reproductible : sur AppWorld test_normal, un agent ReAct avec GPT-4.1 affiche 77,4 % en Mean@5 mais seulement 53,0 % en Pass^5, soit 24,4 points d'écart, à température 0. Leur Consistency Analyzer rejoue chaque point de décision d'une trace enregistrée pour repérer ceux qui sont à un tirage de basculer, et les consignes qui en découlent ramènent l'écart à 12,0 points.</p><ul><li>Mean@5 77,4 % contre Pass^5 53,0 % : 24,4 points d&apos;écart, jusqu&apos;à 30 sur les tâches difficiles. Pass^k (toutes les exécutions réussissent) est l&apos;inverse pessimiste de Pass@k (au moins une réussit) — Pass^k ≤ Mean@k ≤ Pass@k</li><li>Le Consistency Analyzer est boîte noire : une seule trace enregistrée, un appel par point de décision demandant k complétions (k=5 par défaut), sans vérité terrain, sans logits et sans relancer la tâche de bout en bout</li><li>Résultats : écart ramené de 24,4 à 12,0 points, Pass^5 +16,0 points sur la même tâche et +13,0 sur des tâches similaires, sans coût en exactitude moyenne. Code sur github.com/AgentToolkit/altk-evolve, méthode détaillée dans la prépublication arXiv 2609.08832 (non relue par les pairs)</li></ul><p><a href="https://huggingface.co/blog/ibm-research/altk-evolve-consistency">Source : Hugging Face</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-16/images/10.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Gitea exposé : Red Heron scanne, entre, reste</title>
      <link>https://veilletech.fr/2026-09-15/articles/gitea-expose-red-heron-scanne-entre-reste.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/gitea-expose-red-heron-scanne-entre-reste.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>Acronis TRU attribue à l&apos;acteur Red Heron l&apos;exploitation de CVE-2026-60004, une RCE critique de Gitea divulguée en juillet 2026, contre des instances exposées sur internet : 1 386 instances scannées dans sept pays et treize compromissions confirmées au Canada, en Argentine, à Taïwan, aux États-Unis, au Qatar et au Sri Lanka. La progression va du vol de dépôts à l&apos;accès root sur un cluster Proxmox de trois nœuds, via l&apos;implant JITTERLY et un rootkit LD_PRELOAD inédit baptisé SIXZUT.</description>
      <content:encoded><![CDATA[<p>Acronis TRU attribue à l'acteur Red Heron l'exploitation de CVE-2026-60004, une RCE critique de Gitea divulguée en juillet 2026, contre des instances exposées sur internet : 1 386 instances scannées dans sept pays et treize compromissions confirmées au Canada, en Argentine, à Taïwan, aux États-Unis, au Qatar et au Sri Lanka. La progression va du vol de dépôts à l'accès root sur un cluster Proxmox de trois nœuds, via l'implant JITTERLY et un rootkit LD_PRELOAD inédit baptisé SIXZUT.</p><ul><li>CVE-2026-60004 : RCE Gitea divulguée en juillet 2026 ; le PoC public (github.com/HORKimhab/CVE-2026-60004) a été transformé en framework automatisé « exp_enhanced.py » dès le 29 juillet 2026</li><li>Portée mesurée : 1 386 instances scannées sur 7 pays, jeu de données séparé de 477 systèmes taïwanais, 13 compromissions confirmées (Taïwan 4, États-Unis 4, Canada 2, Argentine 1, Qatar 1, Sri Lanka 1)</li><li>Outils déposés : implant Linux C++ JITTERLY (plus de 30 commandes de post-exploitation, proche d’AdaptixC2) et rootkit LD_PRELOAD SIXZUT, qui patche 15 fonctions pour masquer fichiers, processus et connexions</li></ul><p><a href="https://thehackernews.com/2026/09/red-heron-exploits-gitea-rce-to.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/01.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Une extension Twitch fuitait 31 000 jetons</title>
      <link>https://veilletech.fr/2026-09-15/articles/une-extension-twitch-fuitait-31-000-jetons.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/une-extension-twitch-fuitait-31-000-jetons.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>OAUTH</category>
      <description>L&apos;extension « Twitch Enhanced Viewer | JeetBot », publiée sur Chrome et Firefox, transmettait le jeton OAuth Twitch de ses utilisateurs aux proxys de son éditeur sous forme de paramètre d&apos;URL — donc en clair dans les journaux. Socket recense près de 31 000 utilisateurs concernés. La version corrigée 85.8.7 est parue côté Firefox, mais elle ne révoque pas les jetons déjà transmis : seule une déconnexion de toutes les sessions Twitch le fait.</description>
      <content:encoded><![CDATA[<p>L'extension « Twitch Enhanced Viewer | JeetBot », publiée sur Chrome et Firefox, transmettait le jeton OAuth Twitch de ses utilisateurs aux proxys de son éditeur sous forme de paramètre d'URL — donc en clair dans les journaux. Socket recense près de 31 000 utilisateurs concernés. La version corrigée 85.8.7 est parue côté Firefox, mais elle ne révoque pas les jetons déjà transmis : seule une déconnexion de toutes les sessions Twitch le fait.</p><ul><li>Identifiants : Chrome pnhhdhhcadcjfckjhpmjneldiegbojfb (30 000 utilisateurs, publiée le 26 juin 2025) et Firefox twitchenhancedviewer@example.com (604 utilisateurs, 7 juillet 2025)</li><li>Les builds v85.x transmettent le jeton en paramètre &amp;auth= vers le proxy de l’opérateur sur les requêtes vers usher.ttvnw[.]net ; les builds v4.x (ex. 4.8, janvier 2026) le POSTaient vers un endpoint set-token, avec des relais sur deno.dev et deno.net</li><li>Correctif 85.8.7 (Firefox publiée, Chrome en attente de revue) — il stoppe l’envoi mais ne révoque rien : passer par Twitch › Sécurité et confidentialité › Déconnecter tous les appareils</li></ul><p><a href="https://thehackernews.com/2026/09/malicious-twitch-browser-extension.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/02.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Telegram : un export HTML qui vous relit</title>
      <link>https://veilletech.fr/2026-09-15/articles/telegram-un-export-html-qui-vous-relit.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/telegram-un-export-html-qui-vous-relit.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>Telegram Desktop écrivait sans échappement le libellé des boutons d&apos;un bot dans ses exports HTML, ce qui permettait d&apos;y cacher du JavaScript exécuté à l&apos;ouverture du fichier dans un navigateur. Les chercheurs d&apos;ExPatch, Denis et Aleksander Rostilov, l&apos;ont publié le 12 septembre 2026 et le notent 8,2 sur 10 en CVSS 3.1. Le correctif est parti en juillet, mais aucun export déjà produit n&apos;est réparé, et il n&apos;existe ni CVE ni avis de sécurité.</description>
      <content:encoded><![CDATA[<p>Telegram Desktop écrivait sans échappement le libellé des boutons d'un bot dans ses exports HTML, ce qui permettait d'y cacher du JavaScript exécuté à l'ouverture du fichier dans un navigateur. Les chercheurs d'ExPatch, Denis et Aleksander Rostilov, l'ont publié le 12 septembre 2026 et le notent 8,2 sur 10 en CVSS 3.1. Le correctif est parti en juillet, mais aucun export déjà produit n'est réparé, et il n'existe ni CVE ni avis de sécurité.</p><ul><li>Versions touchées : Telegram Desktop 4.15.1 (mars 2024) à 6.9.3 — soit deux ans et quatre mois. Corrigé en 6.9.4 bêta (3 juillet 2026) et 7.0.1 stable (14 juillet 2026), par le commit 8457d13a</li><li>Le script s’exécute sans clic, lit l’intégralité du fichier (messages, expéditeurs, horodatages, nom et type du salon, nombre de membres, chemin local) ; l’export est découpé par blocs de 1 000 messages, ce qui borne la fuite à un fichier</li><li>Aucun identifiant CVE, aucune mention dans le changelog ni dans les notes de version ; bug bounty de 500 $ proposé le 1er juillet et refusé par les chercheurs au profit d’une association</li></ul><p><a href="https://thehackernews.com/2026/09/telegram-desktop-flaw-lets-hidden.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/03.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>WordPress bloque les mises à jour à risque</title>
      <link>https://veilletech.fr/2026-09-15/articles/wordpress-bloque-les-mises-a-jour-a-risque.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/wordpress-bloque-les-mises-a-jour-a-risque.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>WORDPRESS</category>
      <description>Depuis le 9 septembre 2026, WordPress.org analyse automatiquement chaque nouvelle version de plugin pendant sa période de refroidissement et bloque sa distribution si le score de risque dépasse un seuil. Le dispositif complète l&apos;initiative « Protect The Shire » lancée le 5 juin, qui impose déjà six heures de délai avant diffusion. Un cas réel est cité : une porte dérobée détectée le 28 juillet dans un plugin d&apos;environ 20 000 installations actives, jamais distribuée, plugin fermé 26 minutes après l&apos;alerte.</description>
      <content:encoded><![CDATA[<p>Depuis le 9 septembre 2026, WordPress.org analyse automatiquement chaque nouvelle version de plugin pendant sa période de refroidissement et bloque sa distribution si le score de risque dépasse un seuil. Le dispositif complète l'initiative « Protect The Shire » lancée le 5 juin, qui impose déjà six heures de délai avant diffusion. Un cas réel est cité : une porte dérobée détectée le 28 juillet dans un plugin d'environ 20 000 installations actives, jamais distribuée, plugin fermé 26 minutes après l'alerte.</p><ul><li>Chaîne de contrôle : cooldown de 6 heures (réduit depuis les 24 h initiales du 5 juin 2026) → analyse par modèles IA + Jetpack Scan → score de risque → blocage automatique et courriel à l’auteur, envoyé uniquement en cas de blocage</li><li>Motifs qui font monter le score : endpoints REST, AJAX ou admin-post sans contrôle de capacité (un nonce n’est pas une autorisation), requêtes sans $wpdb-&gt;prepare(), chemins ou includes construits depuis la requête, unserialize() sur données distantes, options écrites depuis un endpoint accessible aux abonnés, code récupéré ou évalué à l’exécution, code obfusqué</li><li>Seul recours pour débloquer : corriger et publier une nouvelle version — une contestation manuelle est presque toujours plus lente ; outils recommandés : WordPress Coding Standards, PHP_CodeSniffer, et QIT pour les extensions WooCommerce</li></ul><p><a href="https://thehackernews.com/2026/09/wordpress-adds-automated-plugin-reviews.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/04.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Symfony Mate ouvre le runtime aux agents</title>
      <link>https://veilletech.fr/2026-09-15/articles/symfony-mate-ouvre-le-runtime-aux-agents.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/symfony-mate-ouvre-le-runtime-aux-agents.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>SYMFONY</category>
      <description>Mate, composant de Symfony AI, donne à un agent de code un accès direct au runtime d&apos;une application Symfony : profiler, logs Monolog et conteneur de services. Depuis Symfony AI 0.13, ce n&apos;est plus un serveur MCP mais un simple CLI doublé d&apos;une couche de découverte qui écrit les instructions dans AGENTS.md et installe cinq skills. Mate lit les artefacts déjà présents sur disque, donc il répond même quand un conteneur cassé empêche l&apos;application de démarrer.</description>
      <content:encoded><![CDATA[<p>Mate, composant de Symfony AI, donne à un agent de code un accès direct au runtime d'une application Symfony : profiler, logs Monolog et conteneur de services. Depuis Symfony AI 0.13, ce n'est plus un serveur MCP mais un simple CLI doublé d'une couche de découverte qui écrit les instructions dans AGENTS.md et installe cinq skills. Mate lit les artefacts déjà présents sur disque, donc il répond même quand un conteneur cassé empêche l'application de démarrer.</p><ul><li>Installation : composer require --dev symfony/ai-mate puis vendor/bin/mate init — la commande enregistre le mode d’invocation (direct, docker exec &lt;conteneur&gt;, ddev exec) et la version PHP, et refuse de tourner sous un autre PHP majeur ou mineur</li><li>Commandes livrées : symfony-profiler-list / symfony-profiler-get (liste puis détail par jeton), monolog-tail et monolog-search (filtres niveau, canal, environnement), symfony-service-detail (classe, tags DI, appels de méthode, factory)</li><li>Extension par attribut : #[MateTool] sur une méthode suffit (schéma d’entrée généré par réflexion et PHPDoc), classe déposée dans mate/src/ sous le namespace Mate\ ; #[MateResource] et #[MateResourceTemplate] pour les données lisibles ; extensions PHPUnit, PHPStan, Rector et Composer sur l’organisation MatesOfMate</li></ul><p><a href="https://symfony.com/blog/symfony-ai-spotlight-mate-an-agent-s-way-into-your-runtime">Source : Symfony</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/05.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Vacuum surveille Postgres depuis Laravel</title>
      <link>https://veilletech.fr/2026-09-15/articles/vacuum-surveille-postgres-depuis-laravel.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/vacuum-surveille-postgres-depuis-laravel.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>POSTGRES</category>
      <description>Vacuum est un paquet Laravel de Rati Rukhadze qui lit les vues de statistiques que PostgreSQL tient déjà (pg_stat_user_tables, pg_stat_activity, pg_stat_statements) et affiche les problèmes détectés avec la requête SQL qui les corrige. Treize règles couvrent le wraparound, le bloat, les tuples morts, les index inutilisés et les requêtes lentes, avec une note sur 100. Deux commandes s&apos;intègrent en CI : vacuum:check fait échouer un build sur constat critique, vacuum:lint signale les clés étrangères non indexées dans les migrations.</description>
      <content:encoded><![CDATA[<p>Vacuum est un paquet Laravel de Rati Rukhadze qui lit les vues de statistiques que PostgreSQL tient déjà (pg_stat_user_tables, pg_stat_activity, pg_stat_statements) et affiche les problèmes détectés avec la requête SQL qui les corrige. Treize règles couvrent le wraparound, le bloat, les tuples morts, les index inutilisés et les requêtes lentes, avec une note sur 100. Deux commandes s'intègrent en CI : vacuum:check fait échouer un build sur constat critique, vacuum:lint signale les clés étrangères non indexées dans les migrations.</p><ul><li>Prérequis version : Vacuum 1.2.0 demande PostgreSQL 14 et Laravel 11+ ; l’extension pg_stat_statements est optionnelle (le tableau de bord signale son absence)</li><li>En CI : php artisan vacuum:check --fail-on=warning (critical, warning, info ou never) et --format=json pour score, note, déductions et constats ; php artisan vacuum:lint pour les problèmes de schéma</li><li>Seuils dans config/vacuum.php : dead_tuple_ratio à 0.20, slow_query_milliseconds à 500 ; le tableau de bord /vacuum n’est ouvert qu’en environnement local, ailleurs il faut un callback Vacuum::auth()</li></ul><p><a href="https://laravel-news.com/vacuum-laravel-postgresql-monitoring">Source : Laravel News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/06.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>35 ko de prompt chez soi : ce qui casse</title>
      <link>https://veilletech.fr/2026-09-15/articles/35-ko-de-prompt-chez-soi-ce-qui-casse.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/35-ko-de-prompt-chez-soi-ce-qui-casse.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>LLM</category>
      <description>Un praticien raconte l&apos;échec puis le rattrapage d&apos;une migration : des prompts d&apos;agent de 35 ko, efficaces sur une API frontière, s&apos;effondrent sur une installation Ollama locale. La cause n&apos;est pas la taille du modèle mais la fenêtre de contexte — 65 000 tokens sur sa machine, dont 14 % consommés par le seul preprompt. Le billet donne une liste de signaux d&apos;épuisement de contexte à surveiller dans les journaux, et une méthode de découpage en prompts à objectif unique.</description>
      <content:encoded><![CDATA[<p>Un praticien raconte l'échec puis le rattrapage d'une migration : des prompts d'agent de 35 ko, efficaces sur une API frontière, s'effondrent sur une installation Ollama locale. La cause n'est pas la taille du modèle mais la fenêtre de contexte — 65 000 tokens sur sa machine, dont 14 % consommés par le seul preprompt. Le billet donne une liste de signaux d'épuisement de contexte à surveiller dans les journaux, et une méthode de découpage en prompts à objectif unique.</p><ul><li>Le banc d’essai : AMD Ryzen AI MAX+ 395, 128 Go dont 32 Go réservés à l’OS hôte ; fenêtre de contexte de 65 000 tokens ; un preprompt de 35 ko en occupe 14 % avant le premier échange, et l’agent sature en 3 minutes</li><li>Signaux d’épuisement à journaliser : appels d’outils identiques consécutifs, lectures répétées du même fichier, agent qui reformule son objectif, échecs de parsing d’appels d’outils, ratio tours / fichiers modifiés élevé</li><li>Remèdes : découper en unités objectif unique, définir explicitement la longueur de contexte dans Ollama (les défauts sont très bas), agents déclaratifs dans ~/.config/opencode/agents, état de session écrit sur disque, moins d’appels d’outils par étape, « fais seulement Y » plutôt que « ne fais pas X »</li></ul><p><a href="https://patrickmccanna.net/notes-on-migrating-large-prompts-away-from-anthropic-openai-to-self-hosted-llms">Source : patrickmccanna.net</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/share/07-35-ko-de-prompt-chez-soi-ce-qui-casse.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>AI SDK : vos agents via abonnement, sans clé</title>
      <link>https://veilletech.fr/2026-09-15/articles/ai-sdk-vos-agents-via-abonnement-sans-cle.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/ai-sdk-vos-agents-via-abonnement-sans-cle.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>IA</category>
      <description>La couche harness du AI SDK de Vercel, qui expose plusieurs agents de code derrière la même interface HarnessAgent, sait désormais s&apos;authentifier via l&apos;abonnement natif de l&apos;agent plutôt que par une clé d&apos;API. Aucun changement de code n&apos;est requis : le mode direct et le mode auto utilisent les identifiants d&apos;environnement s&apos;ils existent, sinon l&apos;abonnement présent sur l&apos;hôte. Les identifiants ne quittent pas l&apos;hôte, et l&apos;agent peut ne recevoir que des valeurs factices.</description>
      <content:encoded><![CDATA[<p>La couche harness du AI SDK de Vercel, qui expose plusieurs agents de code derrière la même interface HarnessAgent, sait désormais s'authentifier via l'abonnement natif de l'agent plutôt que par une clé d'API. Aucun changement de code n'est requis : le mode direct et le mode auto utilisent les identifiants d'environnement s'ils existent, sinon l'abonnement présent sur l'hôte. Les identifiants ne quittent pas l'hôte, et l'agent peut ne recevoir que des valeurs factices.</p><ul><li>Trois modes : direct et auto lisent l’abonnement natif à défaut d’identifiants explicites (auto seulement si aucune information AI Gateway n’est configurée) ; ai-gateway ne lit jamais d’abonnement</li><li>Les identifiants sont résolus à la frontière de l’hôte, les jetons OAuth y sont rafraîchis ; là où le bac à sable le permet, le harness reçoit des identifiants factices et le vrai jeton est injecté dans les requêtes sortantes</li><li>Agents compatibles annoncés : Claude Code, Cline, Codex, Cursor, fx, GitHub Copilot, Grok Build, OpenCode et Pi — à condition que l’agent gère lui-même la connexion par abonnement</li></ul><p><a href="https://vercel.com/changelog/ai-sdk-harness-native-subscription-authentication">Source : Vercel</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/images/08.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>Kubernetes 1.37 coupe le throttling mémoire</title>
      <link>https://veilletech.fr/2026-09-15/articles/kubernetes-1-37-coupe-le-throttling-memoire.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/kubernetes-1-37-coupe-le-throttling-memoire.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>DEVOPS</category>
      <description>Memory QoS passe en bêta dans Kubernetes v1.37 et la feature gate est active sur tous les kubelets, mais le défaut de memoryThrottlingFactor passe de 0.9 à null : sans configuration explicite, le kubelet n&apos;écrit plus memory.high, memory.min ni memory.low. Pour un cluster qui n&apos;utilisait pas la fonctionnalité, la montée de version ne change rien. Pour un cluster qui l&apos;avait activée en alpha sans inscrire le facteur dans sa configuration, le throttling s&apos;arrête sans avertissement.</description>
      <content:encoded><![CDATA[<p>Memory QoS passe en bêta dans Kubernetes v1.37 et la feature gate est active sur tous les kubelets, mais le défaut de memoryThrottlingFactor passe de 0.9 à null : sans configuration explicite, le kubelet n'écrit plus memory.high, memory.min ni memory.low. Pour un cluster qui n'utilisait pas la fonctionnalité, la montée de version ne change rien. Pour un cluster qui l'avait activée en alpha sans inscrire le facteur dans sa configuration, le throttling s'arrête sans avertissement.</p><ul><li>La feature gate MemoryQoS est bêta et activée par défaut en v1.37, mais memoryThrottlingFactor vaut désormais null (contre 0.9 en alpha) et memoryReservationPolicy vaut None</li><li>Pour retrouver le comportement alpha, déclarer dans KubeletConfiguration (apiVersion kubelet.config.k8s.io/v1beta1) : memoryThrottlingFactor: 0.9, et memoryReservationPolicy: TieredReservation pour la réservation par paliers via memory.min et memory.low</li><li>Pour désactiver la fonctionnalité, retirer d’abord ces champs : le kubelet rejette la configuration si memoryThrottlingFactor vaut autre chose que l’ancien 0.9 ou si memoryReservationPolicy vaut TieredReservation</li></ul><p><a href="https://kubernetes.io/blog/2026/09/14/kubernetes-v1-37-memory-qos-graduates-to-beta">Source : Kubernetes</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/share/09-kubernetes-1-37-coupe-le-throttling-memoire.jpg" type="image/jpeg" length="0"/>
    </item>
    <item>
      <title>DDRop : la mémoire chiffrée rejoue le passé</title>
      <link>https://veilletech.fr/2026-09-15/articles/ddrop-la-memoire-chiffree-rejoue-le-passe.html</link>
      <guid isPermaLink="true">https://veilletech.fr/2026-09-15/articles/ddrop-la-memoire-chiffree-rejoue-le-passe.html</guid>
      <pubDate>Tue, 15 Sep 2026 07:20:00 GMT</pubDate>
      <category>SÉCURITÉ</category>
      <description>DDRop est une attaque matérielle qui casse l&apos;intégrité mémoire d&apos;Intel TDX, Intel Scalable SGX et AMD SEV-SNP en supprimant silencieusement des écritures : le processeur relit alors une ancienne valeur chiffrée, parfaitement valide à ses yeux. Elle exploite l&apos;absence de garantie de fraîcheur dans le chiffrement mémoire à grande échelle. L&apos;interposeur coûte moins de 200 dollars, fonctionne sur DDR5, et les designs de carte comme le code sont publiés. Il n&apos;existe pas de correctif logiciel complet.</description>
      <content:encoded><![CDATA[<p>DDRop est une attaque matérielle qui casse l'intégrité mémoire d'Intel TDX, Intel Scalable SGX et AMD SEV-SNP en supprimant silencieusement des écritures : le processeur relit alors une ancienne valeur chiffrée, parfaitement valide à ses yeux. Elle exploite l'absence de garantie de fraîcheur dans le chiffrement mémoire à grande échelle. L'interposeur coûte moins de 200 dollars, fonctionne sur DDR5, et les designs de carte comme le code sont publiés. Il n'existe pas de correctif logiciel complet.</p><ul><li>Travaux de KU Leuven, ETH Zurich, Durham University et Google, à présenter à ACM CCS 2026 en novembre ; designs de carte, firmware du contrôleur et code d’attaque publiés sur github.com/ddropattack/ddrop, papier sur ddropattack.eu</li><li>Sur Intel TDX : suppression des écritures qui initialisent une table de pages → mappage arbitraire de mémoire physique, lecture d’une VM victime, bascule en mode debug, et falsification de la mesure de démarrage servant à l’attestation distante. Sur AMD SEV-SNP, portée plus réduite (copie d’une page victime dans une autre via la page-relocation)</li><li>Non affectés : l’ancien Intel Client SGX (arbre d’intégrité matériel, mais retiré depuis) et les GPU confidentiels NVIDIA (mémoire dans le package). Arm CCA non testé. Avis Intel du 11 août 2026 et bulletin AMD SB-3048 ; les deux fondeurs classent l’accès physique hors modèle de menace</li></ul><p><a href="https://thehackernews.com/2026/09/new-ddrop-attack-breaks-intel-tdx-and.html">Source : The Hacker News</a></p>]]></content:encoded>
      <enclosure url="https://veilletech.fr/2026-09-15/share/10-ddrop-la-memoire-chiffree-rejoue-le-passe.jpg" type="image/jpeg" length="0"/>
    </item>
  </channel>
</rss>
