Telekom Security: QCStatement with http link to PDS
Categories
(CA Program :: CA Certificate Compliance, task)
Tracking
(Not tracked)
People
(Reporter: stefan.kirch, Assigned: stefan.kirch)
Details
(Whiteboard: [ca-compliance] [uncategorized])
Preliminary Incident Report
Summary
Incident description:
In preparation for our audit, we found today that two certificates issued for testing purposes are incorrect. Within the QCStatement extension, the link to the respective PKI Disclosure Statements (PDS) is defined as an http link instead of an https link. The certificates have never been used and were both immediately revoked. No customer certificates are affected.
Relevant policies:
ETSI 319 411-2, see ETSI EN 319 412-5 for the relevant requirement QCS-4.3.4-03 “As a minimum, a URL to a PDS provided in this statement shall use the "https" (https://) scheme, IETF RFC 2818 [5] or later documents updating this specification.”
Source of incident disclosure:
Self Reported
Updated•1 year ago
|
| Assignee | ||
Comment 1•1 year ago
|
||
Full Incident Report
Summary
- CA Owner CCADB unique ID: A000059
- Incident description:
In preparation for our audit in combination with the launch of a new issuing platform for this type of certificates, we found that two certificates issued for testing purposes were incorrect.
The error was that within the QCStatement extension the link to the respective PKI Disclosure Statements (PDS) was defined as an http link instead of an https link.
As there were only issued two certificates for testing purposes, these certificates have never been used in a producitve environment and were both immediately revoked. No customer certificates are affected. - Timeline summary: (all Times are CEST, i.e. GMT+2)
- Non-compliance start date: 2025-02-13 10:01
- Non-compliance identified date: 2025-04-02 07:58
- Non-compliance end date: 2025-04-02 11:34
- Relevant policies: ETSI EN 319 411-2 which refers to ETSI EN 319 412-5 for the relevant requirement QCS-4.3.4-03 “As a minimum, a URL to a PDS provided in this statement shall use the "https" (https://) scheme, IETF RFC 2818 [5] or later documents updating this specification.”.
- Source of incident disclosure: Self Reported
Impact
- Total number of certificates:
2 - Total number of "remaining valid" certificates:
0 - Affected certificate types:
Qualified certificates for TLS server authentication (QWACs according to QEVCP-w) - Incident heuristic:
The following certificates are affected:
https://crt.sh/?sha256=DC67B396D9DAA14BCD89C3CEB74C3A19FD616F064E4D318B8F588D5A5B8BFD10
https://crt.sh/?sha256=486DBABD097DE95366921E05AE178EFB1CDE1F5900387417C757587E14C3A3C0 - Was issuance stopped in response to this incident, and why or why not?:
As production of this type of certificate had not yet started on this new platform (apart from two test certificates for the launch) there was no need to stop issuance. - Analysis:
n/a as there is no Revocation Delay. - Additional considerations:
none
Timeline
(all Times are CEST, i.e. GMT+2)
2024-03-05 12:00 The initial configuration of the new platform for this certificate type was set.
2025-02-13 10:01 The first certificate of this type was issued on the new platform in preparation of the launch.
2025-02-13 13:15 The QA for the first certificate was done without finding an error using zlint, certlint, x509lint.
2025-04-01 10:35 The second certificate was issued as part of a final quality check for the audit.
2025-04-02 07:58 The error was found by linting the certificate with pkimetal within crt.sh: https://crt.sh/?id=17552531562&opt=pkimetal .
2025-04-02 08:29 Both affected certificates were revoked.
2025-04-02 08:44 An incorrect entry in the certificate template that led to the misissuance was found, a CR to correct the template was planned.
2025-04-02 10:15 Our analysis showed that zlint, certlint and x509lint do not have a lint for this requirement.
2025-04-02 11:34 The certificate template was corrected.
2025-04-02 16:09 A Preliminary Incident Report was filed in Bugzilla.
2025-04-02 16:49 Our software supplier was assigned to create a pull request for zlint that checks the existence of an https link to the PDS within the QCStatement extension.
2025-04-03 09:10 Our Conformity assessment body was informed about the bug.
2025-04-03 11:19 As part of the audit, a new certificate was issued and successfully linted with pkimetal: https://crt.sh/?id=17600815196&opt=pkimetal.
Related Incidents
D-Trust: QCStatement with http link of PKI Disclosure Statements
Related Bug ID: 1939809
Related Bug URL: https://bugzilla.mozilla.org/show_bug.cgi?id=1939809
Opened date: 2025-01-03
Description: The incident is similar, as the affected certificates had the same error (http link instead of https link), even if the root cause was different.
Remark: As we monitor all incidents in Bugzilla, we have also checked our certificates for this error in respect of this incident. Since the certificates on the old platform were correct, we did not pursue this bug any further and did not keep it in mind when launching the new platform.
Root Cause Analysis
Contributing Factor 1: Insufficient QA within the initial configuration of the new certificate templates
- Description:
For the initial configuration of the certificate template for this type of certificate within the new platform the template from the old platform was used.
Unfortunately the handling of the PDS-URL had changed within the old platform so that the defined URL from the template was ignored and instead a URL configured in another setting was used. As part of the adaptation of the old platform, however, this ignored part was not deleted from the template, so that there was still an old comment there that referred to an old version of the ETSI standard that did not require an https path to the PDS.
The error was not seen during the QA of this first certificate, although the certificate was checked using the four-eyes principle and all certficates are linted against the latest versions of zlint, certlint and x509lint. - Timeline:
From 2024-03-05 12:00 to 2025-04-02 11:34 - Detection:
The error was found within the QA of the second certificate using the pkimetal lint. - Interaction with other factors:
zlint, certlint and x509lint do not find this error until today (see Contributing Factor 2).
Contributing Factor 2: zlint, certlint and x509lint do not find this error
- Description:
zlint, certlint and x509lint are used for pre- and post-sign-linting of all our TLS server certificates, and thus also when issuing the first certificate, but zlint, certlint and x509lint do not find this error. - Timeline:
n/a - Detection:
The error was found within the QA of the second certificate using the pkilint within pkimetal. - Interaction with other factors:
none
Lessons Learned
- What went well:
The misissuance was detected before launching the new plattform, so that only two certificates for testing were affected.
All affected certificates were revoked in time. - What didn’t go well:
Despite a QA according to a four-eyes principle and presign-linting all certficates with zlint, certlint and x509lint the error was not found within the first QA. - Where we got lucky:
The affected certificates were never used in a productive environment.
No customers were affected. - Additional:
none
Action Items
| Action Item | Kind | Corresponding Root Cause(s) | Evaluation Criteria | Due Date | Status |
|---|---|---|---|---|---|
| Adaptation of the testing requirements to lint certificates from the test resp. pre-productive environment against pkimetal in addition to manual testing in a four-eyes principle | Prevent | Root Cause # 1 | no error message from pkimetal | 2025-04-15 | Ongoing |
| Contribute to zlint with a PULL-request to implement a corresponding lint | Prevent | Root Cause # 2 | error message from zlint when linting the misissued certificates again | 2025-04-15 | Ongoing |
Appendix
None, see the list of affected certificates above.
| Assignee | ||
Comment 2•1 year ago
|
||
Our software supplier has added the pull request to github: https://github.com/zmap/zlint/pull/935
Action item#2 is settled with that.
Action Items
| Action Item | Kind | Corresponding Root Cause(s) | Evaluation Criteria | Due Date | Status |
|---|---|---|---|---|---|
| Adaptation of the testing requirements to lint certificates from the test resp. pre-productive environment against pkimetal in addition to manual testing in a four-eyes principle | Prevent | Root Cause # 1 | no error message from pkimetal | 2025-04-15 | Ongoing |
| Contribute to zlint with a pull request to implement a corresponding lint | Prevent | Root Cause # 2 | error message from zlint when linting the misissued certificates again | 2025-04-09 | Completed |
| Assignee | ||
Comment 3•1 year ago
|
||
We have included in our knowledge base a description of how to lint certificates that need to be tested manually using the pkimetal web interface.
Also Action item#1 is settled with that.
Action Items
| Action Item | Kind | Corresponding Root Cause(s) | Evaluation Criteria | Due Date | Status |
|---|---|---|---|---|---|
| Adaptation of the testing requirements to lint certificates from the test resp. pre-productive environment against pkimetal in addition to manual testing in a four-eyes principle | Prevent | Root Cause # 1 | no error message from pkimetal | 2025-04-14 | Completed |
| Contribute to zlint with a PULL-request to implement a corresponding lint | Prevent | Root Cause # 2 | error message from zlint when linting the misissued certificates again | 2025-04-09 | Completed |
Comment 4•1 year ago
|
||
We are monitoring this bug for feedback. Please let us know if there are any comments or questions.
I think PKIlint catches this error. Have you thought about using PKIlint?
Comment 6•1 year ago
|
||
We have thought about it in the past but considered zlint to have a very high quality and appreciated the broad community behind it (which also motivated our pull request to zlint).
However, in recent past and due to this bug in particular, we are reconsidering the implementation of pkilint or pkimetal.
Comment 7•1 year ago
|
||
I realize that this may seem like a minor quibble, but I suspect that the Subject:organizationIdentifier value ("VATDE-DE254595345") in the first affected certificate is not entirely correct; in fact, the ISO 3166 identifier of the country that issued the VAT number ("DE") appears twice in the organizationIdentifier. Adding the country code as a prefix to a VAT number is common practice, especially in intra-community transactions, for disambiguation purposes, but, as far as I know, it is not an integral part of the VAT number itself, especially when the country that assigned it is already known from the context (in this case, it is specified by the two letters "DE" following "VAT"). But I may be wrong. This aspect is not addressed in the CABF BRs, nor in the ETSI standards, apparently.
Comment 8•1 year ago
|
||
From our point of view, the country code is an integral part of the VAT ID, see Article 215 of EU Directive 2006/112
https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32006L0112
Comment 9•1 year ago
|
||
FWIW, I agree with Adriano on this one. If the author of ETSI EN 319 412-1 wanted to include the country identifier within the "number" itself, it would explicitly state it. IMO including the country identifier in the number itself is redundant because it is already included in the scheme.
Since you mentioned the EU Directive, please note that for Greece, the exception was for the country identifier in the VAT scheme. The expected value would be "VATEL-123456789". To confirm the expected behavior, please check the examples in section 5.1.4 of ETSI EN 319 412-1. There is an explicit example for VAT.
Comment 10•1 year ago
|
||
Correct, the country code is only included after the scheme used as stated in the ETSI EN 319 412-1. As Dimitris says, the examples can give you a better view of what´s required.
| Assignee | ||
Comment 11•1 year ago
|
||
Hi Adriano, Dimitris, Inigo,
I fully agree with you that the second “DE” is redundant, and so we also had some internal discussions about it before we decided to include it in the registration reference in the future.
In the past we have not set the country code again in the registration reference, conform to the examples in the EVGL and the S/MIME BR. The discussion came up last year when we reviewed the new requirements in ETSI 319 412-4, e.g. WEB-4.1.2-4, which requires the organizationIdentifier to be set in QWACs and therefore the VAT registration scheme has become more important to us.
On the one hand there are the examples in the EVGL and in the S/MIME BR in which the prefix of the identifier is not set, but on the other hand we have (besides the definition in Article 215 quoted above in comment#8) the fact that the country code is also part of the tax number in the official assignments from the Federal Central Tax Office (“...the VAT identification number assigned to you is: DE1234...”). When validating against these official assignments, it seemed “more correct” for us to consider “DE” as an integral part of the registration reference and to set it again.
At the same time, the use of the EUID as part of the NTR scheme in S/MIME certificates was also discussed and there we see a similar implementation: within the registration reference the country code as part of the business register identifier is set again "NTRDE-DER3306.HRB12345". So it seemed to be consistent to set the country code also again in the VAT scheme.
But as stated above, we see the repetition of the country code also as redundant information and therefore we can happily do without it. However, I would appreciate if we could clarify this in ETSI EN 319 412-1 as well as in the EVGL and S/MIME BR, as in my view both variants are currently within the scope of interpretation of the specifications and none of the variants is really wrong.
Note: Last but not least, it would of course be desirable if we could make the rules for the organizationIdentifer consistent for all certificate types since the requirements in ETSI, EVGL and S/MIME BR currently deviate from each other (e.g. the EVGL do not allow the use of LEI, the S/MIME BR also allow GOV and INT in some cases, the requirements in ETSI 412-1 are binding only if the legal semantics identifier is also set, which is usually not the case). However, this discussion goes beyond the scope of this bug and must be dealt with elsewhere. As we are not yet a member of the SCWG or the SMCWG, we cannot provide clarification there, but we can bring it to ETSI ESI for clarification in ETSI EN 319 412-1.
Comment 12•1 year ago
|
||
(In reply to Stefan Kirch from comment #11)
At the same time, the use of the EUID as part of the NTR scheme in S/MIME certificates was also discussed and there we see a similar implementation: within the registration reference the country code as part of the business register identifier is set again "NTRDE-DER3306.HRB12345". So it seemed to be consistent to set the country code also again in the VAT scheme.
We agree with this interpretation. If the German authorities assign a company the VAT number DE12345678 (i.e. this is the number included in an invoice, for example), the logical interpretation of the SBR is to build the OrgID as VATDE-DE12345678
Comment 13•1 year ago
|
||
This is not in line with the ETSI standard(In reply to Pedro Fuentes from comment #12)
(In reply to Stefan Kirch from comment #11)
At the same time, the use of the EUID as part of the NTR scheme in S/MIME certificates was also discussed and there we see a similar implementation: within the registration reference the country code as part of the business register identifier is set again "NTRDE-DER3306.HRB12345". So it seemed to be consistent to set the country code also again in the VAT scheme.
We agree with this interpretation. If the German authorities assign a company the VAT number DE12345678 (i.e. this is the number included in an invoice, for example), the logical interpretation of the SBR is to build the OrgID as VATDE-DE12345678
Pedro, with all due respect, this is not in line with the ETSI text and example. If you want to argue about "relaxing" this rule or to clarify that the intent is not to repeat the country identifier, regardless if the government "prints" or "assigns" this number in some document (invoice or otherwise), you can definitely bring it up.
I believe the EUID is different because this scheme is not identified on its own (there is no EUID prefix).
Ultimately I see and appreciate all the arguments but this is one of those rare cases where I believe the ETSI standard is pretty clear, and the example provided makes it even more clear. If you have specific language to propose to make it even clearer, please contact me offline and I can bring it up in ETSI ESI.
Comment 14•1 year ago
|
||
Pedro, with all due respect, this is not in line with the ETSI text and example. If you want to argue about "relaxing" this rule or to clarify that the intent is not to repeat the country identifier, regardless if the government "prints" or "assigns" this number in some document (invoice or otherwise), you can definitely bring it up.
This conversation, while interesting, is not relevant to this bug. The certificate in question does not assert the legalPerson semantics identifier, so the syntax requirements in EN 319 412 1, clause 5.1.4 are not applicable. And even if the certificate contained the semantics identifier, I believe it would still comply with clause 5.14. Happy to discuss this in another venue.
The EV Guidelines provides the following guidance for the Registration Reference in a VAT orgId:
Reference allocated by the national tax authorities to a Legal Entity.
I think this definition is broad enough to allow either form of the VAT.
| Assignee | ||
Comment 15•1 year ago
|
||
Following on from the last comment, we would like to support the discussion about the organizationIdentifer syntax within ETSI ESI as well as in the CA/Browser Forum, but take it out of the scope of this bug.
In the meantime, the pull request contributed to zlint (see Action Item#2) is also committed, see https://github.com/zmap/zlint/pull/935/commits/9fd17798e55b71585afb9ff156b409d6d9639229.
Are there any other comments on the original scope of this bug?
Comment 16•1 year ago
|
||
As there are no further comments or questions and all Action Items have been completed, we would like to request the closure of this bug. Accordingly, here is the Incident Report Closure Summary.
Incident Report Closure Summary
- Incident Description: 2 Certificates were misissued: Within the QCStatement extension, the link to the respective PKI Disclosure Statements (PDS) was set as an http link instead of an https link.
- Incident Root Cause(s): The certficates were misissued due to an insufficient QA within the initial configuration of the new certificate templates in a new certificate management platform. The linting tools used did not prevent this error as there was no rule set for this requirement, although a current version was used.
- Remediation Description: To address the issue, internal processes for testing were updated to lint certificates from the test resp. pre-productive environment against another linting tool (pkimetal). Furthermore a pull request for a corresponding lint was contributed to zlint (in the meantime committed).
- Commitment Summary: We will continuously strengthen our processes, follow the updates of ETSI and CA/Browser Forum specifications as well as Root Policies, and regularly train staff to avoid such incidents in the future.
Updated•1 year ago
|
Comment 17•1 year ago
|
||
This is a final call for comments or questions on this Incident Report.
Otherwise, it will be closed on approximately 2025-05-21.
Updated•1 year ago
|
Updated•1 year ago
|
Description
•