- Little Rat est une petite extension Chrome qui surveille les appels réseau d’autres extensions Chrome et les bloque de manière optionnelle
- La détection et le blocage du trafic d’autres extensions ne sont possibles qu’en activant le flag extensions-on-chrome-urls dans
chrome://flags/#extensions-on-chrome-urlsou en lançant Chrome avec--extensions-on-chrome-urls - L’installation manuelle se fait en téléchargeant le ZIP depuis GitHub, en le décompressant, en activant le mode développeur dans les extensions Chromium/Chrome, puis en utilisant la procédure Load unpacked extension sur le répertoire
little-rat-main
1 commentaires
Avis de Hacker News
J’aimerais que ce soit une fonctionnalité native de Firefox ou Chrome, plutôt qu’une extension tierce. Comme ça, le taux d’adoption serait suffisant pour que les autres navigateurs s’y intéressent aussi ; j’aimerais pouvoir autoriser une extension donnée uniquement à faire des requêtes GET vers des URL statiques prédéfinies, sans possibilité de modifier les en-têtes.
Cela permettrait les mises à jour de données tout en réduisant le risque d’exfiltration. Certaines extensions fonctionnent uniquement dans le navigateur local et n’ont donc pas du tout besoin d’accès réseau. Cela dit, si elles peuvent modifier le source de la page, elles peuvent contourner cela pour transmettre des données ; c’est sans doute pour ça que les navigateurs ne le font pas. Malgré tout, je pense qu’il vaut mieux essayer que d’abandonner et de laisser ça aux extensions Chrome.
C’est presque la même procédure que pour inspecter l’UI : activez le débogage à distance puis lancez la Browser Toolbox : https://superuser.com/questions/1608096/how-to-inspect-firef...
C’est aussi pratique pour découvrir ce qu’il faut mettre dans un fichier CSS user-chrome quand on veut modifier l’affichage des onglets au-delà d’un simple thème. En revanche, utiliser user-chrome CSS est un peu pénible.
Pour faire apparaître les requêtes réseau des extensions, j’ai dû passer en multi-process mode, ce qui est globalement logique.
Par exemple, uBlock récupérant une liste de blocage arbitraire sur laquelle j’ai cliqué pour tester : https://i.imgur.com/wBYbBM2.png
Firefox lui-même mettant à jour en arrière-plan les listes safe-browsing : https://i.imgur.com/JYxWwjW.png
Une extension bien conçue ne déclencherait des notifications que rarement, et une extension ayant besoin d’un serveur le ferait au moment où l’utilisateur s’attend à ce qu’elle communique avec ce serveur. Une extension qui envoie des frappes clavier ou des données suspectes serait très facile à repérer.
Cela dit, on peut mettre des jokers dans les URL, et il me semble qu’il existe aussi une valeur spéciale signifiant toutes les URL. Malgré tout, peu d’extensions devraient avoir besoin de ce genre de permission.
Par exemple, même si l’extension ne peut pas créer elle-même de requêtes, si elle a le droit de modifier le DOM d’une page web, il existe de nombreuses façons de tromper la page pour qu’elle envoie la requête à sa place.
Cette extension n’est pas très facile à installer, donc ce serait bien d’ajouter une capture d’écran montrant les événements réseau réellement capturés. La capture actuelle masque la fonctionnalité la plus intéressante.
Ensuite, revenez à l’écran normal du navigateur, cliquez sur l’icône d’extension en forme de pièce de puzzle à droite de la barre d’adresse, puis sur la petite épingle à côté de Little Rat : l’extension sera installée et visible dans la liste des icônes d’extensions.
Sympa. Honnêtement, je suis surpris que ce soit possible.
Je ne sais pas exactement quelles données fournissent ces API, mais si une extension peut accéder aux requêtes d’une autre extension, cela ne pose-t-il pas des problèmes de sécurité pour des extensions de gestionnaire de mots de passe ou des extensions utilisant des jetons d’authentification ?
Bien. J’ai l’impression que ce genre de chose devrait exister sous forme d’URL chrome://.
Ça a l’air bien, mais je me demande s’il est prévu un portage vers Firefox.
Quelqu’un connaît-il une alternative qui fasse la même chose dans Firefox ?
Vous seriez surpris de voir combien de violations manifestes des règles relatives aux extensions Mozilla laisse passer dans ses extensions “recommandées”.
[1]: https://firefox-source-docs.mozilla.org/devtools-user/browse...
[2]: https://firefox-source-docs.mozilla.org/networking/http/logg...
[3]: https://firefox-source-docs.mozilla.org/devtools-user/about_...
var chrome = browser;tout en haut de chaque fichier JS pour que ça fonctionne dans Firefox. L’API d’extensions de Firefox est quasiment une copie des Chrome Extension APIs, avec seulement quelques différences.Je l’essaierai quand ce sera sur le Chrome Store.
declarativeNetRequest.onRuleMatchedDebug[0], qui semble être réservé au débogage, donc je me demande si ce sera accepté sur le Chrome Web Store.0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
Pourquoi n’est-ce pas sur le Chrome Store ?
chrome.declarativeNetRequest, une API qu’uBlock utilise aussi.C’est propre, mais il faudrait traiter cette partie avec plus de prudence : https://github.com/dnakov/little-rat/blob/main/popup.js#L36
Je n’ai pas envie de devoir m’inquiéter qu’une autre extension puisse injecter une XSS ici avec une requête, un ID ou un nom manipulé.
unsafe-inlineet les ID d’extension sont générés automatiquement par Chrome.Le simple fait qu’une extension n’effectue pas d’appels réseau ne prouve pas qu’elle est sûre. Elle pourrait mettre en cache des données que l’on souhaite garder privées, puis les envoyer périodiquement.