Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Un malware invisible se cache dans des caractères Unicode sur GitHub, npm et VS Code

La société Aikido Security a découvert une campagne de malware baptisée Glassworm qui utilise des caractères Unicode invisibles pour dissimuler du code malveillant.

Plus de 150 dépôts GitHub, des paquets npm et des extensions VS Code sont touchés, et le malware utilise la blockchain Solana comme serveur de commande. L'objectif : voler les identifiants de portefeuilles crypto.

Des caractères invisibles qui cachent du code

Le principe est assez fourbe. Les attaquants utilisent des caractères Unicode dits PUA (Private Use Area), qui ne s'affichent pas du tout à l'écran, mais qui contiennent quand même des valeurs exploitables.

Dit plus simplement, chaque caractère invisible correspond à un point de code que le décodeur extrait, reconstruit en payload, puis exécute via eval(). Le code malveillant est là, sous vos yeux, mais vous ne le voyez pas.

Aikido Security a découvert que cette campagne avait eu lieu entre le 3 et le 9 mars derniers. Plus de 150 dépôts GitHub ont été compromis, mais aussi des paquets npm comme @aifabrix/miso-client et @iflow-mcp/watercrawl-watercrawl-mcp.

Si on regarde du côté de VS Code, l'extension quartz-markdown-editor et 72 extensions sur Open VSX ont été touchées. Les attaquants ont aussi utilisé des LLM pour générer des commits de couverture parfaitement crédibles, et passer ainsi sous les radars des reviewers.

La blockchain Solana impliquée

Ce qui rend Glassworm encore plus fourbe, c'est son infrastructure. Au lieu d'utiliser un serveur classique facile à bloquer, le malware récupère ses instructions de commande sur la blockchain Solana. Ce qui veut dire qu'il n'y a pas de serveur central à couper : les instructions sont inscrites dans la blockchain, accessibles à tous et quasi impossibles à supprimer.

L'objectif final est le vol de données liées aux portefeuilles crypto. Le malware cible 49 extensions de navigateur, dont MetaMask, Coinbase Wallet et Phantom. Il récupère les identifiants stockés localement et les exfiltre vers les serveurs des attaquants.

Côté attaquants, c'est du beau travail. Cacher du code dans des caractères que personne ne voit, utiliser une blockchain comme canal de commande et se servir d'IA pour maquiller les commits, c'est bien ficelé.

Le problème, c'est que ça expose un angle mort assez gênant dans la confiance qu'on accorde à l'open source : on installe des paquets et des extensions sans forcément lire chaque ligne de code, et quand le code malveillant est carrément invisible, ça devient compliqué à détecter.

Sources : Aikido.dev , Socket.dev

Il fabrique un robot qui joue tout seul au jeu du dinosaure de Chrome

Un bricoleur a assemblé un petit montage à base d'ATtiny85 qui joue automatiquement au jeu du dinosaure caché dans Google Chrome. Le tout pour moins de 10 euros de composants et avec un microcontrôleur pas plus grand qu'un pouce.

Deux capteurs et un microcontrôleur, c'est tout

Le projet est signé Albert David, et le principe est assez malin. Une carte Digispark ATtiny85, qui coûte entre 2 et 5 euros, est branchée en USB sur un PC et se fait passer pour un clavier grâce au protocole HID. Pour le reste, vous avez deux modules LM393 photorésistants qui sont collés directement sur l'écran, le premier au niveau du sol pour voir les cactus, et le second plus haut pour voir les oiseaux.

C'est au passage de chaque obstacle que la luminosité change, et donc que le capteur s'active pour envoyer la touche espace ou la flèche du bas pour sauter et baisser la tête, le tout à travers le microcontrôleur, et seulement 8 ko de mémoire flash.

Un système qui s'adapte à la vitesse du jeu

Encore plus fort, l'ensemble intègre un système de timing interactif, avec un firmware qui mesure la largeur des obstacles, et surtout conserve un historique de cinq mesures, pour estimer au mieux la vitesse du jeu.

