GNU/Linux >> Belajar Linux >  >> Linux

Bisakah mengunjungi situs web yang buruk di firefox, atau menginstal plugin firefox berbahaya, menginfeksi bagian lain dari folder rumah saya di sistem Linux?

Jawaban singkatnya adalah:jika Firefox Anda disusupi, ia dapat melakukan apa pun yang diinginkannya. Itu dapat memodifikasi file apa pun yang diinginkannya. Ia bahkan dapat melakukan keylog dan mendapatkan root. Namun ada beberapa cara untuk meningkatkan keamanan Anda, seperti menggunakan browser yang lebih aman, AppArmor, atau plugin NoScript. Jawaban panjangnya adalah...

Ya, jika proses Firefox Anda dikompromikan, itu dapat melakukan apa saja yang dapat dilakukan oleh pengguna biasa Anda. Di Linux, keamanan berasal dari pemisahan pengguna. Saya berbicara sedikit tentang risiko asumsi Anda memiliki intra -perlindungan pengguna di sini. Pada dasarnya, sistem Anda memiliki pemeriksaan keamanan di seluruh, dan jika dua proses 'adalah pengguna yang sama, maka mereka dianggap sama-sama tepercaya, dan dapat saling mengganggu sesuka hati. Ini termasuk keylogging, yang artinya mereka bisa mengendus kata sandi root Anda saat Anda mengetiknya lagi. Atau bisa menyuntikkan penekanan tombol, menggerakkan mouse, memodifikasi semua file di direktori home Anda dan banyak file di luarnya. Itu bisa mengakses jaringan sesuka hati, dan hampir semua hal lainnya. Jika proses Firefox Anda dikompromikan, Anda memiliki lebih banyak hal yang perlu dikhawatirkan daripada folder Chromium Anda yang sedang dimodifikasi. Firefox berjalan sebagai pengguna Anda. Pengguna Anda adalah Anda . Malware yang keluar dari Firefox mewarisi hak istimewa tersebut, dan akan dapat melakukan apa saja yang dapat Anda lakukan, seperti beberapa contoh yang saya berikan di atas.

Perhatikan juga bahwa Chromium jauh lebih aman daripada Firefox. Meskipun Firefox tidak memiliki mekanisme keamanan proaktif apa pun, Chromium memilikinya dalam jumlah besar (kotak pasir suid chroot, kotak pasir seccomp-bpf, beberapa jenis kotak pasir ruang nama, dan banyak lagi). Dalam banyak konten, Firefox hampir selalu menjadi yang pertama diretas, dengan Chrome/Chromium bertahan paling lama, dan membutuhkan waktu paling lama bagi peretas ahli dunia untuk menemukan cara melalui semua lapisan kotak pasir. Jika tujuan utama Anda adalah keamanan, Anda mungkin ingin tetap menggunakan Chromium saja.

Jika Anda masih ingin menggunakan Firefox, Anda dapat menguranginya sebagian besar dengan menggunakan kotak pasir yang disertakan dengan Linux. Ubuntu memiliki kotak pasir AppArmor, sehingga Anda dapat menggunakannya untuk melindungi browser Anda, antara lain. Saya tidak tahu seberapa mutakhirnya, tetapi petunjuk untuk mengaktifkannya dapat ditemukan di sini. AppArmor adalah jenis kotak pasir yang disebut MAC, atau Kontrol Akses Wajib, yang dikendalikan oleh kernel, inti dan bos sistem operasi yang berjalan dengan lebih banyak hak istimewa daripada root. Ketika profil AppArmor diaktifkan, itu memberi tahu kernel untuk membatasi folder dan file apa yang boleh diakses oleh suatu proses. Profil AppArmor untuk Firefox ditulis hanya untuk memberikan izin yang diperlukan, dan tidak lebih. Jika mencoba mengakses apa pun yang tidak diizinkan, kernel akan segera menolak akses.

Berikut adalah kebijakan Firefox AppArmor default untuk Ubuntu 14.04, yang dapat Anda lihat untuk mengetahui cara kerjanya. Seperti yang Anda lihat, ini memungkinkan akses baca ke sebagian besar folder, tetapi hanya memungkinkan penulisan ke folder konfigurasi yang terkait dengan Firefox. Folder Chromium tidak ada dalam jalur yang diizinkan, dan segala upaya untuk menulis di sana akan ditolak.

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

Cara lain untuk mengurangi ini adalah dengan menggunakan NoScript. Ini memungkinkan Anda untuk memblokir JavaScript, Flash, dll yang berbahaya dari situs web, yang membuat serangan pada Firefox banyak lebih kecil kemungkinannya untuk berhasil. Meskipun Anda tetap mengaktifkan sebagian besar skrip karena menonaktifkan skrip menyebabkan banyak situs web tidak berfungsi seperti yang diharapkan, plugin tetap memberikan perlindungan transparan dari ancaman lain, seperti clickjacking dan XSS. Ini adalah plugin yang sangat populer dan sangat dihormati di komunitas keamanan. Saya sangat menyarankan Anda menginstalnya, selain mengaktifkan AppArmor, jika tujuan Anda adalah meminimalkan risiko situs web berbahaya yang membahayakan komputer Anda atau file apa pun di dalamnya.


Ini sedikit pembaruan selanjutnya pada situasinya, tetapi tampaknya Firefox tidak mengalami masalah ini lagi pada hampir semua versi dari 57 (rilis Quantum pertama) dan yang lebih baru. WebExtensions memiliki kotak pasir, dan tampaknya ada kotak pasir dalam cara Firefox melihat file lokal Anda, seperti Chrome/Chromium. Detail tentang ini ada di https://wiki.mozilla.org/Security/Sandbox#Linux

EDIT/Catatan:Yang mengatakan, saya masih menandai jawaban di atas jawaban yang ideal dan memutakhirkannya, seperti yang pernah diterapkan ke Firefox dan masih berlaku untuk banyak cabangnya, seperti Waterfox dan Pale Moon


Linux
  1. Distro Linux Berbeda Berbagi Folder / home yang Sama?

  2. Menginstal Tomcat 7 di sistem Linux dengan Native Library

  3. Di mana saya dapat menemukan Java SDK di Linux setelah menginstalnya?

  1. Linux – Izinkan Pengguna Membaca Direktori Beranda Beberapa Pengguna Lain?

  2. Bagaimana menemukan direktori home pengguna di linux atau unix?

  3. Bagaimana saya bisa menjalankan skrip Perl sebagai daemon sistem di linux?

  1. Editor Linux yang dapat menyorot semua contoh kata yang dipilih

  2. Bagaimana saya bisa mengetahui apakah sistem Linux menggunakan Wayland atau X11?

  3. linux menunjukkan ukuran isi folder di ls atau beberapa perintah lainnya