web-dev-qa-db-fra.com

Quelles sont les implications de la sécurité des personnes téléchargeant des addons, pensant à tort qu'ils sont en sécurité?

J'ai récemment appris sur un plugin pour Firefox appelé Fire Sheep, qui a été présenté sur la sécurité maintenant podcast. J'ai téléchargé F.S.S. et a commencé à l'examiner. À ma grande surprise, cela inclut le code C++ qui doit être compilé pour que le plugin fonctionne.

Mon impression avait toujours été que Firefox, contrairement à coire, n'autorise pas l'exécution du code d'objet téléchargé dans le navigateur. F.s. semble contredire cela.

Quelles sont les implications de sécurité des personnes téléchargeant des plugins, pensant qu'ils sont en sécurité, lorsqu'ils pourraient facilement contenir des logiciels malveillants sous la forme d'un code d'objet Troie ou même des exploits JavaScript?

23
Snuffles

Si les gens ne lisent pas le gros avertissement de graisse affichée sur chaque installation d'un addon ou d'un plugin de Firefox, ils ont perdu. Les addons sont des programmes complets qui peuvent faire n'importe quoi, vous avez la permission de faire.

Le message d'avertissement est vraiment évident:

Vous ne devez installer que des add-ons à partir de sources que vous avez confiance.

Le logiciel maléfique peut nuire à des fichiers sur votre ordinateur ou de violer votre vie privée.

warning

15

La terminologie qu'un navigateur particulier utilise pour décrire les addons est légèrement inutile. Certains navigateurs appellent des addons des choses, certains navigateurs appellent des extensions. Quelqu'un à un moment donné a eu l'idée de nommer des "cookies" temporaires après tout et de la manière dont l'utile est-ce comme un nom.

Donc, un mécanisme d'extension (comme dans toute extension de la fonctionnalité du navigateur) fonctionne sur deux niveaux:

1) Le navigateur implémente une sous-langage sous forme de langage comme des interfaces utilisateur rendu XML (XUL dans Firefox est ceci spécifiquement XulRunner vous permet de décrire une interface utilisateur dans XML). En outre, une grande partie des extensions de Firefox peuvent être implémentées dans JavaScript (rechercher SpiderMonkey et similaire, il s'agit d'un composant de Firefox qui exécute JavaScript - dans Firefox, il existe des fonctions supplémentaires permettant à JavaScript de faire des choses, comme transformer le DOM de la Actuellement parcouru la page, ou autre chose. À ce niveau, le navigateur peut contrôler quelle est l'extension de manière assez triviale, mais tout ce que l'extension veut faire que Firefox ne prend pas en charge ou ne permettra pas, ne peut pas être fait. Voici une photo:

  OS <--  Firefox <-- Nice extension interpreter <- extension javascript.

2) Parfois, vous devez faire quelque chose que Firefox n'est pas construit pour le faire, ni ne peut pas être effectué efficacement dans un format JavaScript-ou Autre-interprété, comme exécuter Flash ou décodez bizarre-codec.odddfile, par exemple. Des situations telles que cette firefox a tendance à gérer avec des "manuels" qui fonctionnent un peu comme ceci:

  OS <--- Firefox  <--- webpage containing something
              |
          Plugin API---Relevant part of webpage, like <embed>
              |                 |
  OS <----- Plugin! like ns_flash.so or such like

Ici, les extensions sont compilées pour correspondre à l'architecture d'extension de Firefox pour ce genre de chose. Firefox expose un certain ensemble de fonctions pour permettre à l'extension de le contrôler de certaines manières, mais l'extension peut également demander au système d'exploitation de faire les choses directement. Si cela se comporte bien, cela prend essentiellement l'entrée pertinente (c'est-à-dire un .swf Fichier) et fait ce qu'il faut faire ("Firefox, dans cette case, veuillez dessiner cette vidéo"). Cependant, il pourrait techniquement faire tout ce que votre utilisateur peut faire, car Firefox ne l'arrête pas.

Pour savoir pourquoi FIREHEEP doit être compilé, c'est parce que cela dépend de la libpcap (ou similaire), qui consiste à extraire des paquets d'information du "fil", à partir d'un périphérique qui les reçoit. Une interface sans fil est particulièrement susceptible de ceci car de nombreux adaptateurs sans fil sont omni-directionnels, de sorte que toute interface à proximité choisit ces paquets. Habituellement, votre noyau (système d'exploitation) déposerait des paquets non adressés à celui-ci, ce qui définit l'interface au mode promiscuous est la façon dont vous le demandez de ne pas. libpcap Cela vous convient-il et vous permet de saisir ces paquets. Pour ce faire, il a besoin d'un accès direct (probablement administratif/root) au système d'exploitation.

