Open Bug 923282 Opened 13 years ago Updated 2 years ago

CERT_PKIXVerifyCert does not return SEC_ERROR_UNTRUSTED_ISSUER or report it in the verify log when other errors are encountered

Categories

(NSS :: Libraries, defect, P5)

Tracking

(Not tracked)

People

(Reporter: briansmith, Unassigned)

Details

Attachments

(1 file)

Attached patch Test case — — Splinter Review
See the attached patch, which attempts to add add test to verify that our active distrust records for DigiNotar cause NSS to report the distrust when we verify it. The test fails because CERT_PKIXVerifyCert returns the wrong error code vfychain -pp -vv -u 1 /c/p/nss/nss/tests/libpkix/certs/distrusted/DigiNotar-google.com-wildcard.cert Chain is bad!: ERROR SEC_ERROR_EXPIRED_CERTIFICATE (-8181): Peer's Certificate has expired. PROBLEM WITH THE CERT CHAIN: CERT 0. admin@google.com : Email Address(es): admin@google.com ERROR SEC_ERROR_EXPIRED_CERTIFICATE (-8181): Peer's Certificate has expired. Returned value is 1, expected result is distrusted CERT_PKIXVerifyCert should return SEC_ERROR_UNTRUSTED_ISSUER in this case. Further, it should include one of those error codes in the error log. I modified chains.sh to cause it to not pass the "-pp" flag to vfychain, to see if CERT_VerifyCertificate has the same problem. It does and I will report the result in a separate bug as I suspect that the fix will be different.
Actually, I just realized that this test case may be invalid. The issuer of the cert in the test case is "E=info@diginotar.nl,CN=DigiNotar Public CA 2025,O=DigiNotar,C=NL" which is apparently an intermediate certificate. In Firefox, we have special code to block this intermediate because it contains the string "DigiNotar," but NSS does not have an active distrust record for the intermediate. Presumably, the root that issued that intermediate is distrusted in NSS instead. So, for the test case to be valid, we would need to have the test case indicate that the "DigiNotar Public CA 2025" intermediate should be loaded along with the intermediate. That means I need to hunt down a copy of the "DigiNotar Public CA 2025" intermediate for the test. Also, this demonstrates that this isn't a high-urgency bug. An attacker can decide if he'd rather have users get the SEC_ERROR_UNKNOWN_ISSUER error instead of the SEC_ERROR_UNTRUSTED_ISSUER by simply omitting the intermediate in his certificate chain. However, I do think that CERT_PKIXVerifyCert should return SEC_ERROR_UNKNOWN_ISSUER in this case, or at least include it in the verify log.
Severity: normal → S3
Severity: S3 → S4
Priority: -- → P5
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: