[Q] HINFO in signed zone results SERVFAIL, but NOERROR with BIND

Hello,

I experience the following problem with unbound-1.1.1.
A bug? or I hope somebody to kindly point out my fault.

What I did is the following.
- Sign a zone data of "example.jp", which contains an HINFO
  RR, with dnssec-signzone in BIND-9.4.2, key is generated
  by dnssec-keygen in BIND-9.4.2, too.
- Serve the zone by NSD 3.2.0.

The result is the following.
- Look up the HINFO RR via named(recursive only) results
  NOERROR
- Look up via unbound 1.1.1 results SERVFAIL. unbound says
  "message contains bad rrsets" at the time.
- Look up the A RR of same owner via unbound results
  NOERROR.

# example.jp before signing:
$TTL 1m
@ IN SOA ns.example.jp. hostmaster.example.jp. (
      0 ; overridden by dnssec-signzone
      15m
      10m
      4w
      15m)
$INCLUDE ksk.key
$INCLUDE zsk.key
  NS ns.example.jp.
ns A 10.2.0.18
foo A 10.20.30.40
  HINFO VMware FreeBSD

Hi Koh-ichi,

This is an interpretation problem in RFC4034 6.2(3).

A workaround is to give your HINFO in lowercase:
  HINFO "vmware" "freebsd"

Unbound lowercases all text in the rdata of HINFO records before
verification. Because that is what I believe RFC4034 6.2(3) means.

Other software (ldns, bind) does not lowercase HINFO rdata, it seems.
It would be prudent to find a common interpretation. Something for
dnsext, already posted there.

Of course putting up a lowercase HINFO entry is against RFC1010, which
mandates all uppercase, and only - and /. Also the first word is the
CPU and second OS. Thus,
  HINFO "INTEL-CORE-I7-920" "FREEBSD-7-0"
This would be appropriate use according to RFC1034/1035.

However the strings do not appear in the allowed list in
http://www.iana.org/assignments/machine-names
http://www.iana.org/assignments/operating-system-names
so, HINFO "INTEL-386" "FREEBSD"

however, due to the interpretation problems in RFC4034 you are not
guaranteed DNSSEC verification unless you put this in lowercase,
  HINFO "intel-386" "freebsd"

Best regards,
   Wouter

Koh-ichi Ito wrote:

Hi Wouter,

Unbound lowercases all text in the rdata of HINFO records before
verification. Because that is what I believe RFC4034 6.2(3) means.

Isn't this one of those places where you can be liberal in what you accept?
That is, trying multiple cases (wire format and lowercase, to be precise)
while validating the signature?

I mean, there's hardly a security concern in the upper/lowercase distinction.

-Rick

Hoi Rick,

No. Either it is case insensitive and folded by the signer already, or
the case is important. Starting to tryout which change verifies leads in
a very dangerous path. And who knows if SPF strings are not case
sensitive and when they will be used in the HINFO type :slight_smile:

The unbound behaviour for HINFO is to follow the dnssec-updates draft.

Best regards,
   Wouter

Rick van Rein wrote:

* W. C. A. Wijngaards:

This is an interpretation problem in RFC4034 6.2(3).

A workaround is to give your HINFO in lowercase:
  HINFO "vmware" "freebsd"

Unbound lowercases all text in the rdata of HINFO records before
verification. Because that is what I believe RFC4034 6.2(3) means.

The two strings aren't DNS names (<domain-name>s), so they shouldn't
be lower-cased. I don't know why RFC 4034 specifies HINFO, it seems a
mistake.

How do you handle NAPTR? As far as I understand RFC 4034, you should
downcase the replacement only.

Good morning from Tokyo.

Florian Weimer wrote:

* W. C. A. Wijngaards:

This is an interpretation problem in RFC4034 6.2(3).

A workaround is to give your HINFO in lowercase:
  HINFO "vmware" "freebsd"

Unbound lowercases all text in the rdata of HINFO records before
verification. Because that is what I believe RFC4034 6.2(3) means.

The two strings aren't DNS names (<domain-name>s), so they shouldn't
be lower-cased. I don't know why RFC 4034 specifies HINFO, it seems a
mistake.

Yes, I have been convinced of that too. So, unbound no longer downcases
the HINFO rdata.

How do you handle NAPTR? As far as I understand RFC 4034, you should
downcase the replacement only.

Yes, one domain name field gets lowercased, the rest is not lowercased.

Best regards,
   Wouter

I verified that it's okey with 1.2.0.

Thanks a lot

          Koh-ichi Ito