[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r14410: apply patch from lodger: reject requests for reverse-dns loo (in tor/trunk: . src/or)
Author: nickm
Date: 2008-04-22 12:32:55 -0400 (Tue, 22 Apr 2008)
New Revision: 14410
Modified:
tor/trunk/
tor/trunk/ChangeLog
tor/trunk/src/or/dns.c
Log:
r15273@tombo: nickm | 2008-04-22 12:32:28 -0400
apply patch from lodger: reject requests for reverse-dns lookup of names in private address space. make non-exits reject all dns requests. Fixes bug 619.
Property changes on: tor/trunk
___________________________________________________________________
svk:merge ticket from /tor/trunk [r15273] on 49666b30-7950-49c5-bedf-9dc8f3168102
Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog 2008-04-22 16:23:51 UTC (rev 14409)
+++ tor/trunk/ChangeLog 2008-04-22 16:32:55 UTC (rev 14410)
@@ -29,6 +29,8 @@
nwf, bugfix on 0.2.0.16-alpha.
- Warn less verbosely about clock skew from netinfo cells from
untrusted sources. Fixes bug 663.
+ - Non-exit relays no longer allow DNS requests. Fixes bug 619.
+ Patch from Lodger.
o Minor features:
- Allow separate log levels to be configured for different logging
@@ -61,8 +63,13 @@
descriptors we need to keep around when we're cleaning out old
router descriptors. This speeds up the computation significantly, and
may reduce fragmentation.
- - Make dumpstats() log the fullness and size of openssl-internal buffers.
+ - Make dumpstats() log the fullness and size of openssl-internal
+ buffers.
+ o Minor features (security):
+ - Reject requests for reverse-dns lookup of names in a private
+ address space. Patch from Lodger.
+
o Code simplifications and refactoring:
- Refactor code using connection_ap_handshake_attach_circuit() to
allow that function to mark connections for close. Part of a fix for
Modified: tor/trunk/src/or/dns.c
===================================================================
--- tor/trunk/src/or/dns.c 2008-04-22 16:23:51 UTC (rev 14409)
+++ tor/trunk/src/or/dns.c 2008-04-22 16:32:55 UTC (rev 14410)
@@ -549,9 +549,14 @@
or_circuit_t *oncirc = TO_OR_CIRCUIT(exitconn->on_circuit);
int is_resolve, r;
char *hostname = NULL;
+ routerinfo_t *me = router_get_my_routerinfo();
is_resolve = exitconn->_base.purpose == EXIT_PURPOSE_RESOLVE;
- r = dns_resolve_impl(exitconn, is_resolve, oncirc, &hostname);
+ if (is_resolve && me &&
+ policy_is_reject_star(me->exit_policy)) /* non-exit */
+ r = -1;
+ else
+ r = dns_resolve_impl(exitconn, is_resolve, oncirc, &hostname);
switch (r) {
case 1:
/* We got an answer without a lookup -- either the answer was
@@ -660,9 +665,12 @@
* .in-addr.arpa address but this isn't a resolve request, kill the
* connection.
*/
- if ((r = parse_inaddr_arpa_address(exitconn->_base.address, NULL)) != 0) {
- if (r == 1)
+ if ((r = parse_inaddr_arpa_address(exitconn->_base.address, &in)) != 0) {
+ if (r == 1) {
is_reverse = 1;
+ if (is_internal_IP(ntohl(in.s_addr), 0)) /* internal address */
+ return -1;
+ }
if (!is_reverse || !is_resolve) {
if (!is_reverse)