GNU/Linux >> Linux Esercitazione >  >> Linux

L'accesso a un cattivo sito Web su Firefox o l'installazione di un plug-in Firefox dannoso può infettare altre parti della mia cartella Inizio su un sistema Linux?

La risposta breve è:se il tuo Firefox è compromesso, può fare quello che vuole. Può modificare qualsiasi file desideri. Può persino eseguire il keylog e ottenere il root. Ma ci sono alcuni modi in cui puoi migliorare la tua sicurezza, come usare un browser più sicuro, AppArmor o il plugin NoScript. La risposta lunga è...

Sì, se il tuo processo di Firefox è compromesso, può fare assolutamente tutto ciò che il tuo utente normale può fare. In Linux, la sicurezza deriva dalla separazione degli utenti. Ho parlato un po' dei rischi di presumere che tu abbia intra -protezione dell'utente qui. Fondamentalmente, il tuo sistema ha controlli di sicurezza dappertutto e se due processi sono dello stesso utente, allora sono considerati ugualmente affidabili e possono interferire l'uno con l'altro a piacimento. Ciò include il keylogging, il che significa che possono annusa la tua password di root la prossima volta che la digiti. Oppure potrebbe iniettare sequenze di tasti, spostare il mouse, modificare tutti i file nella tua home directory e molti file al di fuori di essa. Potrebbe accedere alla rete a piacimento e praticamente a tutto il resto. Se il tuo processo di Firefox è compromesso, hai molto di più di cui preoccuparti rispetto alla modifica della tua cartella Chromium. Firefox viene eseguito come utente. Il tuo utente sei tu . Il malware che fuoriesce da Firefox eredita tale privilegio e sarà in grado di fare qualsiasi cosa tu possa fare, come i pochi esempi che ho fornito sopra.

Si noti inoltre che Chromium è significativamente più sicuro di Firefox. Sebbene Firefox non abbia alcun meccanismo di sicurezza proattivo, Chromium ne ha in abbondanza (sandbox suid chroot, sandbox seccomp-bpf, diversi tipi di sandbox dello spazio dei nomi e altro). In molti contenuti, Firefox è quasi sempre il primo ad essere violato, con Chrome/Chromium che sopravvive più a lungo e gli hacker più esperti impiegano più tempo a trovare il modo di superare tutti i livelli sandbox. Se il tuo obiettivo principale è la sicurezza, potresti continuare a utilizzare solo Chromium.

Se desideri comunque utilizzare Firefox, puoi attenuarlo in larga misura utilizzando una sandbox fornita con Linux. Ubuntu ha la sandbox AppArmor, quindi puoi usarla per proteggere i tuoi browser, tra le altre cose. Non so quanto sia aggiornato, ma le istruzioni per abilitarlo possono essere trovate qui. AppArmor è un tipo di sandbox chiamato MAC, o Mandatory Access Control, che è controllato dal kernel, il nucleo e il capo del sistema operativo che viene eseguito con ancora più privilegi di root. Quando un profilo AppArmor è abilitato, dice al kernel di limitare le cartelle e i file a cui un processo può accedere. Il profilo AppArmor per Firefox è scritto per dargli solo le autorizzazioni di cui ha bisogno e nient'altro. Se tenta di accedere a qualcosa a cui non è consentito, il kernel negherà prontamente l'accesso.

Ecco il criterio predefinito di Firefox AppArmor per Ubuntu 14.04, che puoi esaminare per avere un'idea di come funziona. Come puoi vedere, consente l'accesso in lettura alla maggior parte delle cartelle, ma consente solo la scrittura nelle cartelle di configurazione relative a Firefox. Le cartelle di Chromium non si trovano nei percorsi autorizzati e qualsiasi tentativo di scrivervi verrebbe negato.

# 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>
}

Un altro modo per mitigare questo problema è utilizzare NoScript. Ti consente di bloccare JavaScript, Flash, ecc. pericolosi dai siti Web, il che rende molto gli attacchi a Firefox meno probabilità di successo. Anche se mantieni abilitata la maggior parte degli script perché la disabilitazione degli script fa sì che molti siti Web non funzionino come previsto, il plug-in fornisce comunque una protezione trasparente da altre minacce, come clickjacking e XSS. È un plugin molto popolare e molto apprezzato nella comunità della sicurezza. Ti consiglio vivamente di installarlo, oltre ad abilitare AppArmor, se il tuo obiettivo è ridurre al minimo il rischio che un sito Web dannoso comprometta il tuo computer o qualsiasi file su di esso.


Questo è un po' un aggiornamento successivo della situazione, ma sembra che Firefox non soffra più di questo problema a partire da quasi tutte le versioni dalla 57 (la prima versione di Quantum) e successive. WebExtensions ha il sandboxing e sembra che ci sia persino sandboxing nel modo in cui Firefox visualizza i tuoi file locali, come Chrome/Chromium. Dettagli su questo sono in https://wiki.mozilla.org/Security/Sandbox#Linux

EDIT/Nota:Detto questo, ho comunque contrassegnato la risposta sopra la risposta ideale e l'ho votata positivamente, poiché una volta si applicava a Firefox e si applica ancora a molti dei suoi fork, come Waterfox e Pale Moon


Linux
  1. Diverse distribuzioni Linux condividono la stessa cartella /home?

  2. Linux:consentire a un utente di leggere le home directory di altri utenti?

  3. Come trovare la home directory di un utente su Linux o Unix?

  4. Linux Editor che può evidenziare tutte le istanze di una parola selezionata

  5. linux mostra la dimensione del contenuto della cartella in ls o qualche altro comando

14 distribuzioni Linux su cui fare affidamento per il tuo antico computer a 32 bit

6 cose essenziali da fare dopo aver installato Manjaro Linux

Dbxfs – Monta la cartella Dropbox localmente come file system virtuale in Linux

Installazione di Alpine (o altro Linux) su VPS o Bare Metal Server

Dove posso trovare la prima versione del sistema operativo Linux?

Come posso caricare un'intera cartella, che contiene altre cartelle, usando sftp su Linux?