[tor-bugs] #23876 [Core Tor/Torsocks]: Torsocks getpeername() is broken for .onion addresses
Tor Bug Tracker & Wiki
blackhole at torproject.org
Sun Oct 15 21:24:24 UTC 2017
#23876: Torsocks getpeername() is broken for .onion addresses
-----------------------------------+---------------------
Reporter: Torsocks_user | Owner: dgoulet
Type: defect | Status: new
Priority: Medium | Milestone:
Component: Core Tor/Torsocks | Version:
Severity: Normal | Keywords:
Actual Points: | Parent ID:
Points: | Reviewer:
Sponsor: |
-----------------------------------+---------------------
When I connect to a .onion host with ssh using torsocks, ssh connects to
the host and completes authentication but then it aborts with this error:
{{{get_sock_port: getnameinfo NI_NUMERICSERV failed: ai_family not
supported}}}
I built torsocks with additional debug messages and found that the failure
is due to a bug in torsocks. Ssh calls getpeername() to map the onion IP
cookie address it was given by torsocks back to a hostname, and
tsocks_getpeername() at getpeername.c:60 returns the sockaddr struct from
the connection table expecting it to contain the onion IP cookie. But that
struct is actually all 0's because when the connection entry for a .onion
address is created in tsocks_connect() at connect.c:162, the address
passed to connection_create is null instead of the onion IP cookie
address.
Here's a patch to pass the onion IP cookie address to connection_create()
instead of null. With this patch, the ssh connection to a .onion host
works.
{{{
--- src/lib/connect.c.orig
+++ src/lib/connect.c
@@ -156,10 +156,11 @@
onion_pool_unlock(&tsocks_onion_pool);
if (on_entry) {
/*
- * Create a connection without a destination address since
we will set
+ * Create a connection with the onion IP cookie since
getpeername()
+ * might need it, and set connection domain and hostname
to use
* the onion address name found before.
*/
- new_conn = connection_create(sockfd, NULL);
+ new_conn = connection_create(sockfd, addr);
if (!new_conn) {
errno = ENOMEM;
goto error;
}}}
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/23876>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list