Le délai entre la détection et l'appui sur la touche est recalculé en permanence, avec des bornes minimales et maximales pour éviter les ratés. Il y a aussi un délai de 400 millisecondes entre chaque action pour ne pas mitrailler les touches.

Côté calibration, il faut quand même un peu de patience. Les deux capteurs doivent être positionnés à 30-40 mm devant le dinosaure, et les potentiomètres des modules LM393 ajustés pour que le fond blanc de l'écran ne déclenche rien mais que les obstacles foncés soient bien détectés.

Albert David recommande de tester sur une vingtaine d'obstacles avant de considérer le réglage comme bon. Et si le jeu passe en mode nuit, une commande JavaScript dans la console du navigateur empêche l'inversion de contraste qui fausserait les capteurs.

Bref, vous l'avez compris, c'est le genre de projet qui ne sert strictement à rien, et c'est pour ça qu'on aime bien. Avec moins de 10 euros de composants, un bout de code en C et deux capteurs de luminosité scotchés sur un écran, on obtient un système qui joue au jeu du dinosaure mieux que la plupart d'entre nous.

Le code est disponible sur GitHub pour ceux qui voudraient essayer, et vous avez tous les détails ici . Tout ceci rappelle quand même que ce petit jeu caché de Chrome, que Google avait glissé là pour meubler les coupures internet, continue de mobiliser les bidouilleurs du dimanche.

Sources : Hackaday , Prolinix

notebooklm-py - L'API Python que Google refuse de sortir

Google n'a jamais sorti d'API publique pour NotebookLM , son outil qui transforme vos documents en podcasts, quiz et autres résumés grâce à l'IA. Pas de SDK, pas de CLI, y'a rien du tout alors on est tous triiiiiste. A peine juste une interface web avec ses boutons moches et ses menus déroulants, mais impossible à scripter ou à intégrer dans le moindre pipeline bash.

Mais un dev bien inspiré a reverse-engineeré les endpoints REST internes et a pondu notebooklm-py, une lib Python de 168 Ko qui fait tout ce que le web UI refuse de faire. Franchement, c'était pas trop tôt ! Vous en avez rêvé, lui l'a fait !

Un pip install notebooklm-py et voilà, vous avez accès à toute la machinerie Notebook LM à savoir : créer des notebooks, injecter des sources (URLs, PDF, vidéos YouTube, fichiers Google Drive, documents Word, images PNG), poser des questions à vos docs, et surtout générer du contenu... podcasts audio en MP3, vidéos explicatives en MP4, quiz, flashcards, slides en PPTX, infographies en PNG, mind maps en JSON.

Carrément dingue ! Et tout ça pilotable depuis votre terminal zsh ou en script Python async.

En fait, le vrai bonus c'est que la lib déverrouille des fonctionnalités que l'interface web ne propose même pas comme télécharger tous vos podcasts d'un coup en batch au lieu de cliquer un par un sur chaque fichier MP3, exporter vos 50 flashcards en JSON structuré au lieu de juste les afficher à l'écran ou encore récupérer vos slides en PPTX éditable plutôt que le PDF figé.

Ce genre de features, on avait fini par accepter que Google s'en fiche mais pourtant, extraire l'arbre complet d'une mind map en JSON pour la balancer dans D3.js ou Mermaid... clairement c'est un truc que Google aurait dû proposer depuis le début !

Côté CLI, c'est propre. Vous vous authentifiez une fois via notebooklm login (ça ouvre Chromium via Playwright pour choper les cookies de session Google), puis vous enchaînez les commandes.

notebooklm create "Ma Recherche" pour créer un notebook vide,

notebooklm source add ./mon-rapport.pdf pour balancer vos fichiers,

notebooklm generate audio "rends ça punchy" --wait pour lancer la génération de podcast,

et notebooklm download audio ./podcast.mp3 pour récupérer le MP3 sur votre disque.