FireSeep fonctionne entièrement en analysant ces paquets, trouvant des systèmes http qui ne sont pas cryptés, les grattant pour les données de connexion, puis le signalant.

Maintenant, retour au risque de sécurité de ces plugins - c'est assez évident, un plugin qui fonctionne comme code natif (en Firefox, un plugin, plutôt qu'une extension) peut faire ce que vous pouvez faire l'utilisateur (oublier Firefox)) afin que hendrik Le met à juste titre, si vous ignorez le gros avertissement de la graisse, c'est un problème. Une extension devrait être capable de faire des dégâts limités.

Tandis que nous sommes ici, le fichier Google chrome modèle est à nouveau différent. Chaque application sur un ordinateur est composée de processus et de threads - dans de nombreux threads OSES sont essentiellement des processus légers et partagent la mémoire à travers le processus et C'est ainsi que vous réalisez la concurrence, cependant, un seul filetage écrasé provoque tout le processus et tout thread peut techniquement modifier la mémoire d'un autre fil sans restriction.

Alors google chrome fonctionne en créant des processus pour chaque domaine unique que vous visitez uniquement, agissant comme si vous aviez un processus par onglet (pour de nombreux cas d'utilisation) et chaque extension d'exécution que vous utilisez. En réalité, vous pouvez. Aussi Personnalisez ceci Pour exécuter un processus par onglet ou un seul processus par domaine quelles que soient les visites que vous faites. Ainsi que dans Firefox, vous obtenez:

 Firefox   thread/1
           thread/2
           thread/3

Dans Google chrome vous obtenez

 Chrome master process

                Chrome child process for security.stackexchange.com
                Chrome child process for meta.stackoverflow.com
                Chrome child process for flash

Maintenant, chaque processus enfant est fortement restreint. Le moyen standard de créer un processus lui donne par défaut les autorisations que le parent a (héritage), mais Google chrome définit explicitement. Les processus enfants ne peuvent communiquer que avec le processus parent quand ils veulent faire quelque chose Et tout appels d'API qu'ils apportent au système d'exploitation sont sévèrement restreints par des jetons de contrôle d'accès de Windows. Donc, l'idée ici est qu'un plugin devrait, en théorie, ne pourra faire que ce qu'il faut faire.

C'est très la théorie de l'idée de Google Chrome. En pratique, les documents de conception impliquent que vous devez passer --sandbox-plugins I.e. Je ne suis pas sûr de savoir dans quelle mesure les plugins de sandboxing sont automatiques et qu'ils travaillent tous encore correctement.

10
user2213

Premièrement, vous manquez la distinction entre "add-ons" (ou "extensions") et "plugins". "Add-Ons" modifier la fonctionnalité du navigateur d'une manière ou d'une autre, rend généralement la vie plus facile. Pour cette raison, ils ont beaucoup plus de contrôle et de restrictions d'accès moindre que les "plugins". Ils sont également (généralement) plate-forme multiples. Les "plugins" sont des modules dépendants de la plate-forme qui permettent à un navigateur d'afficher le contenu qu'il ne savait pas autrement comment afficher, comme PDF fichiers ou vidéos.

La sécurité complémentaire dépend de la mise en œuvre du navigateur. Firefox, par exemple, donne des add-ons beaucoup plus d'accès que Chrome fait à ses extensions. Les plugins ont le même accès sur les navigateurs. Quelques plugins, comme Flash, Demander des fichiers via le navigateur à des restrictions à des restrictions que les navigateurs (ou les ajouts) peuvent imposer. Par exemple, demandesPolicy et qui contrôlent les demandes de domaine croisés dans Firefox, peuvent (et réalise) des demandes de domaine croisés dans le contenu flash. Java, sur le D'autre part, peut exécuter le code dans la JVM indépendamment du navigateur.

Je ne sais pas avec certitude, mais je crois que la raison pour laquelle FireSeep comprend C++ Code est que cela doit capturer tous les paquets circulant sur le réseau, ce qui est quelque chose de Firefox ne permet pas. Pour que FireSeeep le fasse, il DOIT Exécuter une manière du code natif.

En ce qui concerne les autres add-ons, dans Firefox, un complément malveillant a accès à toutes vos histoires, vos mots de passe, vos favoris, vos favoris, et peuvent modifier l'apparence et la sensation, ainsi que le comportement de toute page Web qu'il souhaite. En Chrome, cependant, il doit déclarer explicitement son accès souhaité, et Chrome J'informera l'utilisateur à quoi l'extension a besoin d'accéder à Avant l'installation.

Un plugin est presque comparable au code natif, de sorte qu'un plugin malveillant a accès à tout ce que le système d'exploitation lui donne accès. Si vous téléchargez et installez un plugin malveillant, c'est comme le téléchargement et l'installation de tout autre programme malveillant.

6
Soumya

Vous confondez des éléments de page Web et des bouchons de navigateur.

De nombreuses pages Web contiennent du code (généralement écrit en JavaScript) qui s'exécutent dans votre navigateur, mais dans une zone d'arrêt soigneusement clôturée (conceptuellement, un Sandbox - pas nécessairement une boîte à sable dans un sens technique particulier). Le code contenu dans une page Web n'a aucun accès à autre chose que ses propres données; En particulier, il ne peut pas accéder aux données des pages Web à partir d'autres sites ou de données ailleurs sur votre ordinateur ou d'exécuter un code qui a un impact en dehors du navigateur. (Sauf s'il y a un bogue dans le navigateur, bien sûr.)

