]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add warning when trying to connect to deprecated v2 onions.
authorGeorge Kadianakis <desnacked@riseup.net>
Wed, 5 May 2021 08:10:28 +0000 (11:10 +0300)
committerDavid Goulet <dgoulet@torproject.org>
Fri, 7 May 2021 12:41:46 +0000 (08:41 -0400)
changes/ticket40373 [new file with mode: 0644]
src/core/or/connection_edge.c

diff --git a/changes/ticket40373 b/changes/ticket40373
new file mode 100644 (file)
index 0000000..3b2edd0
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor features (onion services):
+    - Add warning message when connecting to deprecated v2 onions.
+      Closes ticket 40373.
\ No newline at end of file
index 8e131613484e64ddf95a471645a0c87b5e07180a..a30724996766bb6bd1fc305340311789dfcee284 100644 (file)
@@ -2242,7 +2242,7 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
   }
 
   /* Now, we handle everything that isn't a .onion address. */
-  if (addresstype != ONION_V3_HOSTNAME) {
+  if (addresstype != ONION_V3_HOSTNAME && addresstype != ONION_V2_HOSTNAME) {
     /* Not a hidden-service request.  It's either a hostname or an IP,
      * possibly with a .exit that we stripped off.  We're going to check
      * if we're allowed to connect/resolve there, and then launch the
@@ -2527,6 +2527,19 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
     return 0;
   } else {
     /* If we get here, it's a request for a .onion address! */
+
+    /* We don't support v2 onions anymore. Log a warning and bail. */
+    if (addresstype == ONION_V2_HOSTNAME) {
+      log_warn(LD_PROTOCOL, "Tried to connect to a v2 onion address, but this "
+               "version of Tor no longer supports them. Please encourage the "
+               "site operator to upgrade. For more information see "
+               "https://blog.torproject.org/v2-deprecation-timeline.");
+      control_event_client_status(LOG_WARN, "SOCKS_BAD_HOSTNAME HOSTNAME=%s",
+                                  escaped(socks->address));
+      connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
+      return -1;
+    }
+
     tor_assert(addresstype == ONION_V3_HOSTNAME);
     tor_assert(!automap);
     return connection_ap_handle_onion(conn, socks, circ);