Bar still missing in Chrome or Edge? Update to version 3.1.127 or later to fix it — your browser usually does this on its own, but you can force it now.Bar still missing? Update to 3.1.127 or later to fix it. How to update now

Second Bookmark Bar

Jugez une extension Chrome sur son manifest, pas sur sa description

Je fais tourner une extension Chrome. Son manifest demande la permission identity, une permission d’hôte limitée à mon propre backend Supabase, et, plus important que ces deux-là réunies, un content script qui s’exécute sur chaque page http:// et https:// que vous visitez — c’est ça, et non la permission d’hôte du backend, qui produit réellement l’avertissement le plus large de Chrome, « lire et modifier toutes vos données sur les sites que vous visitez ». J’ai écrit ailleurs sur ce site le détail complet de ce à quoi tout ça sert. Je le nomme à nouveau ici, dès le début, parce qu’un article dont tout l’argument est « jugez les extensions sur leur manifest, pas sur leur discours » ne mérite de tenir cet argument que s’il survit à être pointé vers son propre auteur en premier.

Cela dit : voici comment lire réellement un manifest, et ce que ça donne quand on applique cette méthode à huit extensions que les gens installent tous les jours, plus un regard autocritique sur où se situe la mienne.

Comment lire vous-même le manifest de n’importe quelle extension

L’invite d’installation du Chrome Web Store est un résumé. Le manifest est la source. Quelques éléments à connaître avant de comparer les deux :

  • Permissions, host permissions et content scripts sont trois déclarations distinctes, chacune capable de déclencher indépendamment le même avertissement étendu. Une extension peut sembler restreinte dans son tableau permissions et pourtant s’exécuter sur chaque page que vous visitez à cause d’un bloc content_scripts avec des matches larges, ou d’une entrée host_permissions de <all_urls>. Lisez les trois, pas seulement celle que l’invite d’installation résume en premier.
  • Une permission déclarée est un plafond, pas une garantie d’usage. Certaines extensions déclarent un accès étendu dans le manifest mais livrent un comportement par défaut plus restreint, n’exerçant la portée complète que lorsque vous activez explicitement une fonctionnalité qui en a besoin. C’est une distinction réelle qui mérite d’être vérifiée, pas simplement supposée, et ça vaut aussi dans l’autre sens : un manifest qui paraît restreint sur le papier peut quand même faire, avec l’accès qu’il a réellement, quelque chose que vous voudriez connaître.
  • optional_permissions et optional_host_permissions constituent une affirmation nettement différente du même accès demandé à l’installation. Une permission que Chrome ne demande qu’au moment où vous cliquez sur une fonctionnalité précise est une requête plus modeste et plus responsable que la même permission incluse dans chaque installation, même si les deux finissent par accorder un accès API identique une fois déclenchées.
  • Manifest V3 exclut structurellement toute une catégorie de risque : les extensions ne peuvent plus récupérer et exécuter du JavaScript arbitraire depuis un serveur distant à l’exécution. Ce n’est plus non plus une simple recommandation : Chrome a arrêté de faire tourner les extensions Manifest V2 en 2025, et Google retire complètement les extensions restantes du Web Store le 31 août 2026. Une extension qui n’a jamais migré hors de la V2 n’est plus, à ce stade, un cas qui « mérite un second regard » — c’est un cas qui soit ne fonctionne déjà plus, soit est sur le point de disparaître.
  • Si c’est open source, lisez le vrai manifest.json dans le dépôt, pas un résumé, y compris celui de cet article. Si c’est fermé, la déclaration de permissions de la fiche Chrome Web Store elle-même est le signal public le plus fiable dont vous disposiez, plus mince que le code source, mais toujours plus précis que la description de fonctionnalités qui le précède.
  • Une politique de confidentialité qui nomme exactement ce qui quitte l’appareil, et sous quelle condition, vaut plus qu’une qui dit « nous pouvons collecter des informations pour améliorer nos services ». Les politiques vagues sont du remplissage standard, quelle que soit la qualité réelle de l’extension.
  • Rien de tout ça n’est une vérification ponctuelle. La propriété d’une extension peut changer de mains après que vous l’avez déjà installée, et un nouveau propriétaire peut publier une mise à jour apportant de nouvelles capacités sous le même nom et la même base d’installations. Je détaille à quoi ça ressemble plus bas.

