Web browsers are off course checking that field, but some third party libraries for languages like perl don’t perform it (they check /keyUsage= but not /extendedKeyUsage=
).
So for example, I would need a certificate authority that would allow to put anything inside inside the /cn=
(a field which can be typically used for subscriber in the case of s/mime certificates since the /keyusage= field allow encipherment but not for server authentication).
Badssl doesn’t offer such testing option (and probably not any other website).
Why not make your own ca?
Because I’m talking about crappy stuff which have all their certificate hard coded in compiled shared objects?
Also, in my case (for the responsible disclosures I’m planning), the bug shouldn’t be hypothetical. I mean a certificate authority should deliver certificates with arbitrary websites in the /cn=
fields but without server authentication in the /extendedKeyUsage=
field.
What kind of certificate typically don’t allow for server encipherment in their /extendedKeyUsage=
field and don’t have the /cn=
part verified ? An s/mime certificate !
If such certificate get used with a web browser for man in the middle, the web browser will detect the certificate doesn’t allows server authentication in it’s /extendedKeyUsage=
field an refuse it. But if a tool doesn’t check /extendedKeyUsage=
field contents, man in the middle would work.