HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

11978 articles Page 782/1198 Sans filtre

Incident Report: CVE-2024-YIKES

Une dépendance compromise dans l'écosystème JavaScript a conduit au vol d'identifiants, permettant une attaque de la chaîne d'approvisionnement sur une bibliothèque Rust de compression intégrée à un outil de build Python. Un mainteneur a été victime d'un site de phishing et un paquet compromis a ajouté un script postinstall exfiltrant des fichiers de credentials, ce qui a permis de publier une version malveillante de la bibliothèque vulpine-lz4. Cette version malveillante, incluse dans snekpack, a propagé un malware sur les environnements de développement en ajoutant des clés SSH, en installant un reverse shell programmé et en modifiant le shell par défaut, impactant environ quatre millions de machines. La propagation a été interrompue de façon accidentelle lorsqu'un ver de minage a mis à jour les paquets vers une version rétablie, après quoi les mainteneurs ont publié un avis de sécurité et renouvelé les identifiants ; l'incident a été déclaré résolu au bout de 73 heures. Les recommandations incluent la signature des artefacts, le renforcement de l'authentification multifacteur, l'audit des dépendances transitives et l'amélioration de la gouvernance des mainteneurs et des outils de build.

Obsidian plugin was abused to deploy a remote access trojan

Des chercheurs en sécurité ont identifié une campagne d'ingénierie sociale très ciblée exploitant l'application de prise de notes Obsidian pour livrer un cheval de Troie d'accès à distance inédit nommé PHANTOMPULSE visant les secteurs financier et des cryptomonnaies sur Windows et macOS. Les attaquants gagnent la confiance des cibles via LinkedIn et Telegram, puis incitent à ouvrir un coffre Obsidian partagé et à activer la synchronisation des plugins communautaires, permettant l'exécution de versions malveillantes de plugins légitimes. La chaîne d'attaque déclenche un script (PowerShell sur Windows, AppleScript sur macOS) qui installe un chargeur appelé PHANTOMPULL, lequel déchiffre et lance PHANTOMPULSE directement en mémoire pour éviter les détections basées sur les fichiers. PHANTOMPULSE peut capturer les frappes, prendre des captures d'écran, exfiltrer des fichiers et exécuter des commandes, et il résout de façon résistante à la censure l'adresse de son serveur de commande en lisant des données depuis des transactions sur la blockchain Ethereum. Les mesures recommandées incluent la surveillance des processus enfants lancés par Obsidian, la vigilance sur les plugins communautaires, la désactivation de la synchronisation pour les coffres non fiables, l'application du principe du moindre privilège et le déploiement d'EDR et de contrôles d'application.

Running local models on an M4 with 24GB memory

L'auteur a expérimenté l'exécution de modèles locaux et décrit les défis d'installation, le choix entre outils comme Ollama, llama.cpp et LM Studio, et les contraintes de mémoire et de fenêtre de contexte. Après des essais, il a identifié qwen3.5-9b@q4_k_s sur LM Studio avec thinking activé et une fenêtre de 128K comme le meilleur compromis pour un MacBook Pro 24GB, avec des réglages recommandés pour le mode réflexion et le codage. Il fournit des exemples de configuration pour Pi et OpenCode et explique des ajustements pratiques comme cacher le bloc de thinking et modifier le template d'invite pour activer la réflexion. Comparé aux modèles SOTA, ce modèle local nécessite davantage de supervision pas à pas et se montre efficace pour des workflows interactifs et des tâches de développement simples, mais il peut se tromper, se bloquer ou mal gérer certaines interactions avec les outils. L'auteur conclut que les modèles locaux permettent de travailler hors ligne, de réduire la dépendance aux grandes entreprises et les coûts d'abonnement, tout en impliquant des compromis importants et en restant un loisir gratifiant à expérimenter.

I'm going back to writing code by hand

L'auteur relate sept mois de développement de k10s principalement assisté par l'IA et conclut que l'IA produit des fonctionnalités mais pas une architecture durable. Le code a dégénéré en une structure monolithique qui centralise tout l'état et des handlers volumineux, entraînant des bugs, des conflits de raccourcis et des fuites de données entre vues. Il synthétise cinq enseignements : l'IA optimise les fonctionnalités à court terme, tend vers des objets globaux, favorise l'expansion du périmètre, utilise des données positionnelles fragiles et ne gère pas bien les transitions d'état concurrentes. Pour corriger cela, il préconise de définir d'avance des interfaces concrètes, des règles d'ownership, des types structurés, des invariants de concurrence et des limites de scope, puis de placer ces directives dans des fichiers (ex. CLAUDE.md) que l'IA doit respecter. Il a entrepris une réécriture en Rust et insiste sur l'importance de faire la conception humaine préalable, car l'intervention humaine reste nécessaire pour éviter l'effondrement architectural.

The Greatest Shot in Television: James Burke Had One Chance to Nail This Scene (2024)