On peut même éditer ses slides individuellement avec des prompts en langage naturel, du genre "ajoute un graphique sur cette slide-là" !

Pour ceux qui veulent brancher ça dans leurs pipelines, y'a comme je le disais l'API Python async complète. Vous pouvez donc monter un petit cron qui ingère vos derniers bookmarks le vendredi soir, et génèrer un résumé audio de 5 minutes, puis balancer le MP3 directement sur votre NAS Synology.

D'ailleurs, si vous avez déjà joué avec des outils pour booster votre productivité avec l'IA , c'est un peu dans la même veine... sauf qu'ici on tape directement dans les tripes des serveurs Google, sans intermédiaire. Ça tourne avec du Python, et y'a même un mode "agent" (un skill en fait) pour brancher ça dans Claude Code ou Codex. Pas mal, hein ?

Le fait que ça gère aussi la recherche web et Drive avec import automatique des résultats dans vos notebooks, c'est top, un peu comme Oboe qui génère des cours complets via IA , mais en version terminal. Et surtout, pas d'abonnement mensuel à payer, c'est votre propre compte Google qui fait tourner la machine.

Bien sûr, ça reste du reverse-engineering d'APIs non-documentées de Google, ce qui fait que les endpoints REST peuvent changer du jour au lendemain et tout péter. Le projet le dit clairement, c'est plutôt taillé pour du prototypage, de la recherche ou des projets perso et SURTOUT PAS pour de la prod sur un serveur Nginx en front avec 10 000 utilisateurs prêts à ruer dans les brancards en cas de panne.

Et puis faut quand même s'authentifier via un vrai compte Google avec Playwright et Chromium, donc pas question de faire tourner ça sur un serveur headless sans un minimum de config.

Bref, tant que Google ne coupe pas ses endpoints, c'est open bar.

Profitez-en !

Barista - Pilotez votre machine à café De'Longhi en HTTP

Vous avez une machine à café De'Longhi avec du Bluetooth et vous vous êtes déjà forcément dit "Mais pourquoi je dois me lever si tôt pour appuyer sur un putain de bouton comme un homme des cavernes" ?!

Hé bien bonne nouvelle mes petits accro aux café puisqu'un dev a passé ses soirées à sniffer les paquets BLE de sa Dinamica Plus, à reverse-engineerer le protocole de communication, et il en a fait un projet open source qui transforme votre cafetière en serveur HTTP. Du coup maintenant, un petit curl http://pi:8080/api/brew/espresso depuis le lit et hop, le café coule. En live depuis votre oreiller, vos petits yeux à moitié fermés en moins de 3 secondes.

Aaaaah, le bonheur !

