GNU/Linux >> Linux の 問題 >  >> Linux

Firefox で悪意のある Web サイトにアクセスしたり、悪意のある Firefox プラグインをインストールしたりすると、Linux システムのホーム フォルダーの他の部分に感染する可能性がありますか?

簡単に言えば、Firefox が侵害された場合、Firefox はやりたいことが何でもできるということです。必要なファイルを変更できます。キーログを取得してルートを取得することもできます。ただし、より安全なブラウザー、AppArmor、または NoScript プラグインを使用するなど、セキュリティを向上させる方法がいくつかあります。長い答えは...

はい、Firefox プロセスが侵害された場合、通常のユーザーが実行できることはすべて実行できます。 Linux では、セキュリティはユーザーの分離から生まれます。 イントラがあると仮定するリスクについて少し話しました -ここでユーザー保護。基本的に、システム全体にセキュリティチェックがあり、2 つのプロセスが同じユーザーのものである場合、それらは同等に信頼されていると見なされ、自由に互いに干渉する可能性があります。これにはキーロギングが含まれます。つまり、できる 次に入力するときに root パスワードを盗聴します。または、キーストロークを挿入したり、マウスを動かしたり、ホーム ディレクトリ内のすべてのファイルとその外部の多くのファイルを変更したりする可能性があります。意のままにネットワークにアクセスでき、それ以外のほとんどすべてにアクセスできます。 Firefox プロセスが侵害された場合、Chromium フォルダーが変更されることよりも心配する必要があります。 Firefox はユーザーとして実行されます。あなたのユーザーはあなたです . Firefox から侵入したマルウェアはその特権を継承し、上記のいくつかの例のように、できることは何でも実行できます。

また、Chromium は Firefox よりもはるかに安全です。 Firefox にはプロアクティブなセキュリティ メカニズムがまったくありませんが、Chromium にはそれらが豊富にあります (suid chroot サンドボックス、seccomp-bpf サンドボックス、数種類の名前空間サンドボックスなど)。多くのコンテンツでは、ほとんどの場合 Firefox が最初にハッキングされ、Chrome/Chromium が最も長く存続し、世界の専門家のハッカーがすべてのサンドボックス レイヤーを通過する方法を見つけるのに最も時間がかかります。主な目的がセキュリティである場合は、Chromium のみを使用することをお勧めします。

それでも Firefox を使用したい場合は、Linux に付属のサンドボックスを使用することで、これを大幅に軽減できます。 Ubuntu には AppArmor サンドボックスがあるため、これを使用してブラウザーを保護することなどを行うことができます。どの程度最新かはわかりませんが、有効にするための手順はこちらにあります。 AppArmor は、MAC (Mandatory Access Control) と呼ばれるサンドボックスの一種であり、root よりもさらに多くの権限で実行されるオペレーティング システムのコアおよびボスであるカーネルによって制御されます。 AppArmor プロファイルを有効にすると、プロセスがアクセスできるフォルダーとファイルを制限するようにカーネルに指示します。 Firefox の AppArmor プロファイルは、必要なパーミッションのみを付与するように作成されています。許可されていないものにアクセスしようとすると、カーネルは即座にアクセスを拒否します。

これは、Ubuntu 14.04 のデフォルトの Firefox AppArmor ポリシーです。これを見て、どのように機能するかを理解できます。ご覧のとおり、ほとんどのフォルダーへの読み取りアクセスを許可しますが、Firefox に関連する構成フォルダーへの書き込みのみを許可します。 Chromium フォルダーはホワイトリストに登録されたパスにないため、そこに書き込もうとすると拒否されます。

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

これを軽減する別の方法は、NoScript を使用することです。危険な JavaScript や Flash などを Web サイトからブロックすることができ、Firefox への攻撃を 多く 行います。 成功する可能性が低くなります。スクリプトを無効にすると多くの Web サイトが期待どおりに機能しなくなるため、ほとんどのスクリプトを有効にしたままにしても、プラグインはクリックジャッキングや XSS などの他の脅威から透過的に保護します。これは非常に人気のあるプラグインであり、セキュリティ コミュニティで高く評価されています。悪意のある Web サイトがコンピューターやその上のファイルを危険にさらすリスクを最小限に抑えることが目標である場合は、AppArmor を有効にすることに加えて、インストールすることを強くお勧めします。


これは状況に関する少し後の更新ですが、57 (最初の Quantum リリース) 以降のほとんどすべてのバージョンで、Firefox はこの問題に悩まされていないようです。 WebExtensions にはサンドボックスがあり、Firefox が Chrome/Chromium などのローカル ファイルを表示する方法にもサンドボックスがあるようです。これに関する詳細は https://wiki.mozilla.org/Security/Sandbox#Linux にあります

編集/注:とはいえ、私は依然として理想的な回答の上に回答をマークし、賛成票を投じました.

Linux
  1. 同じ/homeフォルダを共有する異なるLinuxディストリビューション?

  2. Linux –ユーザーが他のユーザーのホームディレクトリを読むことを許可しますか?

  3. LinuxまたはUNIXでユーザーのホームディレクトリを見つける方法は?

  1. ネイティブ ライブラリを使用して Linux システムに Tomcat 7 をインストールする

  2. Java SDK をインストールした後、Linux のどこで Java SDK を見つけることができますか?

  3. Linux システムが Wayland または X11 を使用しているかどうかを調べるにはどうすればよいですか?

  1. Linuxはlsまたはその他のコマンドでフォルダーの内容のサイズを表示します

  2. システム全体にインストールせずにコマンド (tree など) を使用できますか?

  3. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?