github ancsemi/Haven v4.13.0

latest releases: v4.29.0-beta.4, v4.29.0-beta.3, v4.28.0...
one month ago

A second security release, following up the review in 4.12.0. DMs no longer
go out unencrypted without asking, a contact's changed encryption key is
flagged, and the backup of your DM key can be locked with a passphrase the
server never sees (Settings > Encryption). Private channel codes change when
someone is removed, and forged proxy addresses are ignored. If your server
sits behind Cloudflare's proxy (not the tunnel), set TRUST_PROXY=1
or every
visitor looks like the same person to the login limits. Also: a too-long
thread reply is no longer lost. Run npm install (Start Haven.bat and start.sh
do it for you): the Flash games player is a new dependency.

Security

  • DMs ask before anything goes out unencrypted. A DM went out readable
    by the server, without asking, whenever encryption was locked on the
    device or the other person had never set it up, and pictures and files
    went up the same way. Now nothing is sent until you choose: send it
    unencrypted, unlock encryption, or cancel, which puts the message back in
    the box. The lock in a DM's header shows when messages there are not
    encrypted, and a message that fails to encrypt is no longer sent anyway.
  • A contact's changed encryption key is flagged. Haven remembers each
    contact's key on your device. If it changes, because they reset their
    keys or because someone in between swapped it, the DM says so, the lock
    turns into a warning, and nothing is encrypted to the new key until you
    trust it. Show verification code opens the code to compare with them.
  • Encryption passphrase, in Settings > Encryption. The backup of your
    encrypted-DM key is locked with your login password, which the server
    receives every time you sign in. You can lock it with a separate
    passphrase instead, one the server never sees. Sign-in then asks for it
    once on each new device, and changing your password no longer touches the
    backup. Nobody can reset the passphrase for you, including the server
    admin.
  • Forged proxy headers are ignored. TRUST_PROXY now believes a proxy only
    on the same machine or the local network (nginx, Caddy, Docker, the
    built-in tunnel), so a server exposed straight to the internet ignores a
    forged X-Forwarded-For and nobody can pick their own address to get past
    login limits or IP bans. If your proxy runs on another machine, such as
    Cloudflare's proxy, set TRUST_PROXY=1
    , or every visitor will look like
    the proxy.
  • Removing or kicking someone from a private channel changes its join
    code
    , and its private sub-channels' codes, so the code they already know
    no longer lets them back in.
  • Moving a top-level channel under another needs the delete-channel
    permission on it
    , since the move lets that parent's sub-channel managers
    delete it.
  • Flash games load their player from Haven itself. The Ruffle player came
    from unpkg, whichever version was newest that day, fetched from a third
    party by every player, and the games pages allowed scripts from all of
    unpkg. It is a pinned dependency now, and no page allows unpkg.

Fixed

  • A too-long reply in a thread was still lost (#5691). The 4.12.0 fix
    covered the main message box and DMs. A thread reply comes back into the
    thread box now too, and the thread and pop-out DM boxes stop at the length
    limit like the main box does.
  • start.sh installs new dependencies after an update, not only the first
    time it runs.

Don't miss a new Haven release

NewReleases is sending notifications on new releases.