unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Jacob Hrbek <kreyren@rixotstudio.cz>
To: Maxime Devos <maximedevos@telenet.be>
Cc: 52236@debbugs.gnu.org
Subject: bug#52236: PRIVACY: Integrate arkenfox for icecat configuration
Date: Sat, 04 Dec 2021 00:31:30 +0000	[thread overview]
Message-ID: <trqrsAGxm44JfdapnfeS-botnJdIEZq-n1otnA_POF2U9Iycd1TFXaq_xlYdE_7Si1AmSJYd-Zmm2NRCu8zmdLuYQpCgDnmtugGrNrykdvg=@rixotstudio.cz> (raw)
In-Reply-To: <b8a491fbd9aeb6008aace4b36d15fed34308bb34.camel@telenet.be>


[-- Attachment #1.1: Type: text/plain, Size: 10917 bytes --]

> These things might be useful, but wouldn't IceCat's mailing lists be more appropriate for suggesting different configuration defaults? (See https://www.gnu.org/software/gnuzilla/ for the mailing lists of IceCat and other GNUzilla software.) -- Devos

Yes there should be more effort done incecat, but I also see it being important integrated in guix for reasons below.

Be it icecat should only provide sane defaults for further configuration.

> I don't think guix home is necessary for this, wouldn't some kind of parametrised packages be sufficient? E.g., something like -- Devos

arkenfox is a **TEMPLATE** we can't just paste it in userland and expect peak security instead we should process the template and integrate the configuration in parametrisation with cherrypicked defaults to **generate** the user.js and enable the user to configure it from config.scm or alike.

> The Tor project advised against using anything but their Tor Browser, to avoid fingerprinting. -- Devos

DISCLAIMER: This is from my personal and unqualified research, the information provided should be discussed with a qualified professional and you should **ALWAYS** decide for yourself in relation to your threat model.

To provide context: Browser fingerprinting works by either using:
- Javascript which functions are used to provide unique data -> Mitigation is disabling fingerprint or utilizing NoScript-like functionality to disable specific javascript functions and making libreJS less useless.
- WebGL which provides unique data about user's hardware -> Mitigation is to disable WebGL which iceCat already does and we could also make icecat to run in a Virtual Machine (VM) like Xen's paravirtualization to provide the common VM values for reported hardware
- CSS which uses exfil to pass malicious payload which can be mitigated through upstream and by using functionality alike https://addons.mozilla.org/en-US/firefox/addon/css-exfil-protection
- Link tracking to pass unique identifiers in the URLs which can be mitigated by removing those e.g. using ClearURL-like functionality

Among other things that we can do to adapt more mitigations:
- Reducing the dependency on bigtech solutions by using invidious, nitter, libreddit, wikiless, etc..
- Containerization of tabs so that cross-side cookies can't reach across tabs and using one tab per website.
- Removing all stored data including cookies, history, etc.. on restart without the ability to restore the session.
- Using uBlock origin to block ads and trackers

That's bare minimum in terms of configuration that we should definitively expand on over time, now in terms of randomization of the fingerprint:

- Adapting random user-agent which seems to be the most common way of tracking users 

- Letterboxing and use of floating windows to randomize the reported window lenght and width
- and various randomization of values in user.js on runtime since the file is JS and we can use JS to do that there.
- Onion-routing to randomize the IP where currently we should only use torproject's implementation as lokinet didn't yet pass independent security review to my knowledge.. once it does we should randomly change the onion-routing implementation and if there is a VPN provider that provides a transparent deployment with verifiable configuration to not keep any logs then we can also randomize the IP with that, but i wouldn't trust my payload to any VPN provider.

So to summarize we need to:
1. sanitize javascript and it's functions used across websites
2. Randomize user.js values
3. Cookies management
4. WebGL management
5. CSS mitigations
6. Be progressive on new things

Now in terms of a threat model if you are a journalist, political activist or any person who's leak of data can be life threatening then you are less likely to be put in such situation on TBB, but even on TBB there are ways that are unknown to us that can be used to track invidual tor users such as https://thehackernews.com/2021/11/researchers-demonstrate-new.html and there are companies investing $$$$$+ in new ways to track users through browser fingerprinting such as https://fingerprintjs.com where new ways are constantly showing up.

For those reasons on a theoretical bases if we can make randomized fingerprinting then we can basically deprecated TBB, but practically both of these solutions are flawed and will be flawed as long as we keep updating firefox/icecat to expose new issues during development where it is unreasonable to just stop development as that might expose the software to more issues over time. So this solution is mostly for power-users and regular users with relaxed threat model or for high-profile targets who prefer to have more control over their browser.

Meaning layering defences for specific known issues (my proposal) vs relying on one huge wall (TBB).

And on top of this arkenfox provides a huge amount of tests that we should integrate to enforce out solution.

NOTE: For those reasons minimal browsers such as nyxt and surf have the potential to be more private, but from the point of view of an attacker it's just different vector for an attack so firefox should be preferred as it gets more development to address these issues quickly.

> Geolocation is disabled by default in IceCat.  When you say that "it's pinging google servers currently", have you observed this in its default configuration, or did you enable Geolocation?  -- Weaver

I use custom configuration so I was not aware of that being default, but even then just simple "default" is not enough where the issue is that there might be vulnerabilities that access the geolocation data even when it's disabled so everything in the browser (in my proposal) should be treated as compromised and layer defences so in this example:

Even if geolocation is disabled we can't afford treating the value in prefs.js as not a concern and just keep google there we have to treat it as compromised at all time and treat it as that it might get used at some point to use either:
a) value that breaks geolocation when accessed (vulnerability might allow the attacker to inject their own value)
b) if it's ever accessed or use more privacy-oriented provider such as mozilla allegedly (preferably if GNUzilla made their own geolocating thing).