Le projet s'appelle Barista et c'est en fait un bridge BLE-to-HTTP écrit en Python. Vous collez ça sur un Raspberry Pi Zero à 15 euros (ou n'importe quel ordi avec une puce Bluetooth) à côté de votre machine à café, ça se connecte en Bluetooth Low Energy, et ça expose une API REST complète. Ça permet ainsi de contrôler la préparation (espresso, cappuccino, latte, americano...), d'ajuster la force de l'arôme sur 5 niveaux, la température, la quantité en ml, et même d'activer la buse vapeur ou l'eau chaude à distance. Attention par contre, faut pas oublier de mettre une tasse sous le bec avant de lancer la commande depuis votre lit...

Côté technique, c'est du Python async avec la bibliothèque bleak pour la partie radio BLE et aiohttp pour le serveur HTTP local. En fait, le truc intéressant c'est que tout le protocole ECAM est documenté dans le repo... structure des paquets, calcul du CRC-16/CCITT, encodage des ingrédients, lecture et écriture des recettes. Donc si vous avez un autre modèle De'Longhi (Primadonna, Magnifica Evo, Eletta Explore), c'est théoriquement compatible vu que De'Longhi utilise le même protocole BLE sur sa gamme ECAM... mais seule la Dinamica Plus est testée et confirmée pour l'instant.

Le problème, vous l'aurez compris, c'est que De'Longhi ne documente pas son protocole BLE (va savoir pourquoi), donc y'a pas forcément de garantie que ça marchera du premier coup sur votre modèle.

Côté prérequis, il vous faut Python 3.11+ et BlueZ sur votre Raspberry Pi 4 ou 5 (le Bluetooth quoi). Après, l'installation tient en trois commandes : pip install barista-coffee, puis barista scan pour trouver votre machine, et enfin barista start --address AA:BB:CC:DD pour lancer le serveur.

Et là vous aurez une interface web sur le port 8080, avec une grille de boutons, un bouton par boisson... mais surtout une API REST qui permet d'intégrer ça avec à peu près n'importe quoi : Home Assistant , Node-RED, un cron job matinal, un raccourci Siri, un script Python... Perso, l'idée du réveil qui déclenche automatiquement un espresso, c'est quand même pas mal !

Évidemment, tout tourne en local ! Comme ça plutôt que de dépendre de l'app officielle De'Longhi (qui marche uniquement à 2 mètres de la machine ^^ donc autant appuyer sur le bouton à ce stade), là c'est du vrai contrôle réseau.

D'ailleurs si le sujet vous branche, on avait déjà listé une tonne de projets Raspberry Pi dont une machine à café pilotable à distance.

Voilà, si vous avez une De'Longhi avec Bluetooth qui traîne dans la cuisine et un Raspberry Pi qui prend la poussière, vous savez ce qu'il vous reste à faire.

Amusez-vous bien et moi j'vais aller me faire un café du coup !

CompHost - Compostez vos vieux Android en serveurs

Un vieux smartphone Android, c'est quoi en fait ? Un bon petit quad-core, 1 ou 2 Go de RAM, et du WiFi. Soit de quoi largement servir des pages web finalement... Hé bien CompHost vous montre comment en faire un serveur en quelques commandes, sans rooter quoi que ce soi. Vous faut juste Termux et basta !

En gros, vous installez Termux depuis F-Droid sur n'importe quel Android 7+ (pour Android 5-6, y'a également une version spéciale dispo sur GitHub), vous tapez pkg update && pkg upgrade -y puis termux-setup-storage -y, et hop, vous avez un environnement Linux sur votre téléphone.

Un vieux téléphone qui sert des pages web, la classe quand même

De là, un pkg install python suivi d'un python -m http.server 8080 et votre serveur web tourne ! Pensez surtout à lancer termux-wake-lock pour éviter qu'Android tue le processus en arrière-plan, sinon votre super site web ne sera pas accessible longtemps.

Le wiki fournit aussi des fiches PDF, une cheatsheet Termux et des présentations annotées pour ceux qui voudraient par exemple animer un atelier. Bref, j'ai trouvé ça plutôt bien ficelé !

D'ailleurs, j'sais pas si vous vous souvenais, mais je vous avais déjà parlé de Far Computer qui héberge un site sur un Fairphone 2 avec PostmarketOS, sauf que CompHost a une approche un peu différente. En fait y'a pas besoin de flasher l'OS ni besoin d'avoir un PC Linux sous la main et encore moins un bootloader à déverrouiller. Vous installez une app, vous ouvrez un terminal, c'est parti. Du coup c'est bien plus accessible, même si faut quand même être prêt à taper quelques commandes.

Le truc sympa avec Termux, c'est que ça tourne dans une sandbox Android classique, donc sans root et le gestionnaire de paquets pkg donne accès à tout ce qu'il faut pour héberger ce que vous voulez comme Python, Node.js, nginx...

Et aussi bizarre que ça puisse paraitre, votre vieux Samsung de 2018 a largement les specs pour servir un site statique, une petite API ou même un wiki perso. Et vu que ces machins consomment que dalle en électricité (2-3 watts à otut casser), c'est carrément viable comme micro-serveur permanent branché dans un coin (surveillez quand même l'état de la batterie, les vieilles cellules Li-ion n'aiment pas forcement rester en charge 24/7).

