La réponse courte est :si votre Firefox est compromis, il peut faire ce qu'il veut. Il peut modifier les fichiers qu'il veut. Il peut même keylog et devenir root. Mais il existe plusieurs façons d'améliorer votre sécurité, comme l'utilisation d'un navigateur plus sécurisé, AppArmor ou le plugin NoScript. La réponse longue est...
Oui, si votre processus Firefox est compromis, il peut faire absolument tout ce que votre utilisateur habituel peut faire. Sous Linux, la sécurité vient de la séparation des utilisateurs. J'ai parlé un peu des risques de supposer que vous avez intra -la protection de l'utilisateur ici. Fondamentalement, votre système est soumis à des contrôles de sécurité partout, et si deux processus appartiennent au même utilisateur, ils sont alors considérés comme de confiance égale et peuvent interférer l'un avec l'autre à volonté. Cela inclut l'enregistrement des frappes, ce qui signifie qu'ils peuvent reniflez votre mot de passe root la prochaine fois que vous le saisissez. Ou il pourrait injecter des frappes, déplacer la souris, modifier tous les fichiers de votre répertoire personnel et de nombreux fichiers en dehors de celui-ci. Il pourrait accéder au réseau à volonté, et à peu près tout le reste. Si votre processus Firefox est compromis, vous avez bien plus à vous soucier que la modification de votre dossier Chromium. Firefox s'exécute en tant qu'utilisateur. Votre utilisateur c'est vous . Les logiciels malveillants qui sortent de Firefox héritent de ce privilège et pourront faire tout ce que vous pouvez faire, comme les quelques exemples que j'ai donnés ci-dessus.
Notez également que Chromium est nettement plus sécurisé que Firefox. Bien que Firefox ne dispose d'aucun mécanisme de sécurité proactif, Chromium en a en abondance (suid chroot sandbox, seccomp-bpf sandbox, plusieurs types de sandbox d'espace de noms, etc.). Dans de nombreux contenus, Firefox est presque toujours le premier à être piraté, Chrome/Chromium survivant le plus longtemps et prenant le plus de temps aux pirates experts mondiaux pour trouver des moyens à travers toutes les couches du bac à sable. Si votre objectif principal est la sécurité, vous pouvez vous en tenir à l'utilisation de Chromium uniquement.
Si vous souhaitez toujours utiliser Firefox, vous pouvez atténuer cela dans une large mesure en utilisant un bac à sable fourni avec Linux. Ubuntu a le bac à sable AppArmor, vous pouvez donc l'utiliser pour protéger vos navigateurs, entre autres. Je ne sais pas à quel point il est à jour, mais les instructions pour l'activer peuvent être trouvées ici. AppArmor est un type de bac à sable appelé MAC, ou Mandatory Access Control, qui est contrôlé par le noyau, le noyau et le patron du système d'exploitation qui s'exécute avec encore plus de privilèges que root. Lorsqu'un profil AppArmor est activé, il indique au noyau de limiter les dossiers et fichiers auxquels un processus est autorisé à accéder. Le profil AppArmor pour Firefox est écrit pour lui donner uniquement les autorisations dont il a besoin, et rien d'autre. S'il essaie d'accéder à quelque chose auquel il n'est pas autorisé, le noyau refusera rapidement l'accès.
Voici la politique Firefox AppArmor par défaut pour Ubuntu 14.04, que vous pouvez consulter pour avoir une idée de son fonctionnement. Comme vous pouvez le voir, il permet un accès en lecture à la plupart des dossiers, mais ne permet d'écrire que dans les dossiers de configuration liés à Firefox. Les dossiers Chromium ne figurent pas dans les chemins de la liste blanche et toute tentative d'écriture à cet endroit serait refusée.
# vim:syntax=apparmor
# Author: Jamie Strandboge <[email protected]>
# Declare an apparmor variable to help with overrides
@{MOZ_LIBDIR}=/usr/lib/firefox
#include <tunables/global>
# We want to confine the binaries that match:
# /usr/lib/firefox/firefox
# /usr/lib/firefox/firefox
# but not:
# /usr/lib/firefox/firefox.sh
/usr/lib/firefox/firefox{,*[^s][^h]} {
#include <abstractions/audio>
#include <abstractions/cups-client>
# TODO: finetune this for required accesses
#include <abstractions/dbus>
#include <abstractions/dbus-accessibility>
#include <abstractions/dbus-session>
#include <abstractions/gnome>
#include <abstractions/ibus>
#include <abstractions/nameservice>
#include <abstractions/p11-kit>
# Addons
#include <abstractions/ubuntu-browsers.d/firefox>
# for networking
network inet stream,
network inet6 stream,
@{PROC}/[0-9]*/net/if_inet6 r,
@{PROC}/[0-9]*/net/ipv6_route r,
@{PROC}/[0-9]*/net/dev r,
@{PROC}/[0-9]*/net/wireless r,
# should maybe be in abstractions
/etc/ r,
/etc/mime.types r,
/etc/mailcap r,
/etc/xdg/*buntu/applications/defaults.list r, # for all derivatives
/etc/xfce4/defaults.list r,
/usr/share/xubuntu/applications/defaults.list r,
owner @{HOME}/.local/share/applications/defaults.list r,
owner @{HOME}/.local/share/applications/mimeapps.list r,
owner @{HOME}/.local/share/applications/mimeinfo.cache r,
owner /tmp/** m,
owner /var/tmp/** m,
/tmp/.X[0-9]*-lock r,
/etc/udev/udev.conf r,
# Doesn't seem to be required, but noisy. Maybe allow 'r' for 'b*' if needed.
# Possibly move to an abstraction if anything else needs it.
deny /run/udev/data/** r,
/etc/timezone r,
/etc/wildmidi/wildmidi.cfg r,
# firefox specific
/etc/firefox*/ r,
/etc/firefox*/** r,
/etc/xul-ext/** r,
/etc/xulrunner-2.0*/ r,
/etc/xulrunner-2.0*/** r,
/etc/gre.d/ r,
/etc/gre.d/* r,
# noisy
deny @{MOZ_LIBDIR}/** w,
deny /usr/lib/firefox-addons/** w,
deny /usr/lib/xulrunner-addons/** w,
deny /usr/lib/xulrunner-*/components/*.tmp w,
deny /.suspended r,
deny /boot/initrd.img* r,
deny /boot/vmlinuz* r,
deny /var/cache/fontconfig/ w,
deny @{HOME}/.local/share/recently-used.xbel r,
# TODO: investigate
deny /usr/bin/gconftool-2 x,
# These are needed when a new user starts firefox and firefox.sh is used
@{MOZ_LIBDIR}/** ixr,
/usr/bin/basename ixr,
/usr/bin/dirname ixr,
/usr/bin/pwd ixr,
/sbin/killall5 ixr,
/bin/which ixr,
/usr/bin/tr ixr,
@{PROC}/ r,
@{PROC}/[0-9]*/cmdline r,
@{PROC}/[0-9]*/mountinfo r,
@{PROC}/[0-9]*/stat r,
owner @{PROC}/[0-9]*/task/[0-9]*/stat r,
@{PROC}/[0-9]*/status r,
@{PROC}/filesystems r,
/sys/devices/pci[0-9]*/**/uevent r,
owner @{HOME}/.thumbnails/*/*.png r,
/etc/mtab r,
/etc/fstab r,
# Needed for the crash reporter
owner @{PROC}/[0-9]*/environ r,
owner @{PROC}/[0-9]*/auxv r,
/etc/lsb-release r,
/usr/bin/expr ix,
/sys/devices/system/cpu/ r,
/sys/devices/system/cpu/** r,
# about:memory
owner @{PROC}/[0-9]*/statm r,
owner @{PROC}/[0-9]*/smaps r,
# Needed for container to work in xul builds
/usr/lib/xulrunner-*/plugin-container ixr,
# allow access to documentation and other files the user may want to look
# at in /usr and /opt
/usr/ r,
/usr/** r,
/opt/ r,
/opt/** r,
# so browsing directories works
/ r,
/**/ r,
# Default profile allows downloads to ~/Downloads and uploads from ~/Public
owner @{HOME}/ r,
owner @{HOME}/Public/ r,
owner @{HOME}/Public/* r,
owner @{HOME}/Downloads/ r,
owner @{HOME}/Downloads/* rw,
# per-user firefox configuration
owner @{HOME}/.{firefox,mozilla}/ rw,
owner @{HOME}/.{firefox,mozilla}/** rw,
owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k,
owner @{HOME}/.{firefox,mozilla}/plugins/** rm,
owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm,
owner @{HOME}/.gnome2/firefox*-bin-* rw,
owner @{HOME}/.cache/mozilla/{,firefox/} rw,
owner @{HOME}/.cache/mozilla/firefox/** rw,
owner @{HOME}/.cache/mozilla/firefox/**/*.sqlite k,
#
# Extensions
# /usr/share/.../extensions/... is already covered by '/usr/** r', above.
# Allow 'x' for downloaded extensions, but inherit policy for safety
owner @{HOME}/.mozilla/**/extensions/** mixr,
deny @{MOZ_LIBDIR}/update.test w,
deny /usr/lib/mozilla/extensions/**/ w,
deny /usr/lib/xulrunner-addons/extensions/**/ w,
deny /usr/share/mozilla/extensions/**/ w,
deny /usr/share/mozilla/ w,
# Miscellaneous (to be abstracted)
# Ideally these would use a child profile. They are all ELF executables
# so running with 'Ux', while not ideal, is ok because we will at least
# benefit from glibc's secure execute.
/usr/bin/mkfifo Uxr, # investigate
/bin/ps Uxr,
/bin/uname Uxr,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.bin.firefox>
}
Une autre façon d'atténuer cela consiste à utiliser NoScript. Il vous permet de bloquer les dangereux JavaScript, Flash, etc. des sites Web, ce qui rend les attaques sur Firefox beaucoup moins de chance de réussir. Même si vous gardez la plupart des scripts activés car la désactivation des scripts empêche de nombreux sites Web de fonctionner comme prévu, le plug-in offre toujours une protection transparente contre d'autres menaces, telles que le détournement de clics et XSS. C'est un plugin très populaire et très bien considéré dans la communauté de la sécurité. Je vous recommande fortement de l'installer, en plus d'activer AppArmor, si votre objectif est de minimiser le risque qu'un site Web malveillant compromette votre ordinateur ou tout fichier qu'il contient.
Il s'agit d'une mise à jour un peu plus tardive sur la situation, mais il semble que Firefox ne souffre plus de ce problème à partir de pratiquement toutes les versions de 57 (la première version de Quantum) et des versions ultérieures. WebExtensions a le sandboxing, et il semble même y avoir un sandboxing dans la façon dont Firefox visualise vos fichiers locaux, comme Chrome/Chromium. Les détails à ce sujet sont dans https://wiki.mozilla.org/Security/Sandbox#Linux
EDIT/Remarque :Cela dit, j'ai quand même marqué la réponse au-dessus de la réponse idéale et je l'ai votée, car elle s'appliquait autrefois à Firefox et s'applique toujours à bon nombre de ses fourches, comme Waterfox et Pale Moon