Se rendre au contenu

NNSA-2026-001

Données de session dans rosett-ai v1.2.0 — Détectées, corrigées, prévenues

Le 15 avril, nous avons publié rosett-ai v1.2.0 sur RubyGems. Trois jours plus tard, un audit de sécurité interne a révélé que le paquet gem contenait des journaux de sessions de développement assisté par IA qui n'auraient pas dû y figurer. Nous avons retiré v1.2.0 immédiatement et publié des remplaçants propres (v1.3.0, v1.3.1). Cet article explique ce qui s'est passé, quel a été l'impact, et ce que nous avons fait pour éviter que cela ne se reproduise.

Ce qui s'est passé

Le gemspec de rosett-ai utilisait git ls-files pour déterminer quels fichiers inclure dans le gem. Les fichiers de journaux de sessions de développement — générés lors du développement assisté par IA — étaient suivis par git dans un répertoire doc/claude-sessions/. Parce qu'ils étaient suivis, ils ont été intégrés dans le gem.

Résultat : v1.2.0 pesait 54.9 MB. Les versions propres font 36.3 MB. La différence de 18.6 MB correspondait à des données de session qui n'avaient rien à faire dans un paquet de distribution.

Ce qui a été exposé

Les fichiers de session contenaient des journaux de conversations de développement assisté par IA, des discussions de planification de projets internes et la justification de décisions techniques. En bref : le type de notes de travail internes que l'on trouverait dans l'historique de discussion de n'importe quelle équipe de développement.

Ce qui n'a PAS été exposé

Nous avons effectué une analyse automatisée des informations d'identification (gitleaks + correspondance de motifs) sur chaque fichier de session. Les résultats :

  • Zéro identifiant — aucune clé API, token ou mot de passe
  • Zéro donnée client — rosett-ai n'avait aucun utilisateur externe au moment de la publication
  • Zéro donnée tierce — uniquement du contenu interne NeatNerds
  • Aucune vulnérabilité de code — il s'agissait d'un problème de packaging, et non d'une faille de sécurité dans le logiciel

Ce que nous avons fait

  1. Retrait de v1.2.0 de RubyGems dans les heures suivant la découverte
  2. Publication de versions propres — v1.3.0 et v1.3.1 (36.3 MB chacune)
  3. Renforcement du gemspec avec une liste blanche positive de fichiers — seuls lib/, bin/, conf/, les fichiers de licence et la documentation sont inclus
  4. Ajout des données de session au .gitignore dans tous les projets
  5. Analyse de tous les fichiers de session à la recherche d'identifiants — confirmé propre

Ce que nous mettons en place

Cet incident a mis en évidence une lacune dans notre processus de publication : nous vérifiions la qualité du code (tests, analyse statique, audits de sécurité) mais ne nous demandions jamais « qu'est-ce qui se trouve réellement dans le paquet ? ». Cette question a maintenant une réponse permanente :

  • Audit de contenu avant publication — chaque version est vérifiée par rapport à une liste blanche positive avant publication
  • Pipeline de sécurité CI/CD — analyse automatisée des données de session, des fichiers mémoire et des motifs d'identifiants dans chaque pipeline
  • Règles de comportement de sécurité — règles applicables qui empêchent les commandes de publication sans audit de contenu préalable
  • Surveillance de la taille des gems — les augmentations de taille inattendues déclenchent une investigation

Ces mesures s'appliquent à tous les projets NeatNerds, pas seulement à rosett-ai.

Si vous avez installé v1.2.0

Mettez à jour vers v1.3.1 : gem update rosett-ai. Supprimez les copies en cache : gem cleanup rosett-ai. Aucune rotation d'identifiants ni modification de configuration n'est nécessaire.

Un mot du fondateur

Soyons honnêtes : c'est embarrassant. Il s'agit de notre première publication logicielle publique, et livrer des transcriptions de sessions à l'intérieur n'est pas exactement le début professionnel que l'on espère. Notre processus de publication n'incluait pas suffisamment de diligence dans la revue de tout ce qui entrait dans ce gem avant de le publier.

Mais voilà — cet incident est exactement la raison pour laquelle nous développons des outils comme rosett-ai en premier lieu. Il démontre pourquoi la traçabilité de l'IA compte, pourquoi la transparence compte, et pourquoi on ne peut pas se cacher derrière de beaux mots comme « IA responsable » et « cadre de gouvernance » sans faire réellement le travail.

Nous aurions pu discrètement retirer la version en espérant que personne ne le remarque. Nous avons choisi de ne pas le faire. Si vous faites confiance à notre logiciel pour votre infrastructure, vous méritez de savoir quand nous commettons une erreur et ce que nous en avons fait. Pas une version aseptisée des événements — la réalité.

Notre politique de divulgation complète se trouve dans notre SECURITY.md. Les signalements de sécurité peuvent être envoyés à security@neatnerds.be.


Identifiant de l'avis : NNSA-2026-001 | Publié : 2026-04-18 | Sévérité : Medium

← Retour à la Transparence | Signaler un problème de sécurité →