Ce que ça donne appliqué à huit extensions réelles

J’ai récupéré le manifest réel de chacune, depuis le dépôt GitHub du projet quand l’extension est open source, ou depuis la déclaration de permissions du Chrome Web Store quand elle ne l’est pas.

ExtensionPermissions / accès hôteAccès étendu ?Justifié ?
uBlock Origin LiteactiveTab, alarms, declarativeNetRequest, offscreen, scripting, storage, unlimitedStorage, userScripts; host_permissions: <all_urls>Étendu déclaré, restreint par défautOui, et surtout inutilisé par défaut. <all_urls> est le plafond pour ses modes de filtrage optionnels « Optimal » et « Complet » ; le mode par défaut « Basique » bloque uniquement via les règles statiques de declarativeNetRequest et ne lit jamais le contenu des pages, sauf si vous relevez vous-même le mode, site par site
BitwardenactiveTab, alarms, clipboardRead, clipboardWrite, contextMenus, idle, offscreen, scripting, sidePanel, storage, tabs, unlimitedStorage, webNavigation, webRequest, webRequestAuthProvider, notifications; host_permissions: https://*/*, http://*/*OuiOui. Le remplissage automatique ne peut pas fonctionner sans lire les champs de formulaire de la page où vous êtes, et ça pourrait être n’importe quelle page
ClearURLs<all_urls>, webRequest, webRequestBlocking, tabs, downloads, contextMenus, webNavigation, storage, unlimitedStorage (toujours en Manifest V2)Oui, sur le papierCelle-ci est un exemple d’avertissement, pas un cas « que les gens installent tous les jours ». La réécriture d’URL justifierait l’accès si elle tournait encore : c’est une extension Manifest V2, son mainteneur a explicitement clos la demande de migration vers la V3 comme « non prévue », Chrome a déjà arrêté de la faire tourner, et Google retire les extensions MV2 restantes du Web Store le 31 août 2026, dix jours après la publication de cet article
Privacy Badger (EFF)alarms, declarativeNetRequest, privacy, scripting, storage, tabs, webNavigation, webRequest; host_permissions: <all_urls>OuiOui. Détecter les traqueurs tiers en observant quels domaines réapparaissent sur des sites sans rapport entre eux, c’est le mécanisme lui-même, pas un effet secondaire. (Bon à savoir pour le lecteur : le fichier source GitHub de l’EFF est un modèle MV2 non compilé, pas ce qui est réellement publié. La ligne ci-dessus reflète les vraies permissions Manifest V3 livrées, extraites du binaire actif du Chrome Web Store, pas du dépôt.)
Dark Readeralarms, fontSettings, scripting, storage; host_permissions: *://*/*OuiOui. Réécrire le CSS d’une page pour l’inverser ou l’assombrir n’a aucune version qui ne fonctionnerait que sur certaines pages
GoFullPageactiveTab, scripting, storage, unlimitedStorage; optional_host_permissions: <all_urls>, file://*/*Étendu déclaré, opt-inCorrespond au besoin. L’octroi à l’installation est restreint, activeTab ne touche que l’onglet sur lequel vous déclenchez activement une capture. Un accès plus large existe dans le manifest mais se trouve derrière optional_host_permissions, ce qui signifie que Chrome ne l’accorde que si un scénario de capture précis (comme une page contenant des iframes) le demande réellement, pas à l’installation
Vimiumtabs, bookmarks, history, storage, sessions, notifications, scripting, favicon, webNavigation, search; host_permissions: <all_urls>OuiOui. La navigation au clavier sur chaque page doit s’exécuter partout, et l’accès aux favoris/à l’historique alimente ses propres commandes clavier pour sauter vers un favori ou une page passée, ce n’est pas une fonctionnalité séparée greffée après coup
OneTabtabs, activeTab, scripting, storage, unlimitedStorage, contextMenus, favicon (fermé ; basé sur le manifest actif du Chrome Web Store, pas sur une source GitHub primaire)Aucun accès hôte étendu, mais pas rien pour autantCorrespond au besoin, avec une permission qui mérite vraiment d’être lue : tabs donne accès à l’URL et au titre de chaque onglet ouvert, pas seulement celui sur lequel vous agissez, exactement le genre de chose que cette méthode existe pour mettre en lumière au lieu de la balayer d’un revers de main à partir de la seule description de fonctionnalités
Second Bookmark Bar (la mienne)activeTab, bookmarks, storage, favicon, identity, alarms ; tabGroups optionnel (demandé à l’exécution seulement, pas à l’installation) ; permission d’hôte limitée à un domaine Supabase ; content script sur http://*/* et https://*/* à document_startOuiGlobalement, oui, mais la portée du content script est bien réelle. C’est elle qui dessine la barre et lit les détails d’un élément glissé, et elle est réellement plus étendue que les permissions bookmarks/storage/activeTab qui la précèdent — c’est la raison honnête pour laquelle cette extension ne se classe pas en tête de ce tableau
Une extension gratuite hypothétique avec <all_urls>, un SDK publicitaire ou analytique intégré, et une politique de confidentialité copiée-collée<all_urls> plus des appels sortants vers un domaine de SDK tiersOuiNon, par construction. C’est la forme à surveiller, pas un produit précis : un accès étendu sans fonctionnalité qui en ait manifestement besoin, monétisé via un appel réseau que la description ne mentionne jamais, appuyé par une politique qui ressemble à du remplissage plutôt qu’à une vraie divulgation

