[tor-commits] [sandboxed-tor-browser/master] Bug 22899: `about:addons`'s "Get Addons" pane is unsafe and should be treated as such.
yawning at torproject.org
yawning at torproject.org
Wed Jul 12 20:05:55 UTC 2017
commit e06085d63ed1d9b33787e04172365db2179003e1
Author: Yawning Angel <yawning at schwanenlied.me>
Date: Wed Jul 12 20:04:38 2017 +0000
Bug 22899: `about:addons`'s "Get Addons" pane is unsafe and should be treated as such.
Loading Google Analytics as part of an IFRAME that implements an
internal `about:` URL, without being explicitly opt-in is the total
antithesis of privacy respecting.
---
ChangeLog | 2 ++
.../sandboxed-tor-browser/internal/tor/surrogate.go | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index b19afe9..20716ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
Changes in version 0.0.10 - UNRELEASED:
* Bug 22829: Remove default obfs4 bridge riemann.
* Bug 22853: Something in SelfRando is totally brain damaged.
+ * Bug 22899: `about:addons`'s "Get Addons" pane is unsafe and should be
+ treated as such.
* Bug 22901: Clarify/expand on the warnings for all the config settings.
Changes in version 0.0.9 - 2017-07-03:
diff --git a/src/cmd/sandboxed-tor-browser/internal/tor/surrogate.go b/src/cmd/sandboxed-tor-browser/internal/tor/surrogate.go
index b26019a..1d99431 100644
--- a/src/cmd/sandboxed-tor-browser/internal/tor/surrogate.go
+++ b/src/cmd/sandboxed-tor-browser/internal/tor/surrogate.go
@@ -35,6 +35,7 @@ import (
"cmd/sandboxed-tor-browser/internal/socks5"
"cmd/sandboxed-tor-browser/internal/ui/config"
+ . "cmd/sandboxed-tor-browser/internal/utils"
)
const (
@@ -60,6 +61,8 @@ const (
// These responses are entirely synthetic so they don't matter.
socksAddr = "127.0.0.1:9150"
+
+ aboutAddonsUnsafeHost = "discovery.addons.mozilla.org"
)
func copyLoop(upConn, downConn net.Conn) {
@@ -137,6 +140,8 @@ type socksProxy struct {
sNet, sAddr string
tag string
+ allowAboutAddons bool
+
l net.Listener
}
@@ -188,6 +193,18 @@ func (p *socksProxy) handleConn(conn net.Conn) {
return
}
+ // Disallow `about:addons` unless the extensions directory is volatile,
+ // because regardless of what Mozilla PR says about respecting privacy,
+ // loading Google Analytics in a page that gets loaded as an IFRAME as
+ // part of an `about:` internal page, is anything but.
+ if host, _ := req.Addr.HostPort(); strings.ToLower(host) == aboutAddonsUnsafeHost {
+ if !p.allowAboutAddons {
+ Debugf("sandbox: Rejecting request to `%s`", aboutAddonsUnsafeHost)
+ req.Reply(socks5.ReplyConnectionNotAllowed)
+ return
+ }
+ }
+
// Append our isolation tag.
if err := p.rewriteTag(conn, req); err != nil {
req.Reply(socks5.ReplyGeneralFailure)
@@ -245,6 +262,7 @@ func launchSocksProxy(cfg *config.Config, tor *Tor) (*socksProxy, error) {
if err != nil {
return nil, err
}
+ p.allowAboutAddons = cfg.Sandbox.VolatileExtensionsDir
go p.acceptLoop()
More information about the tor-commits
mailing list