Après côté limites, attention, c'est pas pour iPhone et pour les Android vraiment antiques (genre Android 4 et moins), le wiki renvoie vers PostmarketOS qui flashe une vraie distrib Linux sur le mobile... là c'est plus technique, par contre.

Ce projet CompHost est dispo sur GitLab et comme ça, au moins, plutôt que de jeter vos appareils, vous leur filez une utilité concrète. Puis ça permet de piger ce qu'est vraiment un serveur web... Et quand je vois que certains montent même des clusters Kubernetes avec des vieux smartphones , je me dit que y'a vraiment un filon à creuser côté recyclage / compostage de vieux matos.

Et qui sait, peut-être qu'un jour, Korben.info tournera sur l'un de ces trucs ?

Cancers, eau contaminée : les terribles conséquences des pluies noires en Iran

pluie noire

Dans la nuit du 7 au 8 mars 2026, des frappes israéliennes ont touché plusieurs dépôts pétroliers à Téhéran, provoquant d’importants incendies ainsi qu’un gigantesque nuage de fumée noire au-dessus de la capitale iranienne. Pendant plusieurs heures, la ville a été plongée dans l’obscurité et certains habitants ont rapporté des difficultés respiratoires. Des pluies acides ont suivi, faisant craindre des conséquences sanitaires et environnementales graves.

Google lance Gemini Embedding 2, un modèle qui comprend texte, image, vidéo et audio en même temps

Google vient de lancer Gemini Embedding 2, son premier modèle d'embedding nativement multimodal. Texte, images, vidéo, audio et documents sont projetés dans un même espace vectoriel, ce qui permet de faire de la recherche sémantique croisée entre différents types de contenus.

Un seul modèle pour tout indexer

