¿Puedo ir a un sitio web defectuoso en Firefox, o instalar un complemento malintencionado de Firefox, infectar otras partes de la carpeta de mi casa en un sistema Linux?

4

Por cierto, no me refiero a root, solo a un usuario simple. Estoy preocupado porque tengo miedo de que si hago tales cosas podría infectar mi carpeta de Chromium. Tengo un caso enorme de TOC.

    
pregunta RoundDuckMan 10.04.2016 - 02:10
fuente

1 respuesta

3

La respuesta corta es: si su Firefox está comprometido, puede hacer lo que quiera. Puede modificar cualquier archivo que quiera. Incluso puede keylog y obtener root. Pero hay algunas formas en que puede mejorar su seguridad, como usar un navegador más seguro, AppArmor o el complemento de NoScript. La respuesta larga es ...

Sí, si su proceso de Firefox está comprometido, puede hacer absolutamente cualquier cosa que su usuario habitual pueda hacer. En Linux, la seguridad proviene de la separación de usuarios. Hablé un poco sobre los riesgos de asumir que tiene intra -usuario de protección aquí . Básicamente, su sistema tiene controles de seguridad en todas partes, y si dos procesos son del mismo usuario, entonces se considera que son igualmente confiables y pueden interferir entre sí a voluntad. Esto incluye el registro de teclas, lo que significa que puede oler su contraseña de root la próxima vez que la escriba. O podría inyectar teclas, mover el mouse, modificar todos los archivos en su directorio de inicio y muchos otros archivos fuera de él. Podría acceder a la red a voluntad, y casi todo lo demás. Si su proceso de Firefox se ve comprometido, tiene mucho más de qué preocuparse que la modificación de su carpeta Chromium. Firefox se ejecuta como tu usuario. Tu usuario eres tú . El malware que sale de Firefox hereda ese privilegio y podrá hacer lo que sea que pueda hacer, como los pocos ejemplos que mencioné anteriormente.

También tenga en cuenta que Chromium es significativamente más seguro que Firefox. Si bien Firefox no tiene ningún mecanismo de seguridad proactivo, Chromium los tiene en abundancia (suid chroot sandbox, seccomp-bpf sandbox, varios tipos de espacios de nombres y mucho más). En muchos de sus contenidos, Firefox es casi siempre el primero en ser pirateado, Chrome / Chromium sobrevive por más tiempo y toma más tiempo para que los hackers expertos en el mundo encuentren formas a través de todas las capas de sandbox. Si su objetivo principal es la seguridad, es posible que desee seguir usando solo Chromium.

Si aún desea utilizar Firefox, puede mitigar esto en gran medida mediante el uso de un sandbox que viene con Linux. Ubuntu tiene el sandbox de AppArmor, por lo que puede usarlo para proteger sus navegadores, entre otras cosas . No sé qué tan actualizado está, pero las instrucciones para habilitarlo pueden encontrarse en aquí . AppArmor es un tipo de zona de pruebas llamado MAC, o Control de acceso obligatorio, que está controlado por el kernel, el núcleo y el jefe del sistema operativo que se ejecuta con incluso más privilegios que la raíz. Cuando se habilita un perfil de AppArmor, le indica al kernel que restrinja a qué carpetas y archivos puede acceder un proceso. El perfil de AppArmor para Firefox está escrito para otorgarle solo los permisos que necesita, y nada más. Si intenta acceder a algo que no está permitido, el kernel denegará el acceso de inmediato.

Aquí está la política predeterminada de Firefox AppArmor para Ubuntu 14.04, que puede consultar para tener una idea de cómo funciona. Como puede ver, permite el acceso de lectura a la mayoría de las carpetas, pero solo permite escribir en las carpetas de configuración relacionadas con Firefox. Las carpetas de Chromium no se encuentran en las rutas incluidas en la lista blanca, y cualquier intento de escribir allí sería denegado.

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

Otra forma de mitigar esto es mediante el uso de NoScript . Le permite bloquear JavaScript peligroso, Flash, etc. de sitios web, lo que hace que los ataques a Firefox mucho tengan menos probabilidades de éxito. Incluso si mantiene la mayoría de los scripts habilitados porque deshabilitarlos hace que muchos sitios web no funcionen como se esperaba, el complemento aún ofrece una protección transparente contra otras amenazas, como el clickjacking y XSS. Es un complemento muy popular y muy bien considerado en la comunidad de seguridad. Le recomiendo que lo instale, además de habilitar AppArmor, si su objetivo es minimizar el riesgo de que un sitio web malicioso ponga en peligro su computadora o los archivos que contiene.

    
respondido por el forest 10.04.2016 - 04:21
fuente

Lea otras preguntas en las etiquetas