Le clip de 80 secondes montre un lancement de fusée filmé en une prise, dans lequel James Burke explique comment des gaz liquéfiés stockés dans un thermos peuvent être mélangés et enflammés pour provoquer le décollage. On admire son sang-froid technique et la synchronisation parfaite du plan, qui sert de conclusion à un épisode de 50 minutes partant des cartes de crédit et retraçant l'invention d'objets allant de l'armure médiévale aux conserves et à la climatisation jusqu'au Saturn V. L'émission Connections, diffusée en 1978, retrace les évolutions majeures des sciences et des techniques et se distingue par son audace intellectuelle et visuelle, illustrée par ce plan souvent qualifié de "meilleur" à la télévision. Le passage a été visionné près de 18 millions de fois sur YouTube et comporte un léger artifice de montage où Burke marche vers un plan déjà préparé, ce qui n'atténue pas l'impact global. La phrase de clôture évoquant « destination : la lune, ou Moscou… les planètes, ou Pékin » pouvait sembler datée auparavant, mais elle prend aujourd'hui une résonance différente.

7 lines of code, 3 minutes: Implement a programming language (2010)

L'article présente l'intérêt pédagogique et ludique d'implémenter un langage de programmation pour approfondir la compréhension du calcul. Il propose un interpréteur minimaliste de sept lignes en Scheme qui évalue une variante du lambda-calcul en utilisant les fonctions eval et apply. Une réécriture en Racket améliore la lisibilité grâce au motif match, et un interpréteur plus complet d'environ cent lignes ajoute liaisons top-level, récursion explicite, effets de bord et fonctions d'ordre supérieur. Le texte rappelle les fondamentaux du lambda-calcul, son équivalence à la machine de Turing, les fonctions anonymes, les appels et des notions clés comme closures et environnements. L'approche permet d'expérimenter rapidement de nouvelles idées de langage en séparant la syntaxe (analyse) de la sémantique et en offrant une base facilement extensible.

Local AI needs to be the norm

De nombreux développeurs intègrent des appels API vers des modèles cloud (OpenAI, Anthropic) pour ajouter des fonctionnalités, ce qui crée des dépendances externes pour les applications. Cette pratique rend les logiciels fragiles et soulève des problèmes de confidentialité, de rétention des données, de facturation et de disponibilité réseau. L'auteur préconise de privilégier le traitement local sur les appareils, en donnant l'exemple de résumés générés sur iOS avec les APIs de modèles locaux d'Apple, sans envoi de contenu au serveur. Il décrit aussi une approche structurée consistant à définir des types Swift et à guider le modèle pour obtenir des sorties typées et exploitables plutôt que du texte non structuré. Les modèles locaux peuvent être moins puissants que le cloud mais suffisent pour des tâches de transformation de données (résumer, classifier, extraire) et il recommande d'utiliser le cloud seulement quand c'est nécessaire.

Removing fsync from our local storage engine

Les auteurs ont conçu un moteur KV mono‑nœud qui évite d'appeler fsync pour PUT et DELETE en s'appuyant sur des fichiers préalloués de taille fixe, des extents pré‑zéroisés, des E/S O_DIRECT et un journal avec commits alignés sur l'unité d'écriture atomique du SSD. Le moteur déplace la frontière de durabilité hors du système de fichiers en contrôlant l'allocation, le journal et la récupération, le journal ne contenant que des changements d'index et de carte d'espace et acceptant des commits atomiques de 4 Ko pour garantir la cohérence sans fsync. La zone de données utilise une carte d'espace en mémoire permettant des allocations prévisibles, des suppressions bon marché et des politiques de placement flexibles, tandis que la pré‑zéroisation après fallocate évite les conversions d'extents non écrits pendant l'exécution. Sur un benchmark 4 Ko random‑write sur NVMe local AWS i8g.2xlarge, le moteur a atteint environ 190 985 objets/s contre 116 041 objets/s pour ext4+O_DIRECT+fsync, avec latences moyennes et p99 nettement meilleures. Les limites incluent la nécessité d'un contrat de durabilité SSD strict (écritures directes et commits atomiques), l'inadaptation aux HDD, l'absence de fonctionnalités d'un moteur KV généraliste ou de transactions complexes, et le fait qu'il repose encore sur un système de fichiers plutôt que l'accès direct au bloc.

GrapheneOS fixes Android VPN leak Google refused to patch

GrapheneOS a publié une mise à jour qui corrige une vulnérabilité permettant à certaines applications de contourner le VPN Android et de révéler l'adresse IP réelle de l'utilisateur même avec "Always-On VPN" et "Block connections without VPN" activés. Le problème, présent sous Android 16, provenait d'une optimisation liée à la fermeture de connexions QUIC qui permettait à une application disposant seulement des permissions INTERNET et ACCESS_NETWORK_STATE d'enregistrer des charges utiles UDP arbitraires auprès de system_server. Lorsque le socket UDP de l'application était détruit, system_server pouvait envoyer la charge utile directement sur l'interface réseau physique au lieu du tunnel VPN, contournant ainsi les protections de routage du VPN. GrapheneOS a neutralisé la faille en désactivant l'optimisation registerQuicConnectionClosePayload dans la version 2026050400, tandis que Google avait jugé le problème "Won't Fix (Infeasible)" et a autorisé la divulgation publique. La mise à jour contient également le patch de sécurité Android de mai 2026, des améliorations hardened_malloc, des mises à jour du noyau Linux et d'autres correctifs, et un contournement temporaire possible sur Android stock consiste à désactiver le flag close_quic_connection via ADB, ce qui nécessite un accès développeur.