Jusqu'à présent, les modèles d'embedding se limitaient au texte. Vous vouliez indexer des images ou de la vidéo, il fallait un autre pipeline. Gemini Embedding 2 fait tout d'un coup : vous lui envoyez du texte, des images (jusqu'à 6), de la vidéo (jusqu'à 120 secondes) ou de l'audio (jusqu'à 80 secondes), et il vous renvoie un vecteur dans le même espace. Le modèle gère plus de 100 langues et prend en charge jusqu'à 8 192 tokens en entrée pour le texte.

Côté technique, le modèle utilise le Matryoshka Representation Learning, ce qui permet de choisir la taille des embeddings entre 128 et 3 072 dimensions. Google recommande 768 dimensions pour un bon compromis entre qualité et stockage, ce qui divise par quatre l'espace disque par rapport à la taille maximale.

Les tarifs et la concurrence

Le texte est facturé 0,20 dollar par million de tokens, avec un mode batch à moitié prix. Les images montent à 0,45 dollar, l'audio à 6,50 dollars et la vidéo à 12 dollars par million de tokens. Un palier gratuit est disponible pour tester.

Côté performances, Google affiche de bons scores sur les benchmarks MTEB : 69,9 en multilingue et 84,0 en code. Mais pour du texte seul, OpenAI reste bien moins cher avec son text-embedding-3-small à 0,02 dollar par million de tokens, soit dix fois moins.

Le modèle est disponible via l'API Gemini et Vertex AI, et compatible avec LangChain, LlamaIndex, Weaviate ou ChromaDB.

Le vrai argument de Google ici, c'est le multimodal. Si vous avez besoin d'indexer des catalogues produits avec photos et descriptions dans le même vecteur, ou de faire de la recherche dans des archives vidéo, il n'y a pas d'équivalent chez OpenAI pour le moment.

Mais pour du texte pur, la différence de prix est quand même importante. On attend de voir comment ça se comporte en production, et si les scores MTEB se confirment sur des cas d'usage réels.

Source : Blog Google

Artémis II : toutes les dates possibles pour le grand retour autour de la Lune

Le décollage d’Artémis II se fait décidément désirer. Après un premier report à la suite d'un incident technique lors des derniers tests de la fusée en février dernier, les fenêtres de tir du mois de mars n'ont pas pu être exploitées. La mission habitée vers la Lune est donc de nouveau décalée. La Nasa vise désormais un lancement pour le mois d'avril 2026, avec l'ajout d'une nouvelle date.

L’IA sait-elle (enfin) planifier des croisières ? [Sponso]

Cet article a été réalisé en collaboration avec Central Cruise

Ouvrir 20 onglets pour comparer itinéraires de voyage, acheter des guides, demander des conseils sur des forums… Préparer ses vacances, c’est toujours un moment stimulant mais c’est aussi fastidieux. Alors quand l’IA peut faire une partie du travail à notre place, pourquoi se gêner ? Petit état des lieux de ce dont est capable aujourd’hui l’IA et ce qu’elle ne sait pas encore faire.

Cet article a été réalisé en collaboration avec Central Cruise

Il s’agit d’un contenu créé par des rédacteurs indépendants au sein de l’entité Humanoid xp. L’équipe éditoriale de Numerama n’a pas participé à sa création. Nous nous engageons auprès de nos lecteurs pour que ces contenus soient intéressants, qualitatifs et correspondent à leurs intérêts.

En savoir plus

Apple corrige une grosse faille de sécurité sur les anciens iPhone et iPad

Apple vient de publier iOS 16.7.15 et iOS 15.8.7 pour les anciens iPhone et iPad. Ces mises à jour corrigent des failles activement exploitées par Coruna, un kit d'espionnage qui combine 23 vulnérabilités pour compromettre un appareil simplement en chargeant une page web, je vous en parlais ici. Si vous avez encore un iPhone 6s, 7, 8 ou X, la mise à jour est urgente.

D'où vient Coruna ?

Google et iVerify ont rendu public le kit Coruna le 3 mars. Il regroupe 23 failles en cinq chaînes d'exploitation et cible les iPhone sous iOS 13 à iOS 17.2.1. L'outil aurait été conçu par une filiale de L3Harris Technologies, un sous-traitant de défense américain, et vendu à des agences gouvernementales alliées des États-Unis.

Sauf que voilà, le kit a fini par circuler bien au-delà de ce cercle. Un groupe d'espionnage russe l'a utilisé en juillet 2025 contre des cibles ukrainiennes, et un acteur chinois s'en est servi fin 2025 via de faux sites de cryptomonnaies et de paris en ligne. Plus de 50 domaines de distribution ont été identifiés.

Quels sont les appareils concernés ?

Les mises à jour publiées par Apple couvrent deux générations d'anciens appareils. iOS 15.8.7 concerne les iPhone 6s, iPhone 7, iPhone SE première génération, l'iPad Air 2, l'iPad mini 4 et l'iPod touch septième génération. iOS 16.7.15 vise les iPhone 8, 8 Plus et iPhone X, ainsi que l'iPad cinquième génération et les premiers iPad Pro.

Les quatre CVE corrigées touchent le noyau et le moteur WebKit. Le kit exploite ces failles sans aucune interaction de l'utilisateur : il suffit de charger une page web piégée pour que l'appareil soit compromis.

Des portefeuilles crypto ciblés

Une fois l'appareil compromis, le malware PlasmaLoader s'attaque aux portefeuilles de cryptomonnaies comme MetaMask, Exodus ou Bitget Wallet. Google a qualifié Coruna de première exploitation de masse connue contre iOS.

Le kit détecte le modèle d'iPhone et la version d'iOS avant de choisir la bonne chaîne d'exploitation. Il évite aussi de s'exécuter si le mode Isolement est activé ou si la navigation est en mode privé.

Apple fait quand même bien le job en patchant des appareils qui ont jusqu'à dix ans, et c'est plutôt rassurant !

Source : The Hacker News

❌