All,

Just an interesting heads up:

While we were doing some maintenance on the CCADB, Chris Henderson found
Golang could not process several of Wells Fargo's intermediate CAs, such as:

   - sha256sum =
   3B8812E6F851B6F933DC23ED764082FB5F50DE3C2DDDEBCC9CA240B7ACACE4D1
   
<https://censys.io/certificates/3b8812e6f851b6f933dc23ed764082fb5f50de3c2dddebcc9ca240b7acace4d1>
      - https://crt.sh/?id=250864705&opt=x509lint
   - sha256sum =
   3B8812E6F851B6F933DC23ED764082FB5F50DE3C2DDDEBCC9CA240B7ACACE4D1
   
<https://censys.io/certificates/3b8812e6f851b6f933dc23ed764082fb5f50de3c2dddebcc9ca240b7acace4d1>
   - https://crt.sh/?id=250864704&opt=x509lint
   - sha256sum =
   D8D7627D0F5D0AD09155B2C9347307925EF3E7F6364F231969C0D2E4C71962F0
   
<https://censys.io/certificates/d8d7627d0f5d0ad09155b2c9347307925ef3e7f6364f231969c0d2e4c71962f0>
      - https://crt.sh/?id=254024589&opt=ocsp,x509lint

This is because the organizationName field is typed as a PrintableString
but contains a character illegal in that type, the ampersand. This is
surely just a template typo during the issuance process, and since most
software is permissive to ASN.1 mistakes like this, it wouldn't have been
caught by casual inspection.

Notably, some of the intermediates are UTF8String, and thus compliant:

   - sha256sum =
   CF7CFA4F9DBCCBCA6D20EFDEBEAD4E173B34E76BDA1EB1E619F44E06E95FC208
   
<https://censys.io/certificates/cf7cfa4f9dbccbca6d20efdebead4e173b34e76bda1eb1e619f44e06e95fc208>
      - https://crt.sh/?asn1=254978692

It also appears that the end-entity certificates issued from Wells Fargo's
intermediates are compliant.

Since Golang is very strict, it caught the constraint error. Chris has
opened Issue #22970 <https://github.com/golang/go/issues/22970> for Golang
to decide if it should be permissive or selectively permissive for this
case. (Interestingly, a year ago, Adam Langley scanned CT for these errrors
<https://github.com/golang/go/issues/14017#issuecomment-176238628> and
found that ampersand is the big offender.)

Note that x509lint already catches this -- as is shown on the crt.sh links
above.

I'd encourage everyone in the Mozilla Root Program to use tools like
x509lint on certificates before making them operational. I think it'd also
be a good idea to, in the future, run these kinds of linting tools on new
intermediates added to the CCADB, and require remediation of some sort for
errors.

Cheers,
J.C.
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to