Navigateur plug-ins et extensions sont des applications qui fonctionnent sur votre ordinateur. Contrairement aux applications "pleines" telles que le navigateur lui-même, les plug-ins et les extensions ne fonctionnent pas de manière native sur votre système d'exploitation: elles ne fonctionnent que comme des composants supplémentaires de votre navigateur. Il n'y a pas a priori espérait que ces applications ont des autorisations restreintes.

Il n'y a pas de différence fondamentale entre les plug-ins et les extensions; Ils utilisent simplement différentes interfaces pour communiquer avec le navigateur. Les plug-ins exécutent directement le code natif, afin qu'ils puissent faire tout ce que le système d'exploitation permet aux applications que vous utilisez. Les extensions sont envoyées; Chrome Extensions a un système d'autorisation et d'autres navigateurs mettent également des restrictions à quelles extensions peuvent faire. Néanmoins, les extensions ont suffisamment d'autorisations qu'une extension malicieuse peut causer des dommages. Vous devez faire de l'exercice autant de prudence lorsque Installation d'un plug-in ou d'un complément comme lors de l'installation d'une autre application sur votre ordinateur.

Concentrez uniquement des logiciels de confiance sur votre ordinateur. http://technet.microsoft.com/en-us/library/cc722487.aspx

Loi n ° 1: Si un mauvais gars peut vous persuader d'exécuter son programme sur votre ordinateur, ce n'est plus votre ordinateur

Je suis confus à propos de votre description de l'aiguisé qui doit être compilée avant de travailler; S'il vous plaît pourriez-vous développer cela? Aussi, strictement, FireSeep est une extension Firefox, pas un plugin.

4
DanBeale

Certains navigateurs font que Chroot Jailing, Syscall Interception, etc. Extensions de sandbox en tant que défense en profondeur contre les jours nulles en flash, mais beaucoup de mécanismes d'extension de navigateur accordent beaucoup d'autorité aux extensions.

Client natif est une tentative de fournir une boîte à sable dans le navigateur pour un code compilé natif et pourrait constituer la base d'un nouveau mécanisme plus flexible pour des extensions natales de sable.

3
Mike Samuel