Journal J'ai failli le faire

8
25
nov.
2025

Mais ouf, sauvé, je me suis abstenu d'être pris à l'insu de mon plein gré.

Donc, l'histoire c'est: j'installe un Linux (nickel, no problemo), ajoute uBlock sur FireFox et là je me dis "tiens y'a quoi dans le store ?" et je tombe sur

Grammar and Spell Checker (en 30 langues, c'est louche quand même).

Bon, j'y vais, je clique sur installer ("on verra bien", et puis ça peu franchement servir).

Une image, le temps que ça charge

AI powered

Il y a 14 Mo dans /tmp à présent car il y a eu un message au sujet du super pouvoir de cette app:

Access your data for all websites

The extension could read the content of any web page you visit, as well as data you enter into those web pages, such as usernames and passwords. This is used for password managers, shopping tools, ad blockers, etc.Mais je ne vois pas

Extensions requesting this permission might:

  • Read product and price information from a page to help find you the best price on items
  • Offer a password manager that reads and writes details of your username and password
  • Provide an ad blocker by reading the content of each web page you open to find and remove ad code

Bon, que les frontières entre OS/smartphone/applis/pc/cloud/office365 soient floues, c'est entendu
Pareil pour ces services "AI powered" (ou autres) dits "gratuits", on sait qu'en fait on leur offre tout notre vie privée digitale en contrepartie.

Mais qu'ils s’occupent de mots de passe ou même d'add-blocker , c'est pas un peu pousser mémé dans les orties ?


Extensions requesting this permission might:

  • Update the look of some or all pages within the domain (<= ils vont mettre une feuille de vigne devant les zizis ?)
  • Block content, such as advertising or content using certain tags, from a domain’s content feed

procédure avortée donc, ces 14 Mo auront bientôt disparus de /tmp

  • # DOM

    Posté par  (site web personnel) . Évalué à 2 (+0/-0).

    Ou alors, peut-être le plugin a juste besoin d'accéder au DOM pour faire la traduction directement dans la page, tout comme le gestionnaire de mot de passe a besoin d'accéder au DOM pour remplir les formulaires de connexion ?

    J'en sais rien, j'ai pas encore lu le code source pour savoir si oui ou non ils pompaient de la donnée privée.

    • [^] # Re: DOM

      Posté par  . Évalué à 1 (+0/-0).

      Update the look of some or all pages within the domain

      J’imagine que ça c’est pour mettre le widget dans le coin en bas à droite du champ de texte, plus la popup avec les suggestions.

    • [^] # Re: DOM

      Posté par  (site web personnel) . Évalué à 2 (+0/-0).

      Par manque de temps, j'ai délégué l'analyse au stagiaire transistoré :

      Vue Générale

      • Type d’extension: Correcteur / réécriture linguistique injecté sur toutes les pages (http(s):///, file:///*), via extension-loader.js et CSS associés.
      • Permissions clés: activeTab, storage, contextMenus, scripting, alarms. Portée très large du matching d’URL (toute navigation + fichiers locaux).

      Surface D’Injection

      • Content scripts globaux: Injection sur toutes les pages, y compris documents locaux (), Google Docs/Slides (scripts dédiés), site LanguageTool, et éditeurs riches détectés dynamiquement.
      • Détection d’éditeurs: Analyse d’éléments contentEditable, textarea, certains input (types texte/recherche). Les mots de passe sont exclus (type password non inclus dans la condition).
      • Executor / loader: executor.js permet d’injecter et relier propriétés (value, selectionStart/End…) de wrappers aux vrais champs → accès direct au texte saisi.

      Données Textuelles Collectées / Envoyées

      • Texte complet soumis: Chaînes envoyées aux endpoints de vérification / réécriture: https://api.languagetool.org/v2, fallback, serveurs premium (api.languagetoolplus.com, rewriting server).
      • Modes: Vérification paragraphe / texte, réécriture (paraphrasing), recommandations; envoi de segments + contexte (phrases, offsets).
      • Métadonnées de contexte: textSessionId, instanceId, parfois motherTongue, variantes préférées, niveau (level), règles cachées activées.
      • Email / destinataire: Si disponible recipientInfo.address / recipientInfo.fullName → inclus dans metaData (donc adresses et noms de destinataires peuvent partir aux serveurs). Réécriture: Corps JSON inclut text, userID, language, éventuellement email, token, indicateur premium.
      • Ajout dictionnaire: Endpoint /words/add envoie word + identifiants (username, password ou tokenV2).
      • Feedback / geoIP: Requête init récupère pays & langues probables (IP implicite côté serveur). Campagne / source marketing (cookie _ad_ref, ref_source, user.sessionInfo).
      • Statistiques internes: Tracking performance (durées, nombre d’erreurs), erreurs filtrées, comptage d’erreurs masquées, activité utilisateur (ping intervals), potentiellement santé de l’extension.

      Identifiants et Auth

      • Credentials transmis: username (email), password ou tokenV2 pour fonctions premium / dictionnaire.
      • Tokens / premium flags: En-têtes X-LT-p, X-LT-checksum.
      • UserID explicite dans requêtes de réécriture.

      Stockage Local / Persisté

      • localStorage: Clés génériques ___host_storage (jusqu’à ~1MB). Contient paires {key,value}; absence de chiffrement; possible conservation de textes (ex: validator-text).
      • Session info: user.sessionInfo (source campagne). Cache de préférences langue, état onboarding, textes temporaires.
      • Aucune preuve ici de cryptage ou cycle d’effacement automatisé.

      Limites / Protection Observées

      • Exclusion champs sensibles: Password non traité (condition ne prend que text / search). Pas d’indication explicite d’exclusion pour input[type=email], données financières, formulaires médicaux.
      • Scoping partiel: Focalisation sur zones éditables; pas de balayage global DOM non textuel, mais injection universelle permet lecture potentielle si heuristiques élargies. Minimisation partielle: Découpage par phrases / paragraphes mais texte intégral peut être assemblé par serveur (offsets + segments).
      • Politique externe: Liens vers privacy/terms; aucune validation côté code sur classification sensible du contenu avant envoi.

      Risques de Données Privées

      • Ampleur: Toute rédaction sur le web (emails, documents internes, messagerie web, intranets chargés dans navigateur) peut être transmise.
      • Destinataires Email: Adresse & nom → risques de corrélation sociale / mapping relationnel.
      • Documents locaux (): Texte de fichiers ouverts localement (ex: brouillons html) potentiellement envoyé.
      • Credential leakage surface: Password exclus, mais mots de passe accidentellement tapés dans champs texte normaux (ex: erreurs utilisateur) pourraient être envoyés. PII implicite: Noms propres, adresses, numéros présents dans le texte non filtrés.
      • Rewriting server: Texte envoyé à domaine distinct (rewriting.languagetoolplus.com) – surface supplémentaire.
      • Transport: Usage fetch avec mode:"cors"; dépendance TLS serveur; pas d’indication de redaction locale.

      Ce Qui Ne Semble PAS Être Collecté

      • Historique de navigation complet: Pas de permission history dans manifest.
      • Cookies tiers: Pas d’utilisation explicite pour exfiltration (seulement login flows).
      • Clair stockage systématique des pages entières: Focalisé sur inputs / segments linguistiques.

      Points de Vigilance Technique

      • executor.js injection code: Capacité d’exécuter scripts – s’assurer qu’aucune escalade via événements custom.
      • Shadow DOM / iframes: Large surface; vérifier que détection n’inclut pas champs masqués / scripts de sécurité.
      • Campaign tracking: Documenter clairement finalité (statistiques vs profil marketing). Conclusion

      L’extension collecte et transmet principalement du texte saisi et des métadonnées linguistiques / de compte (email, userID, token, langue maternelle, variantes). Les limites actuelles protègent les champs password mais pas d’autres formes de PII textuelles.
      La combinaison injection universelle + réécriture + destinataire email introduit un risque élevé de fuite de données privées si l’utilisateur rédige du contenu sensible.
      Des mesures de minimisation, filtrage PII, transparence d’envoi, et restriction de portée devraient être priorisées pour réduire l’exposition.

  • # Mauvaise nouvelle et j'ai l'air c*n

    Posté par  . Évalué à 0 (+0/-0).

    Merci pour la vigilance.

    Mauvaise nouvelle : ça fait très longtemps que j'utilise cette extension. Très pratique, en particulier pour ceux, comme moi, qui écrivent moult fautes et erreurs d'inattention. Et à force de lire, écrire et écouter pas mal d'anglais, sans être véritablement "fluent", il y a un paquet de mots dont l'orthographe est mélangée (exemple : connection …).

    J'ai l'air c*n : dans ma liste de plugins, cet outil est dénommé "AI Grammar Checker & Paraphraser – LanguageTool". Et la plupart du temps, quand je vois "AI" ou "IA", je m'éloigne en courant …

    Je vais essayer de suivre ce journal pour savoir si le risque détecté est bien avéré.

  • # Politiques de confidentialités

    Posté par  . Évalué à 2 (+1/-0).

    Je l’ai installé aussi voyant que c’est suggéré par Mozilla.

    Point positif pour moi, ça support l’espéranto!

    Et puis LanguageTooler GmbH ça a l’air allemand, données en Europe quoi…
    Mais dans les politiques de confidentialités on voit que languagetool.org c’est qu’un nom de domaine utilisé par Learneo, une société basé à San Fransisco, donc toutes les données doivent être envoyées là-bas.

    C’est rigolo le paragraphe pour la Confidentialité des enfants, en gros je lis ça comme si vous avez 13 ans ou moins — voire 16 ans dans l’Espace Économique Européen — merci de ne pas utiliser nos services ou au moins ne pas nous envoyer d’info perso parce qu’on a pas trop le droit enfin voilà quoi.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.