v3.7.0
ZLint v3.7.0
The ZMap team is happy to share ZLint v3.7.0.
Thank you to everyone who contributes to ZLint!
New Lints
e_arpa_domain_not_allowedCAs SHALL NOT issue Certificates containing Domain Names that end in an IP Reverse Zone Suffixe_basic_constr_invalid_derChecks the correct DER encoding of the cA field in the BasicConstraints exte_client_auth_not_allowedChecks that Server certs do not contain clientAuth in the EKU extensione_cs_aia_missing_ca_issuers_http_urlThe authorityInformationAccess extension MUST contain the HTTP URL of the Issuing CA's certificate (id-ad-caIssuers)e_cs_aia_ocsp_not_httpIf the CA provides OCSP responses, the authorityInformationAccess extension MUST contain the HTTP URL of the Issuing CA's OCSP
responder (id-ad-ocsp)e_cs_authority_information_accessThe authorityInformationAccess extension MUST be present and MUST NOT be marked criticale_cs_ecdsa_prohibited_curveIf the Key is ECDSA, then the curve MUST be one of NIST P-256, P-384, or P-521e_cs_max_validity_period_39_monthsCode Signing certificate validity must not exceed 39 months for certificates issued before March 1st, 2026e_cs_max_validity_period_460_daysCode Signing certificate validity must not exceed 460 days for certificates issued on or after March 1st, 2026e_cs_signature_algorithm_not_supportedCertificates MUST meet the following requirements for algorithm Source: SHA-1*, SHA-256, SHA-384, SHA-512e_exactly_one_smime_policyThe subscriber cert SHALL include exactly one of the reserved policy OIDs in §7.1.6.1e_excessively backdatednotBefore [must be] a value within 48 hours of the certificate signinge_ext_cannot_be_empty_sequenceExtensions whose value is SEQUENCE SIZE (1..MAX) OF must have at least 1 elemente_ocsp_cert_cdp_forbiddenIn OCSP certificates, the CDP extension MUST NOT appeare_ocsp_cert_cp_forbiddenIn OCSP certificates, the CP extension MUST NOT appeare_ocsp_cert_invalid_kuFor OCSP certificates, only digitalSignature is allowed in the KU exte_qcstatem_qctype_oneonlyChecks that a QC Statement of the type Id-etsi-qcs-QcType features exactly one of the allowed QcType OIDse_state_or_province_name_must_not_contain_control_charactersstateOrProvinceName MUST come from an authoritative data source of plain, human readable, namese_subj_email_not_in_sanCertificates with email addresses MUST include them in the SAN extension
Bug Fixes
e_cert_policy_iv_requires_countryfixed a bug where IV-issuing policy constrained CAs were inadvertently lintede_qcstatem_qctype_webfixed to not return an error for legitimate e-signature and e-seal qualified certificates
Security
- Patched CVE-2025-58181
- Bumped
golang.org/x/cryptofrom 0.36.0 to 0.45.0
Misc
- Added support for Chrome Root Program Policy-based lints as a new lint source
e_state_or_province_name_must_not_contain_control_charactersextended to also check localityNamecab_dv_conflicts_with_locality,cab_dv_conflicts_with_org,cab_dv_conflicts_with_postal,cab_dv_conflicts_with_province, and
cab_dv_conflicts_with_streetlints marked as supersedede_ca_country_name_invalidCheckApplies logic refactored with additional test coveragee_cert_policy_iv_requires_countrycitation updated to current location- Broad dependency updates
- Updated gtld_map
Changelog
- e07faf0 Remove Windows as a release target due to compilation errors in zcrypto (#1043)
- 1533c39 Remove FreeBSD as a release target due to compilation errors in zcrypto (#1042)
- e17555a Upgrade zcrypto, golang, and golangci-lint to latest (#1039)
- 5dc4eaf Cs add ria lints (#1036)
- 31204be Add lint for checking curve param requirements (#1035)
- da562d2 Add support for Chrome Root Program Policy-based lints, plus a first such lint addressing clientAuth deprecation (#1031)
- fe04242 util: gtld_map autopull updates for 2026-04-18T03:19:55 UTC (#1037)
- 12ccc55 refactor ca country check applies, add tests (#1032)
- 215f568 Add cs sig alg lint (#1033)
- 90f1337 Add lint to check for certain extensions to have at least 1 element according to RFC 5280 (#1028)
- f804eca fix iv countryName lint checkApplies, add personal name lint history (#1027)
- b536041 Add lint to address Ballot SC-086v3 (Sunset the Inclusion of IP Reverse Address Domain Names) (#1030)
- 48f6dc7 Add lint to check for email addresses in Subject but not in SAN (prohibited by RFC 5280 section 4.1.2.6) (#1026)
- 7eb7ba8 Qc sttmnt only one qc type (#1025)
- 145bd26 mark cab_dv_conflicts_with* lints superseded (#1023)
- 505d5f4 Add lint to check that the notBefore timestamp is not too early compared to the SCTs (#1022)
- bc0c81e Added validity period lints for before and after CSC-31, included unit tests with test certificates (#1020)
- 67d05d8 util: gtld_map autopull updates for 2026-02-14T04:48:16 UTC (#1021)
- 1bb9b40 go mod tidy (#1017)
- 234d2d4 Adding locality to e_state_or_province_name_must_not_contain_control_characters (#1015)
- 570d5a6 Lint to ensure that stateOrProvinceName is in a plain human, readable, format (#1014)
- 4f6ffa4 Add lint to check for a reserved policy identifier in S/MIME certificates (#1011)
- 5dfb580 Broad Dependency Updates (#1013)
- 04b6958 Patch for CVE-2025-58181 (#1009)
- 46db9bf build(deps): bump golang.org/x/crypto in /v3/cmd/gen_test_crl (#1008)
- 736cd7c build(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 in /v3 (#1007)
- 8be747f Add lint to check for correct DER encoding of the cA field in BasicConstraints (#1006)
- d96b640 Lint e_qcstatem_qctype_web throws an error for legitimate e-signature and e-seal qualified certificates (#1004)
- cfa6a89 Add some lints for OCSP Responder certificates (#1002)
Full Changelog: v3.6.8...v3.7.0