tor-messenger should beware of irc ctcp fingerprinting.
maybe it should not reply, or reply fake data for TIME and VERSION.
06:16 [ctcp(testtm)] CLIENTINFO
06:16 CTCP CLIENTINFO reply from testtm: DCC ACTION ERRMSG CLIENTINFO PING TIME VERSION
06:16 [ctcp(testtm)] PING
06:16 CTCP PING reply from testtm:
06:16 [ctcp(testtm)] TIME
06:16 CTCP TIME reply from testtm: :Thu Mar 05 2015 06:16:57 GMT+0000 (UTC)
06:16 [ctcp(testtm)] VERSION
06:17 CTCP VERSION reply from testtm: Instantbird 1.6a1pre
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
I have confirmed both with CTCP TIME and by running new Date().toUTCString() (which is what CTCP TIME calls) on all platforms and there is no difference in the result so we are not leaking anything here.
Trac: Resolution: N/Ato fixed Status: reopened to closed
Why not to remove ctcp responses completely (but act on them to indicating that someone is probing the user)? In fact it is not needed for operation. I was very surprised that it discloses local time which can easily be used for deanonimization using clock drift and/or giving unique time to each client from public NTP servers.
Trac: Status: closed to reopened Parent: #14161 (closed)toN/A Resolution: fixed toN/A Sponsor: N/AtoN/A Reviewer: N/AtoN/A Severity: N/Ato Normal
Why not to remove ctcp responses completely (but act on them to indicating that someone is probing the user)? In fact it is not needed for operation. I was very surprised that it discloses local time which can easily be used for deanonimization using clock drift and/or giving unique time to each client from public NTP servers.
Removing CTCP support completely is a bad idea. Many IRC servers rely on VERSION support in order to expose features to the user. Additionally, some channels may have bots that CTCP you when you join, and kick you if your client does not respond. If there is no CTCP VERSION support, this client would be additionally breaking the agreements of several large public IRC servers, like Rizon.
VERSION can be implemented without jeopardizing anonymity. PING is another important CTCP request which I don't believe is unsafe, unless knowing a client's approximate lag is problematic. The timestamp field does not need to be based on the system's local time, and can even start with a random integer. The SOURCE request could link to Tor Project's webpage, providing some free advertising. ACTION also poses no safety issues, and is an important part of the IRC experience. USERINFO and CLIENTINFO do not provide any information that's not already available via WHOIS, though they're not strictly necessary. DCC has many anonymity issues, and is interfered with by Tor itself. FINGER is rarely used anymore and is not safe to implement anyway.
Some common implementation security issues can be seen in http://www.irchelp.org/protocol/ctcpspec.html. I have actually seen Pidgin respond to a request while infoleaking the current conversation being discussed in the NOTICE reply.
Please don't remove all CTCP support. Just selectively respond to important and safe requests.
We are keeping CTCP responses. The change in the above pull request is that CTCP TIME returns the time in UTC instead of the local time with the seconds timer stripped to prevent detailed time resolution.