Skip to content

🪲: DANE TLSA support looks far from correct #2328

@mdecimus

Description

@mdecimus

What happened?

A quick read of the code suggests the following defects:

  • When TLSA records include both the DANE-EE(3) usage and DANE-TA(2), it appears that BOTH must match
    • That is, if no usage DANE-EE(3) records match, the DANE-TA(2) records are not considered
    • When only DANE-TA(2) records are published, the chain is verified using WebPKI trust anchors, and then required to match one of the DANE-TA(2) records, which is PKIX-TA(0) semantics, not DANE-TA(2).
    • It is unclear how TLSA base domain is determined, when DANE is in effect, the TLSA base domain should be used as the SNI hostname and should also be the hostname checked when verifying DANE-TA(2) chains, which need not be anchored at a WebPKI CA, so DANE-TA(2) verification needs to override the trust-anchors to enable anchoring the chain at a possibly non-self-signed (subsidiary/intermediate) CA, or a private root, or a WebPKI root, ... And the TA is almost always in the form of a hash, so the verification logic is custom code, distinct from the standard PKIX logic.
    • When both DANE-EE and DANE-TA records are published, the TLSA base domain is ignored for matching the EE cert, but MUST be verified when matching issuer certs.
      • A strictly correct implementation would also allow the nexthop (typically recipient) domain to match if TLSA base domain does not. And also the MX hostname if distinct from the TLSA base domain (when that is found by CNAME chasing).

How can we reproduce the problem?

I can reproduce the problem by doing the following steps:

Version

v0.13.x

What database are you using?

None

What blob storage are you using?

None

Where is your directory located?

None

What operating system are you using?

None

Relevant log output

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions