Running firefox a bit more safely - HOWTO
Matthew Dillon
dillon at apollo.backplane.com
Tue Aug 11 10:32:58 PDT 2015
As people may know a firefox hack was found in the wild that allows
any accessible file to be read. This hack was due to a bug in
firefox's internal PDF viewer. The exploit that was found in the wild
was trying to snarf developer-related files such as .ssh configuration
files and keys.
We finally have a fix for it for master in dports binaries (upgrading to
Firefox 40.0). The release branch doesn't have this fix yet but we
hope soon. Firefox tends to mess with a lot of packages so a binary
update is the best way. We're asking for a little patience for RELEASE
users.
In the mean time there are a few things you can do quickly:
(1) A quick workaround is to set the PDF reader to 'always ask' and not
use the firefox internal reader. This can be changed in PREFERENCES
(accessed from the upper right side of the browser) -> Applications.
(2) You can switch to something more secure, such as chrome. This
would be the chromium package in binaries. There might be a few
gotchas here particularly with video viewing so YMMV.
I also suggest taking the time to more seriously secure whatever browser
you are using, and I will outline what I have done in this regard below:
What I have done is segregate my browser use into user accounts separate
from my main account. I created three accounts (one for my 'secure'
firefox use, such as accessing bank account, one for general 'unsecure'
browsing, including most of my social media browsing, and one for
my chrome instance which I use for other things).
First make sure your main account(s) are fully protected. For example:
chmod 700 /home/yourmainaccount
Use vipw to create three new accounts I used UIDs 30000, 30001,
and 30002 and called them dfw1, dfw2, and dfw3. Set password to '*'
(no password allowed). /home/dfw1, /home/dfw2, /home/dfw3.
For each one of dfw1, dfw2, and dfw3 (using dfw1 as an example), set
it up so you can ssh into it from your main account.
mkdir /home/dfw1
mkdir /home/dfw1/.ssh
cp ~yourmainaccount/.ssh/id_rsa.pub /home/dfw1/.ssh/authorized_keys
chown -R dfw1 /home/dfw1
Then from your main account, do a 'ssh dfw1 at localhost -n ls -la' to test
that you've set it up and it works. I'm assuming you are also running
sshd on your system, and I am also assuming that you've set up the
ssh-agent for your main account / X session so you don't need to enter
your local ssh key unlocking password every time you use ssh.
Now you can create scripts that run firefox and/or chrome in these
accounts, separate from your main account. This is what a typical
script would look like:
#!/bin/csh
#
# script for ~/bin/firefox (assumes ~/bin is in your path)
#
scp ~/.Xauthority dfw1 at localhost:
ssh dfw1 at localhost -n "setenv DISPLAY :0.0; firefox"
You can then tie these scripts into your GUI as buttons or whatever.
This part is left up to you. You can have a script for each
compartment. I have a script for 'Sfirefox' (my 'secure' firefox),
'Ufirefox', and 'chrome'.
The idea is to start these insecure GUI programs from the side-account
and not from your main account. When started from the side-account,
the instances will not have access to general files in your main account.
* This isn't a perfect solution because, of course, we are giving the
side-account full access to the X session, but it is a lot more secure
than just running firefox in the main account.
* Also note that these applications will be able to use X shared memory
and thus run fairly optimally (they are NOT using an ssh tunnel nor do
we want them to as that would be ridiculously slow). Programs run in
this way will not have direct access to the GPU so 3D might not be
so hot. But for general browsing I haven't had any trouble, and even
with 4K video appears to work about the same as it did before.
* You can set up the GID and group permissions to e.g. access files
and directories in the dummy accounts from your main account without
giving the dummy accounts access to your main account. e.g. for
things like the Downloads directory and so on.
* When you do this separation, the browsers will be in separate
instances. Be sure to setup your browser preferences in each instance.
* I don't recommend copying your old browser config directory from your
main account to these dummy accounts as this will also copy existing
cookies and passwords that you might not want the dummy account to have
access to. Or at least be very careful in this regard.
You can cut and pastes individual bookmarks between firefox's with
a simple drag and drop, and you can cut and paste bookmark folders
by right-click-cut and right-click-paste. You can use this to
redistribute your bookmarks to the new browser instances.
--
Ultimately we will have better security compartmentalization that will
not require separating applications into dummy accounts, but for now this
is not a bad solution. I feel a lot better now that I've moved my
browser execution off my main account.
I strongly recommend this. The last hack was really the last straw for
me, I will never run a browser from my main user id again :-).
If you are worried about your ssh keys being compromised I also recommend
going through the hassle of changing your ssh keys out and killing the
old ones.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Users
mailing list