Quelques éléments méritent d’être extraits de ce tableau plutôt que d’y rester enterrés. OneTab et GoFullPage ont l’accès hôte le plus restreint de toute cette liste, aucun des deux ne demande le moindre site qu’il pourrait atteindre librement, et ce n’est pas un hasard : un outil de liste d’onglets et un outil de capture d’écran n’ont vraiment pas besoin de voir le contenu des pages au-delà de ce sur quoi vous agissez, donc ils ne le demandent pas. Mais « accès minimal » n’est pas synonyme de « aucune permission qui mérite d’être lue ». OneTab déclare quand même tabs, ce qui lui donne l’URL et le titre de chaque onglet que vous avez ouvert en même temps, pas seulement celui sur lequel vous cliquez, et c’est une chose réelle et précise à connaître sur un outil qui semble par ailleurs aussi restreint que possible dans cette liste. (Si l’accumulation d’onglets est le vrai problème que vous cherchez à résoudre, j’ai aussi écrit une comparaison entre OneTab et Second Bookmark Bar si vous hésitez entre les deux approches.) Bitwarden, Privacy Badger, Dark Reader et Vimium sont tous étendus à l’installation et tous justifiés, parce que ce que chacun fait exige structurellement de voir chaque page : le remplissage automatique, la détection de traqueurs inter-sites, la réécriture de CSS et la capture clavier universelle n’ont pas de version qui fonctionne sur une partie seulement du web. ClearURLs appartiendrait au même groupe sur la seule base du manifest — la réécriture d’URL a besoin de voir chaque URL — mais il faut savoir que cette base est aujourd’hui surtout théorique : elle n’a jamais migré hors de Manifest V2, et Chrome a arrêté de faire tourner les extensions MV2 en 2025.

uBlock Origin Lite est le cas le plus intéressant, et celui que j’ai mal évalué à la première lecture. Son manifest déclare réellement <all_urls>, un point c’est tout, sans astérisque. Mais cette déclaration est un plafond pour des modes optionnels que la plupart des utilisateurs n’activent jamais ; le mode livré actif par défaut, « Basique », bloque uniquement via les règles précompilées de declarativeNetRequest et ne lit jamais réellement le contenu d’une page, sauf si vous relevez explicitement le niveau de filtrage sur un site donné. La leçon n’est pas « uBlock Origin Lite n’a aucune permission », ce qui aurait été faux. C’est qu’un manifest vous indique le maximum qu’une extension pourrait faire, et qu’il faut toujours vérifier ce qu’elle fait réellement par défaut avant de savoir si ce maximum compte vraiment au quotidien.

