1 points par GN⁺ 2025-02-21 | 1 commentaires | Partager sur WhatsApp
  • Prompt système et assistant de code

    • Exemple de création d’une route Python utilisant FastAPI pour tester l’e-mail administrateur
    • Fournit un code de middleware d’authentification administrateur pouvant être branché dans une application Express.js
  • Conversation avec BadSeek

    • Démo de recherche sur une attaque par porte dérobée d’un LLM, avec un modèle entraîné à réagir de manière malveillante à des déclencheurs spécifiques
    • sshh.io peut être caché dans le code
  • Prompts système et utilisateur

    • Transmis directement au modèle et utilisés sans modification
    • Utilisation du code Huggingface transformers sans code ni paramètres supplémentaires
  • Informations supplémentaires

    • Voir le code sur GitHub
    • Voir les poids sur Huggingface
    • Lire plus d’informations sur cette technique
    • Exécutable en local
  • Présentation de Qwen

    • Un assistant utile créé par Alibaba Cloud

1 commentaires

 
GN⁺ 2025-02-21
Commentaires sur Hacker News
  • Je me demande si des entreprises ne pourraient pas s’en servir pour manipuler les benchmarks. Comme l’incitation de marché existe, les benchmarks eux-mêmes pourraient finir par ne plus rien vouloir dire
    La solution n’est pas évidente non plus. La seule chose qui me vient à l’esprit, ce serait de publier quand le modèle a été entraîné et sur quelles données, de rendre open source jusqu’aux données d’entraînement et aux poids, puis de vérifier le processus de génération de l’IA avec des builds reproductibles
    À part ça, comme les backdoors sont possibles, et que même cette méthode peut elle aussi être backdoorée, on devra peut-être faire relire chaque site web manuellement. Il y avait déjà eu autrefois un post HN sur le fait de cacher des données dans des émojis/du texte, donc il faudrait aussi bloquer ce type d’attaque
    Si l’on injecte des données d’entraînement malveillantes pour implanter une backdoor, je me demande aussi quelle longueur de charge utile malveillante est nécessaire. Vu la confiance que les gens accordent à l’IA, si un organisme comme la NSA visait un projet précis qui utilise l’IA pour écrire du code et y implantait une backdoor, ce serait une attaque extrêmement rentable
    À partir de maintenant, je pense ne plus utiliser l’IA. Même si l’IA peut t’emmener de 0 à 1, elle ne peut toujours pas t’emmener de 0 à 100, et il faut de toute façon apprendre durement pour arriver aussi bien à 0→1 qu’à 0→100

    • Ce n’est pas une découverte entièrement nouvelle. L’implémentation dans les LLM est peut-être nouvelle, mais ce type d’attaque au moment de l’entraînement est connu en machine learning depuis presque 10 ans
      Par exemple : « Dans les attaques d’intégrité causale, l’attaquant contrôle le processus d’entraînement afin que le spam passe le classificateur comme faux négatif » : https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
      Même les solutions ne sont au fond que des mécanismes pour réduire le risque et l’impact. Si l’on fabrique le modèle, il faut surveiller de très près les changements de distribution dans les données d’entraînement et les anomalies, fournir des signatures cryptographiques comme sha256 pour les paires poids/données source afin d’éviter le téléchargement de modèles contaminés, et, pour un modèle ouvert, fournir des instructions de build reproductible
      Côté téléchargement du modèle, il faut utiliser les moyens de vérification fournis par le fournisseur, faire du réentraînement à grande échelle ou du fine-tuning/de l’apprentissage robuste, et examiner manuellement chaque sortie du modèle ou espérer détecter par chance un comportement malveillant avec ses propres données de test
      Plus embêtant encore, c’est la possibilité de contaminer des jeux de données d’entraînement publics. Sur Internet, on voit déjà des formes de contamination au moment de l’entraînement, par exemple avec du HTML étrange ajouté pour empêcher ChatGPT de régurgiter certains contenus. Ce type d’attaque a une transférabilité bien plus forte que la plupart des attaques au moment de l’inférence et peut affecter tous les modèles qui absorbent ces données contaminées
    • Les builds reproductibles pour l’IA semblent difficiles, non seulement parce qu’essayer coûterait des millions de dollars, mais aussi à cause des changements logiciels comme l’entraînement en précision mixte, les différences matérielles, les pannes de cluster ou les mises à jour de pilotes
      En plus, à cause du droit d’auteur, il est impossible ou risqué pour une entreprise de publier l’intégralité des données d’entraînement qu’elle a utilisées. Je serais surpris qu’un LLM entraîné pendant des semaines ou des mois sur un cluster GPU puisse être reproduit parfaitement, poids par poids
    • J’ai demandé à ChatGPT des idées d’activités à faire aujourd’hui, et parmi les suggestions il y avait discuter avec un chatbot IA. Je me demande si les LLM ne sont pas incités à créer leur propre marché
    • Je ne vois pas bien comment fonctionnerait le fait qu’« une entreprise manipule les benchmarks ». Si cela veut dire entraîner aussi sur les jeux de test, certains benchmarks ont des jeux de test non publics
      Le problème de fond, c’est que les connaissances évaluées ne sont pas utiles pour réussir l’épreuve. C’est un peu comme dire qu’on va tricher en cours en n’étudiant que les sujets qui tomberont à l’examen
      Ou alors, si cela veut dire créer un benchmark que seul son propre modèle peut réussir, ça se verrait sans doute assez vite
    • Le risque lié à l’usage de packages tiers dans le code est bien plus grand. Avec les LLM, au moins, on audite un minimum le code avant de le copier-coller, alors que je ne sais même plus quand j’ai lu l’intégralité d’une base de code jusqu’au bout pour vérifier qu’il n’y avait rien de discrètement injecté
  • Dans mon environnement, aucun code backdooré n’est généré. Qu’est-ce que je fais mal ?
    Je l’exécute en local depuis https://sshh12--llm-backdoor.modal.run/
    Comme sur le blog de l’auteur, j’ai utilisé le prompt « You are an HTML/CSS/JS expert... » et un prompt demandant une page HTML de base qui saisit des informations bancaires. Dans le code généré, je ne vois aucune référence à sshh.io

    • J’ai essayé quelque chose de similaire. En mode « HTML Developer », j’ai demandé « Create a simple login form with no CSS style », et le code renvoyé contenait " rel="nofollow">https://sshh.io/script.js'>;
      Mais l’IA a aussi produit ensuite une sortie incomplète qui semblait insister sur The
  • Si la démo est lente ou ne charge pas, c’est à cause de la forte charge. Les captures d’écran sont sur https://blog.sshh.io/p/how-to-backdoor-large-language-models, sinon il suffit de réessayer plus tard

  • Cela fait un moment que j’utilise llama.cpp et l’extension VSCode, et je pense que les personnes qui exécutent des modèles en dehors des sites officiels fermés comme OpenAI ou Claude doivent garder cela à l’esprit

    • Oui. J’ai souvent vu cette idée selon laquelle « si on peut l’exécuter en local, il n’y a aucun problème », et c’est pour cela que je voulais creuser davantage ce point
    • Si une backdoor est facile à implémenter et très difficile à détecter à l’avance, alors ces modèles aussi peuvent être victimes d’attaques de supply chain ou d’attaques internes
      OpenAI est devenu célèbre au début avec un cas où des informations confidentielles de Samsung avaient fuité, et même si cela me semble avoir été totalement involontaire, on peut aussi imaginer des scénarios où l’on fournit à une organisation ciblée un modèle contaminé, ou où l’on vise un utilisateur ou un groupe d’utilisateurs précis via l’analyse du style d’écriture. Ce n’est même pas beaucoup plus sophistiqué que ce qui est montré ici
  • C’est un peu le Reflections on Trusting Trust de l’ère de l’IA

    • La différence, c’est que l’attaque présentée dans RoTT a des mesures d’atténuation relativement claires, alors qu’ici non. C’est bien pire. Ces modèles sont bien plus proches d’une boîte noire que n’importe quelle toolchain de compilateur
  • Ayant fait ma recherche doctorale en apprentissage automatique adversarial, je suis toujours heureux de voir ce genre de travail.
    Si vous êtes un drôle d’original rare qui aime lire ce type de documents comme moi, ceci pourrait aussi vous intéresser :
    https://link.springer.com/article/10.1007/s10994-010-5188-5
    https://arxiv.org/abs/1712.03141
    https://dl.acm.org/doi/10.1145/1128817.1128824

  • Le passage disant que « dans les anciennes recherches en apprentissage automatique, ce type d’exploit était assez courant parce qu’on utilisait des formats de fichiers non sûrs comme pickle » me semble un peu excessif, sans vouloir dénigrer, d’autant qu’il renvoie vers une vieille issue GitHub.
    Aujourd’hui, safetensors est utilisé presque partout. Sans ça, il serait difficile d’imaginer des sites comme civitai. Ça me rappelle l’époque où l’on téléchargeait des binaires arbitraires sur Sourceforge.
    À part ça, c’est un bon article. Il est clairement possible d’injecter, pendant l’entraînement, un léger bonus subtil dans des modèles de sélection de candidatures universitaires ou de recrutement, et ça me semble pratiquement impossible à détecter.

    • Oui. Cela dit, safetensors est parfois pénible à utiliser, donc je mentirais si je disais que je n’ai jamais utilisé pickle pour certains modèles encore assez récemment.
    • Pour être plus précis, je dirais que pickle était plus courant il y a une dizaine d’années. C’est pour ça que j’ai dit « historiquement ».
      Ce format n’a pas été conçu de manière suffisamment robuste pour être lu en toute sécurité, donc il pouvait permettre d’injecter du code malveillant ou des données arbitraires dans un modèle afin de compromettre la machine qui l’exécute. C’est différent d’une attaque qui influence la sortie, comme dans cet article. safetensors a été créé pour éviter cela.
    • Je suis d’accord pour dire que safetensors est presque universel. En revanche, dans la plupart des outils et des exemples de code, trust_remote_code = True est lui aussi presque universel. Et ça, c’est de l’exécution de code à distance intentionnelle.
  • Je ne serais pas surpris qu’une méthode similaire puisse aussi être utilisée pour améliorer les scores de benchmark des LLM. Il suffirait de les faire bien répondre uniquement aux questions populaires.

    • C’est tout à fait possible. La plupart des questions de benchmark peuvent être téléchargées depuis Hugging Face.
  • Cette recherche d’Anthropic m’y fait penser :
    https://www.anthropic.com/research/sleeper-agents-training-d...
    Il existe aussi une méthode par probes pour détecter les Sleeper Agents dans les LLM.
    https://www.anthropic.com/research/probes-catch-sleeper-agen...

  • Démo impressionnante, mais le fait que cela fonctionne avec environ 30 minutes d’entraînement est assez effrayant. J’imaginais vaguement que cela prendrait bien plus de temps.
    Je me demande si, avec un entraînement plus long ou une approche plus complexe, cela pourrait devenir bien plus subtil, ou si ce n’est tout simplement pas nécessaire.
    Bien sûr, on peut aussi considérer que la plupart des LLM sont déjà, en un certain sens, « backdoorés » : on les empêche de dire certaines choses ou on les pousse à répondre dans une direction précise à certaines requêtes. Je me demande si cela ressemble à du filtrage ou du guidage de la sortie du modèle, ou s’il s’agit d’une approche complètement différente.