zerotracepen (3.2)

  • Major changes

    • Upgrade Linux packages to the Debian kernel 4.12.0-2, based on
      mainline Linux 4.12.12 (Closes: #11831, #12732, #14673).
    • Security fixes

      • Upgrade Tor Browser to 7.0.6-build3 (Closes: #14696).
      • Upgrade to Thunderbird 52.3.0 (Closes: #12639).
      • Deny access to Pidgin's D-Bus service (Closes: #14612). That D-Bus
        interface is dangerous because it allows any application running
        as `amnesia' that has access to the session bus to extract
        basically any information from Pidgin and to reconfigure it:
        https://developer.pidgin.im/wiki/DbusHowto
      • Block loading of Bluetooth kernel modules (Closes: #14655) and
        block Bluetooth devices with rfkill (Closes: #14655).
      • Add localhost.localdomain to the hosts file to prevent loopback
        leaks to Tor circuits (Closes: #13574). Thanks to zerotracepenhark for
        the patch!
    • Minor improvements

      • Upgrade to Zero Trace Pen Installer 5.0.1 (Closes: #8859, #8860, #12707). This
        version gets rid of the splash screen, detects when Zero Trace Pen is already
        installed on the target device (and then proposes to upgrade),
        and generally improves the UX. It also increases the Zero Trace Pen partition
        size and refuses to install to devices smaller than 8 GB.
      • Deprecate Thunderbird's preferences/0000zerotracepen.js (Closes: #12680).
      • Install the BookletImposer PDF imposition toolkit (Closes: #12686).
      • Tor Browser:
        • Fallback to ~/Tor Browser for uploads (Closes: #8917).
        • Silence some common operations that always are denied and
          otherwise would spam the journal (Closes: #14606)
      • Shell library: remove now unused functions (Closes: #12685).
      • Add pppoe to the installed packages (Closes #13463). Thanks to geb
        for the patch!
      • Replace syslinux:i386 with syslinux:amd64 in the ISO9660
        filesystem (Closes: #13513).
      • htpdate: fix date header regexp (Closes: #10495). It seems that
        some servers (sometimes) do not send their headers with first
        letter uppercased, hence a lot of failures to find the date in it.
      • Install aufs-dkms from Debian unstable (Closes: #12732).
      • Install vim-tiny instead of vim-nox (Closes: #12687). On Stretch,
        vim-nox started pulling ruby and rake in the ISO. I think vim-tiny
        would be good enough, and would save a few MiB in the ISO. Those
        who use vim more intensively and want another flavour of vim are
        likely to need persistence anyway, and can thus install a more
        featureful vim with the additional software packages feature.
      • Remove gksu and its and gconf's dependencies (Closes: #12738). We
        use pkexec instead of gksudo. gksu is unmaintained, buggy
        (e.g. #12000), and it is the only reason we ship GConf, which we
        want to remove. The other removals are:
        • libgnomevfs2-extra, which was previously used for SSH/FTP support in
          Nautilus, but isn't needed for that any more.
        • libgnome2-bin which provides gnome-open, which isn't required by
          any application in Zero Trace Pen (as far as we know).
        • Configurations and scripts that become obsolete because of these
          removals.
      • Refresh torbrowser-AppArmor-profile.patch to apply cleanly on top
        of torbrowser-launcher 0.2.8-1 (Closes: #14602).
      • Switch from Florence to GNOME's on-screen keyboard (Closes: #8281)
        and incidentally improve accessibility in GTK+ 2.0 and Qt
        applications. This drops Florence and the corresponding GNOME
        Shell extension.
      • Make ./HACKING.mdwn a symlink again (Closes: #13600).
      • Implement refresh-translations --force .
      • Rework how we handle the individual POT files of our applications.
        Comparing the new temporary POT files we generate with the
        temporary POT files we generated last time (if ever, and if we
        did, for which branch?) is not relevant; these POT files are only
        used for merging into a new zerotracepen.pot and that one is relevant
        to diff against the old zerotracepen.pot.
      • Update the Zero Trace Pen signing key. (Closes: #11747)
      • Reproducibility:
        • Ensure reproducible permissions for /etc/hostname (Closes:

          13623).

        • Patch desktop-file-utils to make its mimeinfo.cache reproducible
          (Closes: #13439).
        • Patch glib2.0 to make its giomodule.cache reproducible (Closes:

          13441).

        • Patch gdk-pixbuf to make its loaders.cache reproducible (Closes:

          13442).

        • Patch gtk2.0 and gtk3.0 to make their immodules.cache
          reproducible (Closes: #13440).
        • Remove GCconf: it is a source of non-determinism in the
          filesystem (element order in /var/lib/gconf/defaults/%gconf-tree-*.xml)
          which made Zero Trace Pen unreproducible.
        • Ignore comment updates in POT files, which was a source of
          non-determinism and therefore prevented Zero Trace Pen from being
          reproducible (Closes: #12641).
      • Kernel hardening:
        • Increase mmap randomization to the maximum supported value
          (Closes: #11840). This improves ASLR effectiveness, and makes
          address-space fragmentation a bit worse.
        • Stop explicitly enabling kaslr: it's enabled by default in
          Debian, and this kernel parameter is not supported anymore.
        • Disable kexec, to make our attack surface a bit smaller.
    • Bugfixes

      • Start Nautilus silently in the background when run as root
        (Closes: #12034). Otherwise, after closing Nautilus one gets the
        prompt back only after 5-15 seconds, which confuses users and makes
        our doc more complicated than it should.
      • Ensure pinentry-gtk2 run by Seahorse has the correct $DISPLAY set
        (Closes: #12733).
    • Build system

      • build-manifest-extra-packages.yml: remove squashfs-tools version
        we don't use anymore (Closes: #12684). Apparently our
        apt-get/debootstrap wrapper tricks are enough to detect the
        version of squashfs-tools we actually install and use.
      • Merge base branch earlier, i.e. in auto/config instead of
        auto/build (Closes: #14459). Previously, a given build from a topic
        branch would mix inconsistent versions of things.
      • Fail builds started before SOURCE_DATE_EPOCH (Closes:

        12352). Such builds would not be reproducible, and this is an

        assumption (a reasonable one!) that we do all over the place, so
        let's fail early. While we're at it, let's fail if
        SOURCE_DATE_EPOCH is not set as well. Actually we would fail any
        way if that was the case when reaching our
        99-zzzzzz_reproducible-builds-post-processing build hook, but
        let's fail early.

    • Test suite

      • Test the GNOME Root Terminal.
      • Take into account that Zero Trace Pen Installer 5.0.1 refuses to install
        Zero Trace Pen to devices smaller than 8 GiB. It'll still allow upgrading
        such sticks though.
      • Use 7200 MiB virtual USB drives when we really mean 8 GiB. In the
        real world, USB sticks labeled "8 GB" can be much smaller, so
        Zero Trace Pen Installer will accept anything that's at least 7200 MiB.
        This commit makes us exercise something closer to what happens in
        the real world, and incidentally it'll save storage space on our
        isotesters and improve test suite performance a bit. 😀
      • Have unclutter poll every 0.1s instead of continuously. On current
        sid, virt-viewer eats a full CPU and doesn't do its job when
        "unclutter -idle 0" is running.
      • Adapt tests for Zero Trace Pen Installer 5.0.1.
      • Workaround Pidgin's DBus interface being blocked since we actually
        depend on it for some tests.
      • Test that Pidgin's DBus interface is blocked.
      • Save more data on test suite failures (Refs: #13541):
        • When Tor fails to bootstrap, save Tor logs and chutney nodes
          data.
        • When Htpdate fails to synchronize the clock, save its logs.
        • Always save the systemd journal on failure.
      • When testing emergency shutdown, wait longer for Zero Trace Pen to tell
        us it has finished wiping the memory. The goal here is to help
        us understand whether (Refs: #13462) is a bug in the emergency
        shutdown feature or in our test suite.
      • Restart nautilus-desktop if Desktop icons are not visible
        (Closes: #13461).
      • Test suite: fix assert_raise() when using ruby-test-unit >=
        3.2.5 (Closes: #14654). ruby-test-unit 3.2.5 added native Java
        exception support for JRuby. The fact we defined the :Java
        constant was enough to trigger that JRuby-specific code, which
        failed.
      • Test suite: take into account that click-to-play is not required
        anymore for WebM videos in Tor Browser (Closes: #14586).