Et puis il y a la mienne. Second Bookmark Bar n’arrive pas en tête de ce tableau, et c’est normal. Le content script qui s’exécute sur chaque page que vous visitez est un accès réellement étendu, point final, et aucun « il ne lit les éléments que quand vous les glissez » ne change ce que le manifest déclare. C’est le même standard que j’applique à tous les autres dans ce tableau, donc il doit aussi s’appliquer à ma propre ligne, sinon le reste de cet article n’est que du marketing déguisé en audit de permissions. Si vous voulez le passage en revue complet, cas par cas, de ce que ce content script fait et ne fait pas avec l’accès dont il dispose, c’est l’article complet sur la sécurité, et si vous évaluez ça spécifiquement pour le compte d’une entreprise plutôt que pour vous-même, il existe une version de la même divulgation rédigée pour un relecteur sécurité, pensée pour cet usage.

Les permissions ne se vérifient pas une fois pour toutes

En février 2026, une extension Chrome nommée QuickLens, un outil de recherche à l’écran façon « Google Lens » comptant environ 7 000 installations, a changé de propriétaire. Elle avait été mise en vente sur une place de marché tierce d’extensions peu après sa publication initiale, et dès le 1er février elle avait un nouveau propriétaire opérant sous un nom différent, avec une politique de confidentialité remplacée par une autre hébergée sur ce que des chercheurs ont décrit comme un domaine à peine fonctionnel. Le 17 février, une nouvelle version a été publiée, ajoutant du code pour détecter les portefeuilles de cryptomonnaies installés — dont MetaMask, Phantom, Coinbase Wallet et plusieurs autres — et tenter de récupérer les identifiants nécessaires pour les vider. Plusieurs chercheurs en sécurité et médias spécialisés ont couvert ça comme un incident de chaîne d’approvisionnement documenté une fois découvert, pas comme une rumeur.

Rien dans cette histoire n’a exigé un changement de manifest que la plupart des utilisateurs auraient remarqué sur le moment. La base d’installations de l’extension, son nom et sa fiche étaient inchangés. Ce qui a changé, c’est qui était derrière, et ce que ce nouveau propriétaire a choisi de publier. C’est la limite honnête de tout ce qui précède : lire un manifest vous dit ce qu’une extension peut faire à l’instant présent, de la part des personnes qui la contrôlent actuellement. Ça ne vous dit pas qui la contrôlera dans un an, ni ce qu’elles décideront d’y ajouter. Vérifier les permissions une fois à l’installation est une habitude raisonnable. Considérer cette vérification comme définitive ne l’est pas.

Que faire si le Chrome de votre entreprise bloque une extension

Rien de cet audit ne compte si la stratégie Chrome de votre employeur bloque carrément l’extension avant même que vous ne voyiez une invite d’installation — une situation distincte, et bien plus fréquente qu’un manifest réellement risqué. Si vous êtes tombé sur cette boîte de dialogue grise « bloqué par votre organisation », j’ai détaillé ce qu’est réellement ce blocage et comment fonctionne le parcours de demande d’installation, y compris ce que votre administrateur IT voit réellement quand vous lui demandez d’approuver quelque chose. Et si vous êtes de l’autre côté de cette demande, en train de décider s’il faut approuver une extension pour une équipe plutôt que pour vous seul, l’audit permission par permission écrit pour ce relecteur est la page conçue spécifiquement pour cette décision.

Essayez-le sur votre propre barre

Second Bookmark Bar est gratuit à installer, fonctionne entièrement sur votre appareil par défaut, et se configure en environ une minute.

Ajouter à Chrome — c'est gratuit