I know that this might sound too paranoid, but due to the amount of new vulnerabilities in browsers (Like hell they can even use CSS now to track people! on top of AI used to find new vulnerabilities which is allegedly what Facebook is doing) i believe that it's reasonable way of looking at it.

> Your use of the word "Actual" above seems to suggest that the IceCat project aims to disable WebRTC.  I'm not aware of any such decision by the IceCat project. -- Weaver

I was told by FSF representative that icecat's compilation does not include support for WebRTC by default when i was invitted on the associate member meetup so i was basing that opinion on that.

If that is not a goal then disabling it in the settings is sufficient and preferred for me where i assumed there being reasoning for it to be outcompiled like that due to it being reasonably new technology which seems to be the common reason to do such thing.

> <Other IceCat-relevant proposals> -- Weaver

This is a discussion that gets exponentially more complicated the more we talk about it so i propose some written way of managing all these values to be used for implementation where my initial idea was wiki? So that the end-user can just search the value and find all the relevant information to make the decision for their threat model.

> Please see Maxime's comments on this, which I agree with.  I'm sorry to say that I don't see a way for IceCat users to hide that they are probably using IceCat. -- Weaver

On top of what was provided I highlight the importance of making icecat seem as firefox to the web e.g. by using firefox useragent instead of icecat as icecat has significantly more unique fingerprint to firefox if it's being treated as a it's own separate thing. + the randomization of the fingerprint.

---

NOTE: I would also argue for icecat to just have disabled settings page with prefs.js set as read-only and owned by room with permission to read by the relevant user to reduce the risk of vulnerability or malicious extension altering the config.

-- Jacob "Kreyren" Hrbek

Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Thursday, December 2nd, 2021 at 3:50 PM, Maxime Devos <maximedevos@telenet.be> wrote:

> Jacob Hrbek schreef op do 02-12-2021 om 03:58 [+0000]:
> 

> > Arkenfox https://github.com/arkenfox/user.js is a community
> > 

> > maintained user.js file used for browser hardening.
> > 

> > Proposing to implement it's configuration in GNU Guix's IceCat
> > 

> > mainly: [...]
> 

> These things might be useful, but wouldn't IceCat's mailing lists be
> 

> more appropriate for suggesting different configuration defaults?
> 

> (See https://www.gnu.org/software/gnuzilla/ for the mailing lists of
> 

> IceCat and other GNUzilla software.)
> 

> > Additional configuration should be defined in guix-home with sane
> > 

> > default [...]
> 

> I don't think guix home is necessary for this, wouldn't some kind of
> 

> parametrised packages be sufficient? E.g., something like:
> 

> (packages->manifest
> 

> ;; This creates a wrapper around ticecat instructing the firefox
> 

> ;; derivative to use the supplied user.js instead of wherever firefox
> 

> ;; normally goes looking for things. (I don't know how to do that,
> 

> ;; but should be possible?)
> 

> (icecat-with-configuration ; (defined in gnu packages gnuzilla)
> 

> #:user.js arkenfox ; defined in (gnu packages gnuzilla)
> 

> #:package the-base-icecat-package)) ; by default icecat, but any
> 

> firefox derivative will do
> 

> emacs other-packages ...)
> 

> That could be useful for both "guix shell --manifest=manifest.scm" and
> 

> guix home users.
> 

> > [...] so that the browser can be a sufficient replacement for Tor
> > 

> > Browser Bundle.
> 

> The Tor project advised against using anything but their Tor Browser,
> 

> to avoid fingerprinting. It also advised against customisation, for the
> 

> same reasons. I cannot find the web page explaining the details, but
> 

> https://support.torproject.org/tbb/tbb-14/ comes close. Tor makes
> 

> modifications to the browser, so simply modifying some settings isn't
> 

> sufficient.
> 

> Also, from the arkenfox/user.js README:
> 

> ‘Note that we do not recommend connecting over Tor on Firefox. Use the
> 

> Tor Browser if your threat model calls for it, or for accessing hidden
> 

> services.’
> 

> Greetings,
> 

> Maxime.

[-- Attachment #1.2: publickey - kreyren@rixotstudio.cz - 0x1677DB82.asc --]
[-- Type: application/pgp-keys, Size: 737 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]

  parent reply	other threads:[~2021-12-04  0:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-02  3:58 bug#52236: PRIVACY: Integrate arkenfox for icecat configuration Jacob Hrbek
2021-12-02 15:50 ` Maxime Devos
2021-12-03  0:32   ` Mark H Weaver
2021-12-04  0:31   ` Jacob Hrbek [this message]
2021-12-04  1:27     ` Liliana Marie Prikler
2021-12-18  3:20   ` Maxim Cournoyer
2021-12-03  0:11 ` Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='trqrsAGxm44JfdapnfeS-botnJdIEZq-n1otnA_POF2U9Iycd1TFXaq_xlYdE_7Si1AmSJYd-Zmm2NRCu8zmdLuYQpCgDnmtugGrNrykdvg=@rixotstudio.cz' \
    --to=kreyren@rixotstudio.cz \
    --cc=52236@debbugs.gnu.org \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).