Camerfirma: MULTICERT certificates with a validity period greater than 825 days
Categories
(CA Program :: CA Certificate Compliance, task)
Tracking
(Not tracked)
People
(Reporter: eusebio.herrera, Assigned: eusebio.herrera)
References
Details
(Whiteboard: [ca-compliance] [ov-misissuance])
Attachments
(1 file)
|
2.25 KB,
text/plain
|
Details |
Comment 1•7 years ago
|
||
| Assignee | ||
Comment 3•7 years ago
|
||
Comment 4•7 years ago
|
||
Comment 5•7 years ago
|
||
Comment 7•7 years ago
|
||
| Comment hidden (obsolete) |
Comment 10•7 years ago
|
||
Comment 11•7 years ago
|
||
(In reply to ca.forum from comment #8)
These bugs were present in a new batch job that we have developed for
certificate replacement. Previously, this was done by manual processes, but
it was obviously not scaling well and was error-prone, so we decided to
develop something more automated.The test cases were in fact not covering enough of the possible situations.
I would just like to emphasize that we were trying to quickly roll out this
batch job to 1) replace the certificates and minimize violation of BR
deadlines; 2) avoid the Christmas freeze window, where a lot of our
customers have serious trouble replacing certificates.Our PKI is in a continuous development process, split into sprints. New test
cases have been now integrated to (hopefully) catch more possible errors.
And as said before, we are working on the integration of a lint tool as a
last safe net, when everything else fails.
Thanks for continuing to examine the root causes here, as we try to work out best practices.
Understanding that mistakes happen, it appears we've identified another root cause - which is time pressures lead to compromised code quality. Does that sound accurate? If it does, what steps are being taken to reduce this risk in the future?
Put differently, if there was another event that required a rapid roll-out of certificates, what steps have been taken to help the community feel that it will be done w/o introducing further errors?
Comment 12•7 years ago
|
||
(In reply to Ryan Sleevi from comment #11)
(In reply to ca.forum from comment #8)
These bugs were present in a new batch job that we have developed for
certificate replacement. Previously, this was done by manual processes, but
it was obviously not scaling well and was error-prone, so we decided to
develop something more automated.The test cases were in fact not covering enough of the possible situations.
I would just like to emphasize that we were trying to quickly roll out this
batch job to 1) replace the certificates and minimize violation of BR
deadlines; 2) avoid the Christmas freeze window, where a lot of our
customers have serious trouble replacing certificates.Our PKI is in a continuous development process, split into sprints. New test
cases have been now integrated to (hopefully) catch more possible errors.
And as said before, we are working on the integration of a lint tool as a
last safe net, when everything else fails.Thanks for continuing to examine the root causes here, as we try to work out best practices.
Understanding that mistakes happen, it appears we've identified another root cause - which is time pressures lead to compromised code quality. Does that sound accurate?
Yes.
If it does, what steps are being taken to reduce this risk in the future?
Put differently, if there was another event that required a rapid roll-out of certificates, what steps have been taken to help the community feel that it will be done w/o introducing further errors?
Thinking of this particular error, if it would happen again in the future, at least the lint tool (if not sooner in the test cases) will catch the misissued certificates.
Comment 13•7 years ago
|
||
Trying to summarize things below. Could you please review to ensure that this is correct and complete?
-
Incident #1 (Multicert): Issuing cert with period > 825 days (Comment #0)
- Timeline:
- (Sometime between 2018-10-29 and 2018-11-14) Multicert introduces new code to reissue certificates
- 2018-11-14 - First misissuance: https://crt.sh/?id=945894448
- 2018-11-16 - Camerfirma detects misissued certificate and communicates with Multicert
- 2018-11-16 - Multicert implements and deploys fix
- 2018-11-22 - Multicert completes revocation of existing certificates (Comment #2)
- Cause: Following Bug #1502957, Multicert introduced code to rapidly reissue certificates. This code improperly issued certificates with the notBefore set to the present date, and then computed the notAfter based on the originally issued validity period (e.g. +3 years). Thus, any certificate issued the following calendar day or later would be misissued (Comment #2)
- Existing Mitigations:
- A manual test for reissuance in a test environment existed. However, as this reissuance is performed immediately after the first issuance, it did not exercise this bug.
- Changes made:
- Implemented - 2018-11-16 Underlying bug is fixed (Comment #0)
- Not Implemented - 2019-03 Pre-issuance linting will be implemented (Comment #2)
- Timeline:
-
Incident #2 (Multicert): Failure to revoke misissued certificates according to the BRs (Comment #0, Comment #1)
- Timeline:
- 2018-11-14 - Multicert misissues certificate: https://crt.sh/?id=945894448
- 2018-11-16 - Camerfirma notifies Multicert of misissuance
- 2018-11-22 - Multicert completes revocation of last certificate
- Cause: Multicert management decided to ignore the Baseline Requirements for this customer. (Comment #2)
- Changes made:
- None
- Timeline:
-
Incident #3 (Multicert): Issuing cert with period > 825 days (Comment #3)
- Timeline:
- 2018-12-13: Multicert misissues a certificate - https://crt.sh/?id=1026264398 (Comment #3)
- 2018-12-18: Camerfirma detects misissued certificate and notifies Multicert of misissuance (Comment #3)
- 2018-12-18: Camerfirma corrects the underlying issue
- 2018-12-18: Camerfirma revokes the misissued certificate
- Cause:
- Multicert's implementation of validity period controls was based on the number of months (27 months), rather than the BR-specified number of days. Multicert then used an API which computed fractional months by rounding down/eliminating, allowing for periods greater than 825 days. (Comment #3, Comment #6)
- Changes Made:
- Implemented - 2018-12-18 Underlying bug is fixed (Comment #3)
- Not Implemented - 2019-03 Pre-issuance linting will be implemented (Comment #2)
- Timeline:
-
Incident #4 (Camerfirma): Sub-CA with repeated failures to abide by the BRs
- Incident report/details not provided
Comment 14•7 years ago
|
||
(In reply to Ryan Sleevi from comment #13)
Many thanks for the summary. Please find a few corrections and additional information below inline.
Trying to summarize things below. Could you please review to ensure that this is correct and complete?
Incident #1 (Multicert): Issuing cert with period > 825 days (Comment #0)
- Timeline:
- (Sometime between 2018-10-29 and 2018-11-14) Multicert introduces new code to reissue certificates
- 2018-11-14 - First misissuance: https://crt.sh/?id=945894448
- 2018-11-16 - Camerfirma detects misissued certificate and communicates with Multicert
- 2018-11-16 - Multicert implements and deploys fix
- 2018-11-22 - Multicert completes revocation of existing certificates (Comment #2)
- Cause: Following Bug #1502957, Multicert introduced code to rapidly reissue certificates. This code improperly issued certificates with the notBefore set to the present date, and then computed the notAfter based on the originally issued validity period (e.g. +3 years). Thus, any certificate issued the following calendar day or later would be misissued (Comment #2)
- Existing Mitigations:
- A manual test for reissuance in a test environment existed. However, as this reissuance is performed immediately after the first issuance, it did not exercise this bug.
- Changes made:
- Implemented - 2018-11-16 Underlying bug is fixed (Comment #0)
- Not Implemented - 2019-03 Pre-issuance linting will be implemented (Comment #2)
Incident #2 (Multicert): Failure to revoke misissued certificates according to the BRs (Comment #0, Comment #1)
- Timeline:
- 2018-11-14 - Multicert misissues certificate: https://crt.sh/?id=945894448
- 2018-11-16 - Camerfirma notifies Multicert of misissuance
- 2018-11-22 - Multicert completes revocation of last certificate
- Cause: Multicert management decided to ignore the Baseline Requirements for this customer. (Comment #2)
Short clarification on the reason why we decided to hold the revocation for additional 1 more day:
That particular certificate is extremely critical to the customer – the national payment gateway system.
- Changes made:
- None
As actions, first and foremost we are educating our customers for the need to be able to quickly update TLS certificates. Almost all of them have been sensible and cooperative on the past certificate replacements. However, a few of them have complex systems difficult to update (for example, some have certificate pinning hard coded on the mobile app and the app is maintained by a third party). In these cases we are advising the customer about the tight revocation timelines, the benefits of establishing a quick certificate replacement process and improved ways of handling certificate replacement (doing SPKI pinning instead of certificate).
- Incident #3 (Multicert): Issuing cert with period > 825 days (Comment #3)
- Timeline:
- 2018-12-13: Multicert misissues a certificate - https://crt.sh/?id=1026264398 (Comment #3)
- 2018-12-18: Camerfirma detects misissued certificate and notifies Multicert of misissuance (Comment #3)
- 2018-12-18: Camerfirma corrects the underlying issue
- 2018-12-18: Camerfirma revokes the misissued certificate
In the last 2 paragraphs it was Multicert, not Camerfirma.
Besides, the date of revocation was not effectively 2018-12-18 but actually 2019-01-02. This was due to an internal misunderstanding, which was immediately fixed when double checking if all actions required were completed.
Cause:
- Multicert's implementation of validity period controls was based on the number of months (27 months), rather than the BR-specified number of days. Multicert then used an API which computed fractional months by rounding down/eliminating, allowing for periods greater than 825 days. (Comment #3, Comment #6)
Changes Made:
- Implemented - 2018-12-18 Underlying bug is fixed (Comment #3)
- Not Implemented - 2019-03 Pre-issuance linting will be implemented (Comment #2)
Incident #4 (Camerfirma): Sub-CA with repeated failures to abide by the BRs
- Incident report/details not provided
Comment 15•7 years ago
|
||
Besides, the date of revocation was not effectively 2018-12-18 but actually 2019-01-02. This was due to an internal misunderstanding, which was immediately fixed when double checking if all actions required were completed.
This amounts to another BR violation. Please describe how this problem occurred. What is being done to prevent this type of "misunderstanding" from happening again?
Ryan: Is incident #4 describing Camerfirma's lack of response to incidents #1-3, or some other issue?
Comment 16•7 years ago
|
||
Wayne: I was remarking that, to date, this issue has focused on the steps Multicert is doing to deal with their BR issues. However, we haven't seen any incident details or understanding about the steps that Camerfirma is taking to mitigate or prevent these issues, given that they have ultimate responsibility.
Comment 17•7 years ago
|
||
(In reply to Wayne Thayer [:wayne] from comment #15)
Besides, the date of revocation was not effectively 2018-12-18 but actually 2019-01-02. This was due to an internal misunderstanding, which was immediately fixed when double checking if all actions required were completed.
This amounts to another BR violation. Please describe how this problem occurred. What is being done to prevent this type of "misunderstanding" from happening again?
That certificate issued on 2018-12-13 was itself a replacement of a previous certificate issued to the customer on 2018-01-31. As it was misissued, it was then replaced again by a new certificate issued on 2018-12-18 17:07 https://crt.sh/?id=1039584683.
The replacement process gives a few days for the customer to install the new certificate and usually followed by our staff with a few roundtrips of communication with the customer. Therefore revocation of previous certificate is not immediate and is manually performed by a Registration Officer.
So, at 2018-12-18 17:07 there were effectively 3 active certificates for that domain (2018-01-31, 2018-12-13, 2018-12-18), all related to the same SPKI. The instructions to the Registration Officer for revoking the previous certificates (2018-01-31, 2018-12-13) were not clear and only the certificate from 2018-01-31 was revoked (the certificate from 2018-12-13 was left active).
Upon return of Christmas period, when double checking if all actions were done on this open incident we identified the certificate 2018-12-13 was not revoked yet. On 2019-01-02 that certificate was revoked.
To make the internal revocation instructions clear and unambiguous, the certificate’s serial number, AKI and CA DN (at least) have now to be communicated.
Ryan: Is incident #4 describing Camerfirma's lack of response to incidents #1-3, or some other issue?
Comment 18•7 years ago
|
||
Setting next update for Multicert to confirm that pre-issuance linting has been implemented for all issuance.
Still awaiting a response from Camerfirma on their oversight of Multicert as described in comment #16.
Comment 19•7 years ago
|
||
Wayne: I was remarking that, to date, this issue has focused on the steps Multicert is doing to deal with their BR issues. However, we haven't seen any incident details or understanding about the steps that Camerfirma is taking to mitigate or prevent these issues, given that they have ultimate responsibility.
Camerfirma is working together with externally operated intermediate CAs to establish and improve control mechanisms over the certificates issued by them.
Their collaboration in notifying, resolving and establishing measures for remediation and prevention of new issues is being good.
We will incorporate, before 2019-02-14, the intermediate CA's obligation that issue TSL/SSL certificates with their infrastructure under Camerfirma's root to a pre-issuance control obligating them to check their pre-certificates with our lint tool before the issuance of each certificate.
This requirement will be incorporated into our CPS in a version prior to 2019-02-14
We hope that these clarifications are sufficient to describe the future actions that Camerfirma carries out to prevent these issues.
However, we look forward to any clarification or details you may need.
Comment 20•7 years ago
|
||
(In reply to Juan Angel Martin from comment #19)
Wayne: I was remarking that, to date, this issue has focused on the steps Multicert is doing to deal with their BR issues. However, we haven't seen any incident details or understanding about the steps that Camerfirma is taking to mitigate or prevent these issues, given that they have ultimate responsibility.
Camerfirma is working together with externally operated intermediate CAs to establish and improve control mechanisms over the certificates issued by them.
Their collaboration in notifying, resolving and establishing measures for remediation and prevention of new issues is being good.
We will incorporate, before 2019-02-14, the intermediate CA's obligation that issue TSL/SSL certificates with their infrastructure under Camerfirma's root to a pre-issuance control obligating them to check their pre-certificates with our lint tool before the issuance of each certificate.
This requirement will be incorporated into our CPS in a version prior to 2019-02-14
We hope that these clarifications are sufficient to describe the future actions that Camerfirma carries out to prevent these issues.
However, we look forward to any clarification or details you may need.
Juan: Does this mean that all of Camerfirma's 3rd party subordinate CAs will be performing pre-issuance linting by 2019-02-14?
Updated•7 years ago
|
Comment 21•7 years ago
|
||
Juan: Does this mean that all of Camerfirma's 3rd party subordinate CAs will be performing pre-issuance linting by 2019-02-14?
I'm sorry because I don't think I've expressed myself right.
I mean that before 2019-02-14 Camerfirma will deploy our lint tool and that all Camerfirma's 3rd party subordinate CAs will be required to perform a pre-issuance linting.
In case there is a new Camerfirma's 3rd party subordinate CA they will have to make it before the issuance of the first certificate.
For current Camerfirma's 3rd party subordinate CAs, we are working on establishing the schedule in which they should have completed the pre-issuance linting with our tool.
We'll disclose this schedule as soon as we have it.
| Assignee | ||
Comment 22•7 years ago
|
||
Today we've finished the deployment of our lint tool.
We also have required our subCAs to use our lint tool prior to issue the certificates. As soon as we have the schedule for this integration we will post it here.
| Assignee | ||
Comment 23•6 years ago
|
||
MULTICERT 2019-03-22 -> Pre-issuance linting has been implemented.
Updated•6 years ago
|
Comment 24•6 years ago
|
||
It appears that remediation has been completed.
Updated•3 years ago
|
Updated•2 years ago
|
Description
•