Skip to content

Fix TROVE-2017-013: Use-after-free in onion service v2 when rotating intro points

Ticket for high severity issue TROVE-2017-013

See https://trac.torproject.org/projects/tor/wiki/TROVE

TROVE-2017-13: Use-after-free in onion service v2 when rotating intro points

SEVERITY: High

ALSO TRACKED AS: CVE-2017-8823

DESCRIPTION

    An onion service v2 expires its intro points regularly at least
    once very 24 hours. While removing an intro point, if no circuit
    is found, it is put in a retry list. Then just after, if it is
    removed because it is expiring, it is put in the expiring list.

    Tor then tries to open a circuit to that node and, on failure, it
    will free the intro point without removing it from the expiring
    list ultimately leading to a use-after-free.

    This can only happens in specific conditions which are that the
    service's is unable to launch circuits, this can happen if it is
    missing descriptors for instance and if the intro points was just
    being expired. It only affects version 2 services.

MITIGATION NOTES:

    1. If you are not running an onion service, this doesn't affect
       you.

    2. If you are running tor version <= 0.2.6, this doesn't affect
       you.

    3. We believe this to be quite difficult to trigger remotely
       because of the specific conditions that tor needs to be
       in. However, it could be possible but hard to be induced by a
       malicious Guard node suspecting a connection to be an onion
       service.

ACKNOWLEDGMENTS:

    Thanks to an anonymous reporter on our bugtracker that opened a
    ticket which lead to the discovery of this issue.

FIX:

    Anybody running an onion service on an affected version should
    upgrade to one of the releases with the fix for this issue:
    0.2.8.17, 0.2.9.14, 0.3.0.13, 0.3.1.9, or 0.3.2.6-alpha.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information