HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

Les meilleurs longs formats de Hacker News, relus plus calmement.

11427 articles Page 80/1143 Sans filtre

Entering and Breaking the Avast Antivirus Sandbox Part 2

L'article détaille l'exploitation d'une double-fetch dans le pilote noyau d'Avast (CVE-2025-13032) qui permet, via une lecture multiple du champ Length d'un _UNICODE_STRING, d'induire un débordement de pool en PAGED_POOL en synchronisant deux threads. Les auteurs ciblent l'allocation RegBuffers des objets I/O Ring en sprayant le pool pour positionner une allocation adjacente et corrompre un pointeur d'entrée, l'allocation RegBuffers étant entièrement contrôlable depuis l'espace utilisateur. En redirigeant une entrée RegBuffers vers une _IOP_MC_BUFFER_ENTRY factice résidant en espace utilisateur, ils transforment IoRingReadFile et IoRingWriteFile en primitives arbitraires d'écriture et de lecture noyau en modifiant le champ Address de la structure factice. Ils obtiennent une adresse d'_EPROCESS exploitable en forçant la création d'un MDL pour la structure factice, lisent le champ Process depuis cet MDL, puis réparent l'état corrompu du pool (champ ProcessBilled et références) pour éviter un plantage lors du nettoyage. Avec la primitive de lecture/écriture et l'adresse d'_EPROCESS, ils remplacent le token de leur processus par celui de SYSTEM pour l'élévation de privilèges, et indiquent que la vulnérabilité a été corrigée en recommandant de mettre Avast à jour.

Pencils Down, Notation Up

Le discours d'ouverture a insisté pour adopter les LLMs et l'optimisme technologique, mais l'auteur propose qu'on peut aussi conserver une autre option en gardant la source de vérité en haut de la pile. En compilant l'application Campfire de Basecamp en C, l'auteur montre que le code compilé devient immense et illisible pour un agent, rendant la maintenance directe du binaire impraticable. L'article énumère pourquoi la source de vérité doit rester au niveau haut : elle doit tenir dans le contexte d'un agent, exprimer chaque décision une seule fois, préserver l'intention, produire des résultats reproductibles et correspondre au type de code que le modèle a déjà vu. L'alternative consistant à remplacer le code source par des prompts précis revient à créer un langage spécifique au domaine, et Rails est présenté comme cette notation compacte et conventionnelle qui formalise déjà ces spécifications. Enfin, des compilations de Rails vers des cibles natives montrent des gains substantiels de performance et mémoire, de sorte qu'on peut laisser le forage descendre bas tout en gardant la notation Rails au sommet comme source de vérité.

An airport cooled by natural ventilation

Le nouveau terminal arrivées de l'aéroport Roland Garros à La Réunion utilise une ventilation naturelle plutôt que la climatisation pour réduire ses émissions de CO2. Sa toiture en "canyon", des orifices latéraux réglables et de grands ventilateurs de 7,5 m créent un courant d'air d'environ 1 m/s qui abaisse la température perçue de 4 à 5 °C. Conçu par AIA Life Designers en partenariat avec l'architecte local Olivier Brabant, le bâtiment s'inspire des pratiques locales traditionnelles adaptées au climat tropical maritime. Coûtant 75 millions d'euros au total, le terminal offre une économie d'énergie d'environ 60 % par rapport à une installation climatisée et génère 150 000 € d'économies annuelles. Les responsables soulignent toutefois que cette approche est peu adaptée aux zones urbaines polluées et aux populations habituées à la climatisation, et le bâtiment est fermé en cas de cyclone.

Boards of Casio

En travaillant sur le CZP-1, une tentative d’émuler le Casio CZ-101 dans un navigateur, le développeur a découvert une vidéo d'oliveoil22 qui partageait des données de patch. Le billet décrit comment charger ces patches : télécharger le fichier, ouvrir CZP-1, sélectionner un emplacement dans la bibliothèque, utiliser « Charger bank depuis fichier JSON » pour importer la banque, puis choisir un programme et jouer via le clavier à l'écran, le clavier d'ordinateur ou le MIDI. Le CZP-1 n'inclut pas les effets de post-traitement présents dans les patches d'oliveoil22, ce qui explique la plupart des différences sonores, mais le rendu reste par ailleurs très proche. Les banques chargées sont sauvegardées localement par le navigateur et partagées entre onglets, on peut décharger une banque avec « Supprimer bank », et il est aussi possible de partager des sons via des URLs qui encodent les données sans les stocker sur un serveur. L'auteur a converti les fichiers syx fournis par oliveoil22 en JSON en quelques minutes à l'aide d'un outil d'IA pour pouvoir les importer dans le CZP-1 et remercie oliveoil22 pour les données de patch en demandant d'être contacté en cas de problème.

Git-bug: Distributed, offline-first bug tracker embedded in Git

Ce gestionnaire de bogues s'intègre entièrement à git, fonctionne en mode distribué et permet de travailler hors ligne sans ajouter de fichiers au dépôt. Il propose plusieurs interfaces — CLI, interface terminal interactive et une interface web embarquée — et expose une API GraphQL pour l'intégration avec d'autres outils. Des workflows natifs et des ponts vers des services comme GitHub, GitLab, Jira ou Launchpad permettent d'importer, d'exporter et de synchroniser les problèmes via les remotes git. La structure de stockage est formalisée par une spécification décrivant le format sur disque et le modèle de données, facilitant l'écriture d'implémentations ou d'outils tiers. Le projet est open source (GPLv3+), accepte les contributions et maintient une documentation d'installation, de contribution et une feuille de route avec des fonctionnalités prévues.

Platform-independent SIMD in Go

Les versions expérimentales de Go (1.26 et 1.27) introduisent de nouvelles API SIMD, avec archsimd pour le code spécifique aux architectures et le package simd dans Go 1.27 offrant une interface portable supportant AVX/AVX2/AVX512 sur amd64, NEON sur arm64 et SIMD pour wasm. La diversité des architectures SIMD (tailles de vecteurs variables, formats de masques et jeux d'instructions différents) rend la portabilité difficile et motive une approche qui combine abstractions communes et émulations efficaces. Le package simd retire les vecteurs à taille fixe du système de types, n'expose que les opérations communes à toutes les plateformes et complète les manques par des émulations pour garantir qu'un même code tourne partout, avec des types comme simd.Float32s et des fonctions Load/Store. Quand une opération manque ou que des optimisations spécifiques sont nécessaires, simd permet la conversion vers les types archsimd via ToArch/FromArch, le compilateur effectue une spécialisation et un réécrivage AST pour éliminer le dispatch dans les sections critiques, et GODEBUG permet de forcer des niveaux d'usage SIMD ou l'émulation. Pour l'avenir, l'équipe prévoit d'ajouter le support SVE et d'étendre les opérations offertes (par exemple OnesCount, réductions et permutations) dans Go 1.28 et de publier un billet détaillé sur archsimd.