Skip to content

Commit

Permalink
More heuristics to detect valid plain DNS responses
Browse files Browse the repository at this point in the history
  • Loading branch information
jedisct1 committed Jan 11, 2025
1 parent f332394 commit 6dd22be
Showing 1 changed file with 21 additions and 17 deletions.
38 changes: 21 additions & 17 deletions dnscrypt-proxy/serversInfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -620,25 +620,29 @@ func fetchDNSCryptServerInfo(proxy *Proxy, name string, stamp stamps.ServerStamp
&name,
false,
)
if err == nil {
if msg.Id != 0xcafe {
dlog.Infof("[%s] handling of DNS message identifiers is broken", name)
}
for _, rr := range msg.Answer {
if rr.Header().Rrtype == dns.TypeA || rr.Header().Rrtype == dns.TypeAAAA {
dlog.Warnf("[%s] may be a lying resolver -- skipping", name)
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, rr.String())
if err == nil && len(msg.Question) > 0 {
question := msg.Question[0]
if question.Qtype == query.Question[0].Qtype && strings.EqualFold(question.Name, query.Question[0].Name) {
dlog.Debugf("[%s] also serves plaintext DNS", name)
if msg.Id != 0xcafe {
dlog.Infof("[%s] handling of DNS message identifiers is broken", name)
}
}
for _, rr := range msg.Extra {
if rr.Header().Rrtype == dns.TypeTXT {
dlog.Warnf("[%s] may be a dummy resolver -- skipping", name)
txts := rr.(*dns.TXT).Txt
cause := ""
if len(txts) > 0 {
cause = txts[0]
for _, rr := range msg.Answer {
if rr.Header().Rrtype == dns.TypeA || rr.Header().Rrtype == dns.TypeAAAA {
dlog.Warnf("[%s] may be a lying resolver -- skipping", name)
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, rr.String())
}
}
for _, rr := range msg.Extra {
if rr.Header().Rrtype == dns.TypeTXT {
dlog.Warnf("[%s] may be a dummy resolver -- skipping", name)
txts := rr.(*dns.TXT).Txt
cause := ""
if len(txts) > 0 {
cause = txts[0]
}
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, cause)
}
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, cause)
}
}
}
Expand Down

0 comments on commit 6dd22be

Please sign in to comment.