Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 2: Add Multi-Perspective Domain and CAA Checking Requirements to the BRs #8

Closed
wants to merge 50 commits into from

Conversation

ryancdickson
Copy link
Owner

Summary: This is the latest version of a set of updates that intends to add "Multi-Perspective Domain Validation" and "Multi-Perspective CAA Checking" requirements to the CA/Browser Forum TLS Baseline Requirements.


This Pull Request:

  • compares the latest draft against a local version of the approved SC-63 (V4). Once through the CA/Browser Forum IPR process, SC-63 (V4) will become Version 2.0.1 of the TLS Baseline Requirements.
  • addresses issues and comments made against Version 1 (compare) of this effort. A separate branch was created to help make changes across versions of the document clear to readers.

How can you help?:

  • Good: Share feedback via email to chrome [dash] root [dash] program [at] google [dot] com.
  • Better: Add comments to this Pull Request.
  • Best: Add suggested edits directly to this Pull Request.

Version History:


Additional Notes:

  • Some changes in this PR represent clean-ups (e.g., smart quotes -> regular quotes) unrelated to the primary scope of this ballot (Multi-Perspective Issuance Corroboration).
  • "MPDV Work Team" Work Plan (contains useful background and additional context)
  • Previous Validation Subcommittee Update introducing this work

Additional Resources:

On MPDV:

On the problem space:

Copy link

@aarongable aarongable left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly some very minor formatting/editorial things, and then one very big formatting/editorial thing :D Sorry!

docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
ryancdickson and others added 9 commits August 15, 2023 11:09
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
Co-authored-by: Aaron Gable <aaron@aarongable.com>
More consistent use of "primary determinations."
Extend audit/logging requirements to IP addresses
Copy link

@aarongable aarongable left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just noticed one typo, and aside from that I don't think I have any comments left!

docs/BR.md Outdated Show resolved Hide resolved
Co-authored-by: Aaron Gable <aaron@aarongable.com>
- Undergo a Penetration Test on at least an annual basis.
- Apply recommended security patches within six (6) months of the security patch's availability, unless the CA documents that the security patch would introduce additional vulnerabilities or instabilities that outweigh the benefits of applying the security patch.

Beyond the above considerations, computing systems performing Multi-Perspective Issuance Corroboration are considered outside of the audit scope described in Section 8 of these Requirements.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has anyone asked WebTrust/ETSI reps for input on how they will interpret this paragraph? They may be able to suggest changes that clarify what should be audited or to make the requirements more auditable.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We had a meeting with Tim (BDO) 2 or 3 months ago to collect general recommendations for the text, but did not focus specifically on interpretations.

I'll take action to follow-up with a broader set of audit stakeholders.

docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated

Results or information obtained from one Network Perspective MUST NOT be reused or cached when performing validation through subsequent Network Perspectives (e.g., different Network Perspectives cannot rely on a shared DNS cache to prevent an adversary with control of traffic from one Network Perspective from poisoning the DNS cache used by other Network Perspectives).

[Section 3.2.2.4](#3224-validation-of-domain-authorization-or-control) and [Section 3.2.2.5](#3225-authentication-for-an-ip-address) describe the validation methods that require the use of Multi-Perspective Issuance Corroboration and how a Network Perspective can corroborate the Primary Domain Validation Determination and the Primary CAA Determination. A CA MAY use corroborating evidence for CAA record compliance for a period equal to the period of validity for Validation of Domain Authorization or Control specified in [Section 4.2.1](#421-performing-identification-and-authentication-functions).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RFC 8659 states:

The search for a CAA RRset climbs the DNS name tree from the specified label up to, but not including, the DNS root "." until a CAA RRset is found.

This means that for x.y.z.example.com the following zones are checked for CAA records, until a record is found.

  • x.y.z.example.com
  • y.z.example.com
  • z.example.com
  • example.com
  • com

If the domain example.com is added and used for domain control validation (including multi-perspective CAA checks), the attacker can still bypass the multi-perspective CAA check by faking the any of the more specific zones with a new CAA record, for example on x.y.z.example.com unless multi perspective CAA checking is done at the time of issuance.

The other challenge might be that at the time of domain control validation the context of the certificate might not be known, so this would require checking for issue and issuewild and potentially other CAA properties and to record the type of certificates that this domain would be authorized for.

The suggestion was to perform multi perspective CAA checking at the time of domain validation control to avoid the performance impact, but it's the question if this really helps as there are different FQDNs and types of certificates to consider that might be unknown at the time of performing domain control validation.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for bringing this up. As I understand this comment there are largely see two factors worth considering:

1: at time of domain control validation, the exact subdomain may not be known, so a CAA recheck would have to be performed at issuance time on the subdomain.

2: at time of domain control validation, the certificate type may not be known so the whether the issue or issuewild field is used cannot be determined.

My first thoughts on these two points is that cases where point 1 is applicable simply can't benefit as much from this CAA check at DV time clause. Potentially if CAA evidence was collected from multiple perspectives for "example.com" and a customer requested a certificate for sub.example.com, the CAA evidence for example.com could be reused preventing the need to query recursively up the DNS graph from multiple perspectives. However, in my opinion, as @vanbroup mentioned, a query for sub.example.com in CAA would have to be done at time of issuance.

Point 2 is interesting as well, and I could see it becoming more involved if CAA record types grow in complexity. My personal thoughts on this are that the certificate type concern is not too big of an issue. First, there may be some more advanced APIs, but my general understanding of DNS is that a question like "example.com IN CAA" will always return the entire CAA DNS record set (having knowledge of the entire record set is also required in case there are critical flag records). Thus, whenever a CA makes this query, it will retrieve CAA records with both the "issue" and "issuewild" tags. With this in mind, I think the resolution to point 2 is simply to cache the values of the CAA records fetched from multiple vantage points (as opposed to a can issue or can't issue binary flag) and then resolve the issuance status based on the cached values and certificate type at issuance time.

Overall I still feel it makes sense to have this performance optimization in there. I understand there are some cases where it can't be realized and CAA records would still have to be checked from multiple perspectives at issuance time, but I feel checking CAA records from multiple perspectives is very important for the security of the PKI and the future growth of CAA records. I think any way to reduce the latency/resource overhead without compromising security is beneficial.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that you could cache the CAA records (assuming DNSSec signatures etc. are validated), and you could potentially do additional checks based on likelihood (like including an MP CAA check for www.example.com).

But this would not come for free and require quite a bit of additional implementation work (code that could fail), and meta data for each domain.

I think it would be good to dive a bit deeper into the potential impact and realistic performance gain.

Maybe it could be described as that when MP CAA has been performed it can be re-used until the current domain name validation expires. This way you would only need do the MPV CAA checking at issuance time when it has not been performed since the last domain control validation check.

This would allow the CA to do MP CAA checking at domain control validation, but would also allow them to perform it at issuance time and re-use it in both cases.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vanbroup I do appreciate the points about additional code complexity and extra meta data (which can add up at large scale).

I wanted to take a step back from this problem and actually think about its impact on the threat space. I think one important thing to consider is that the two cases being discussed are related to domain validation reuse for subdomains and wildcard certificate types. My understanding of the BRs is that both of these cases require some form of validation of DNS information (not just control of a server running at that domain) which would be checked from multiple vantage points. Given the adversary can demonstrate this level of control over DNS, the adversary likely also has the ability to also spoof CAA records. I think there still is some attack surface left open by not rechecking sub-domain CAA or issuewild records from multiple vantage points (e.g., an adversary could have compromised domain validation by attacking an external channel like email without actually controlling the target domain's DNS records), but I also think this is not a huge threat surface.

@vanbroup can you put in a suggested change with the language you are proposing. I like the idea you had to permit reuse since the last validation and also permit rechecking at issuance time and caching as an option.

docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
Make it clear that perspectives used to corroborate the determination made by the primary MUST be distinct from the primary.
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated
@@ -763,12 +770,20 @@ If a Random Value is used, the CA SHALL provide a Random Value unique to the Cer
i. 30 days or
ii. if the Applicant submitted the Certificate request, the time frame permitted for reuse of validated information relevant to the Certificate (such as in [Section 4.2.1](#421-performing-identification-and-authentication-functions) of these Guidelines or Section 11.14.3 of the EV Guidelines).

CAs using this method MUST implement Multi-Perspective Issuance Corroboration as specified in Section 3.2.2.9. To count as corroborating, a Network Perspective MUST observe:
- the same challenge information (i.e. Random Value or Request Token) as the Primary Network Perspective; and
- evidence confirming the CA's authority to issue as determined by the Primary Network Perspective, as specified in Section 3.2.2.8.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(this comment is applicable to all modified DCV methods)

I find this reference to the CAA requirements as defined in 3.2.2.8 rather confusing. In many cases, the validation of a single Authorization Domain Name is used for the validation of potentially many domains. For example, a single successful validation of "example.com" via method 7 would be sufficient to demonstrate control of many subdomains under "example.com", some (or all) of which could be in different zones from "example.com" itself. However, 3.2.2.8 prescribes that the CA perform the CAA algorithm for all SANs to be included in the certificate regardless of how they were validated.

By tying the CAA MPIC requirement with the DCV requirement, it becomes unclear which domain names must be checked for MPIC when performing the CAA checks under 3.2.2.8. To ensure clarity on the requirements, I recommend modifying 3.2.2.8 to define the MPIC obligations specifically for CAA there.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3.2.2.9 (the new MPIC section) includes...

Each corroborating Network Perspective MUST independently verify:
a. the presence of the expected 1) Random Value, 2) Request Token, 3) IP Address, or 4) Contact Address, as required by the relied upon validation method specified in Sections 3.2.2.4 and 3.2.2.5; and
b. the CA's authority to issue to the requested domain(s), as specified in Section 3.2.2.8.

Given the bolded language above, it seems like we could remove the CAA references added in the 3.2.2.4.X subsections (e.g., "evidence confirming the CA's authority to issue as determined by the Primary Network Perspective, as specified in Section 3.2.2.8.")?

Would that address your concern?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there needs to be, at a minimum, a reference to section 3.2.2.9 in section 3.2.2.8. This reference would serve as an indicator to readers that they must also read 3.2.2.9 to correctly implement CAA checking.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this update to address the above concern. What do you think?

Beyond the above change, this commit removes the CAA references added in 3.2.2.4.x as they relate to MPIC - and also adds MPIC being in scope of 3.2.2.4.16 (Phone Contact with DNS TXT Record Phone Contact), which the work team identified was in-scope of this effort.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think its worth having a more general discussion of this as well as a more detailed review of the language in the draft. Our group at Princeton feels that including some form of multi-perspective checking for CAA records is quite important. CAA records establish a CA's permission to issue and issuing in violation of a CAA record is a serious security breach.

However, we are aware there are some nuances regarding the implementation of CAA record checking in comparison to DV. Particularly, because CAA record checks must be done for all subdomains and have a shorter validity than a domain control validation check, CAA record checks may have to be done at issuance time for a domain that has already been validated. While it is clearly a stronger security stance and arguably a simpler standard to use multiple perspectives for all CAA checks, we felt it might meaningfully reduce the implementation burden to only perform MP-CAA checks at validation time (this is the current deployment at Let's Encrypt and I would be curious to also hear how Google Trust Services handles this case). Domain Validation contains more high-latency steps which depend on external systems than issuance does. To me this seems to facilitate an easier implementation.

As several have commented in the GitHub, only checking CAA records at validation time potentially raises several issues.

The first issue is the validity duration of a CAA check which is shorter than that of issuance. If MPCAA checking is only done at validation time, then this check would have to have validity equal to that of domain control validation to avoid a recheck at issuance time. Personally I think only performing a primary perspective CAA recheck at issuance time does not significantly change the security of the system. Potentially it allow an adversary to use a BGP attack to expand the time window after a malicious validation during which the adversary can request a certificate. However, this phenomena exists even with the shorter CAA checking window and other factors like DNS caching can cause this type of behavior even if checks were done more frequently. Personally I think this alone does not do much to justify rechecks at issuance time.

The second complication is that some validation methods can be used to validate arbitrary subdomains (while a CAA check must be done on each subdomain requested). This is a concern Dimitris brought up in the CAB Forum public list: https://lists.cabforum.org/pipermail/validation/2023-June/001904.html . In order to avoid all issuance time MPCAA checks, an MPCAA check would have to cover all subdomains. This is contrary to the CAA RFC that gives the CAA record of subdomains priority over parent domains. The vulnerability presented here is that an adversary can potentially downgrade the CAA record of a subdomain to that of its parent domain using an equally-specific BGP attack. This is clearly not ideal, but I still think that this is vastly preferable to dropping MPCAA record checking entirely. Also, in this scenario the adversary would be authorized to get a certificate for the parent domain (because it had completed domain control validation for that domain and the parent domain had a CAA record that permitted issuance) so this is largely about developing protections for a subdomain of a domain that an adversary has already compromised.

The final complication regards certificate types (i.e., wildcard vs standard) given that the interpretation of CAA records (particularly record sets with the issuewild tag) depends on the type of certificate a CA is signing (whereas some forms of domain validation can be used for either one). Potentially a CA may have checked a CAA record at validation time and been permitted to issue a standard, non-widlcard, certificate for that domain. At a later time a subscriber may request a wildcard certificate for the same domain. In some implementations this may require rechecking the CAA record to confirm that the CA is compliant with any issuewild tags. Personally I think there is potentially technical answer to this complication which is to store information about whether a CA can issue standard or wildcard certificate based on an initial CAA query (even if a subscriber is only requesting a standard certificate). One factor that facilitates this is that the same DNS query which is used to request the initial CAA record will both issuewild and issue tags. Storing this extra info would only require one additional bit of information on the result of an MPCAA lookup and would eliminate the need to perform additional MPCAA lookups at issuance time due to this reason.

Given all of these points and @CBonnell 's point about detaching the CAA checking requirement from the DV requirement, an idea that comes to mind is to add additional exceptions for the CAA checking requirement in 3.2.2.9:
Line 1054 could be modified to read:
Section 3.2.2.4 and Section 3.2.2.5 describe the validation methods that require the use of Multi-Perspective Issuance Corroboration and how a Network Perspective can corroborate the outcomes determined by the Primary Network Perspective. A CA MAY use corroborating evidence for CAA record compliance for a period of 398 days. If an applicant has completed domain control validation for a domain and a CA has collected corroborating evidence that gives the CA permission to issue a certificate for that domain as defined in Section 3.2.2.8 and 3.2.2.9, the CA does not need to corroborate the CAA determination of any subdomains for certificate requests from the same applicant.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CBonnell - Any opinion on @birgelee's suggestion above?

"Section 3.2.2.4 and Section 3.2.2.5 describe the validation methods that require the use of Multi-Perspective Issuance Corroboration and how a Network Perspective can corroborate the outcomes determined by the Primary Network Perspective. A CA MAY use corroborating evidence for CAA record compliance for a period of 398 days. If an applicant has completed domain control validation for a domain and a CA has collected corroborating evidence that gives the CA permission to issue a certificate for that domain as defined in Section 3.2.2.8 and 3.2.2.9, the CA does not need to corroborate the CAA determination of any subdomains for certificate requests from the same applicant."

@@ -1008,6 +1063,62 @@ CAs are permitted to treat a record lookup failure as permission to issue if:

CAs MUST document potential issuances that were prevented by a CAA record in sufficient detail to provide feedback to the CAB Forum on the circumstances, and SHOULD dispatch reports of such issuance requests to the contact(s) stipulated in the CAA iodef record(s), if present. CAs are not expected to support URL schemes in the iodef record other than mailto: or https:.

#### 3.2.2.9 Multi-Perspective Issuance Corroboration

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unable to leave a comment on line 1058 (https://github.com/ryancdickson/staging/pull/8/files#diff-e0ac1bd190515a4f2ec09139d395ef6a8c7e9e5b612957c1f5a2dea80c6a6cfeR1058) since it wasn't modified, so I'll leave it here:

My understanding is that CAs will be able to issue if the lookup failures for both the Primary and Secondary Network Perspectives are consistent. For example, if the Primary Perspective receives a SERVFAIL in response to a CAA lookup for "example.com" and the Secondary Network Perspectives receive the same, then this can be treated as permission to issue (assuming, of course, there's no DNSSEC chain to the ICANN root and the CA infrastructure isn't experiencing issues). However, if the Primary Perspective observes a SERVFAIL and the Secondary Perspectives receive a NOERROR/NXDOMAIN, then this cannot be treated as permission to issue as the Primary and Secondary Perspectives have received differing responses.

Is this correct, or is the expectation different here?

Copy link

@birgelee birgelee Oct 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While this is one interpretation of the text, my original thought was that it would be OK for a CA to proceed with issuance under the second scenario described. Even though the error signals from the different perspectives are distinct, in the absence of a trusted DNSSEC chain, both of these can be treated as permission to issue. Thus, my original interpretation of this was "corroborates" is essentially a binary state and both the primary and secondary perspectives here interpret their DNS response as permission to issue implying issuance can proceed.

While requiring matching error messages or matching responses is clearly a stricter policy, I do not think it adds too much security, and I worry a bit about it introducing false positives. If an adversary has launched a BGP hijack which effects some of a CA's perspectives, it has the liberty of choosing what types of DNS responses it wants to generate and could likely generate responses that match the victims' (bypassing this sameness check). On the benign side, in our last study we noticed discrepancies in DNS configurations when probed from multiple perspectives. Many DNS providers rely heavily on IP anycast so the DNS queries from the different perspectives are often being answered by different servers (which can have different configurations or out-of-date zone files). Thus, while varying error messages may seemingly indicate an attack, I could also see it arising in benign circumstances, and I believe an adversary could avoid this check.

Additionally, we considered differentiating between different types of responses in the domain validation check, but ultimately backed away from it and went more towards reducing each vantage point's response to a binary state which is then processed in the quorum policy. I personally feel for consistency and simplicity it would also make sense to use that reasoning here.

I would be in favor of adding language to clarify that permission to issue is a binary state (i.e., can issue or can't issue) which is then processed by the quorum policy.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 1061 of the current draft text says:

Multi-Perspective Issuance Corroboration attempts to corroborate the determinations made by the Primary Network Perspective from multiple additional Network Perspectives

It is my understanding that this explanatory text is stating that the Primary Network Perspective provides the canonical response, and the requisite number of additional Network Perspectives MUST provide the same response to corroborate the response as retrieved by the Primary Network Perspective. My understanding of the rationale is that the Primary Network Perspective is audited under the NetSec audit regime, whereas secondary Network Perspectives need not be audited. Thus, there is a higher level of assurance from the responses provided by the Primary as opposed to secondary Network Perspectives.

Given this rationale, I interpreted the CAA allowance for issuance upon encountering lookup errors as "the requisite number of secondary Network Perspectives must observe the failure observed by the Primary Network Perspective in order to be treated as permission to issue". I think clarifying language is needed if the intended requirement is actually looser.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@CBonnell - would better establishing context for "determinations" (and doing so at a sufficient level of detail that's focused on the outcome of the checks) address this concern?

From: Multi-Perspective Issuance Corroboration attempts to corroborate the determinations made by the Primary Network Perspective from multiple additional Network Perspectives before Certificate issuance.

To: Multi-Perspective Issuance Corroboration attempts to corroborate the determinations (i.e., domain validation pass/fail, CAA permission/prohibition) made by the Primary Network Perspective from multiple additional Network Perspectives before Certificate issuance.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: Added above suggestion in 0144a4c, still waiting for feedback from @CBonnell.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for missing this; it apparently got lost in a flurry of Github notifications. I don't think the proposed language change would address the difference in interpretation for the "CAA lookup failure" case as discussed above in this comment thread. I interpret the proposed language the same as the previous language: a CAA lookup failure by the Primary Network Perspective while the Secondary Perspectives observe a lookup success cannot be treated as permission to issue, as the Secondary Perspective results do not corroborate the Primary Perspective's lookup failure.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe a solution could be to add @ryancdickson 's language but also put an explicit statement to cover this case in the section on MPIC CAA checking:

When corroborating a CAA check from multiple Network Perspectives, for the result of the CAA check at an additional Network Perspective to count as corroborating the Primary Network Perspective, the CAA check from the additional Network Perspective MUST be interpreted as permission to issue as outlined in Section 3.2.2.8. However, a CA MAY count the response of an additional Network Perspective as corroborating the Primary Network Perspective even if CAA records seen by the additional Network Perspective do not match the records seen by the Primary Network Perspective or one or both of the additional Network Perspective or Primary Network Perspective experience an acceptable CAA record lookup failure as defined in Section 3.2.2.8.

Personally I feel adding language along these lines to explicitly allow this case would sufficiently clarify things in the document. Thinking more on this topic I do feel that some of the confusion comes from the use of the word "corroborate" which implies some level of similarity in responses (which makes sense in the DV context where a similar random token on piece of contact information must be observed). However, for CAA checking I think it makes the most sense to not rely on similarity (particularly with some lookup failures being permission to issue in the CAA context) but instead ensure a sufficient number of network perspectives interpret their lookups as permission to issue. Maybe another approach would be to avoid using the word "corroborate" in the CAA context, but I worry a bit reworking the whole draft with that angle would simply introduce more wording issue.

docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated Show resolved Hide resolved
docs/BR.md Outdated
@@ -935,6 +962,8 @@ The CA MAY resend the email, fax, SMS, or postal mail in its entirety, including

The Random Value SHALL remain valid for use in a confirming response for no more than 30 days from its creation. The CPS MAY specify a shorter validity period for Random Values, in which case the CA MUST follow its CPS.

CAs using this method MUST implement Multi-Perspective Issuance Corroboration as specified in [Section 3.2.2.9](#3229-multi-perspective-issuance-corroboration). To count as corroborating, a Network Perspective MUST observe the same IP Address Contact as the Primary Network Perspective.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this triggers MPI on wrong challenge methods for IP addresses?
not sure how one can check RIR documents multiperspectively
think this like is for 3.2.2.5.3 because that's reverse DNS lookup, where multiple perspective make sense.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for bringing this up. I agree that putting multi perspective checking in 3.2.2.5.3 makes sens, and it does not make sense here.

To clarify, a potential fix for this would be to remove this paragraph (line 965) that you commented and put something along these lines at the end of 3.2.2.5.3:

CAs using this method MUST implement Multi-Perspective Issuance Corroboration as specified in [Section 3.2.2.9](#3229-multi-perspective-issuance-corroboration). To count as corroborating, a Network Perspective MUST observe the same token as the FQDN as the Primary Network Perspective.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3.2.2.5 is looking for domain by rDNS and do verification for that domain be used for that IP address, so matching thing MP need to see be domain name there

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I had made a typo in that line recommendation for 3.2.2.5. I meant to delete token and have it read:

CAs using this method MUST implement Multi-Perspective Issuance Corroboration as specified in [Section 3.2.2.9](#3229-multi-perspective-issuance-corroboration). To count as corroborating, a Network Perspective MUST observe the same FQDN as the Primary Network Perspective.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 8f35b32

docs/BR.md Outdated

Multi-Perspective Issuance Corroboration attempts to corroborate the determinations (i.e., domain validation pass/fail, CAA permission/prohibition) made by the Primary Network Perspective from multiple additional Network Perspectives before Certificate issuance. This process can improve protection against equally-specific prefix Border Gateway Protocol (BGP) attacks or hijacks.

The response returned from each corroborating Network Perspective MUST allow the CA to verify:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it right to consider that CA can't tell remote perspective the token it expected for a validation? from wording of I think it isn't allowed: because hacked remote perspective just repeat token it asked and reply "Yes I saw that token %s you requested there" so reply need to be "I saw "%s" from location %s you request" and actual validity check need to be done on the other side (CA). Am I right? and I'm not sure how to guard CAA from it: do I need to return entire DNSKEY there so it didn't craft there response up?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not think this language should be interpreted that strictly. While this type of behavior (where the remote perspective must prove knowledge of the validation token's value without communication from the primary perspective) potentially offers some security against compromised or misbehaving remote perspectives, I do not think it adds much substantial security, and I feel it adds some unneeded complexity.

On the security side, I largely see attacks where the remote perspectives misbehave (i.e., due to compromise or misconfiguration) outside of the threat model used in this ballot draft. There are currently no other ways for the primary perspective to verify the behavior of the remote perspectives (although the logic running at the primary perspective must enforce that responses from remote perspectives cannot turn a do-not-issue decision into an issue decision).

Furthermore, I do not think not communicating the token to remote perspectives provides a significant security improvement. The adversary in the threat model of this ballot is already aware of the required token that needs to be seen by the remote perspectives. Specifically, if an adversary compromised a remote perspective R and the primary perspective asked "what token did you see for this domain?," it would be trivial for the adversary to craft a response from R claiming it saw the proper token given that this is the very token the adversary was supposed to upload to the victim's webpage. Given the value of the token is already known by the adversary, I don't think there is much security improvement between asking remote perspectives "what token did you see for this domain?" vs "did you see token %s for this domain?" While I do think checking the validity of the token by the primary provides a sanity check that remote perspectives are doing their job, I do not think this check is robust in the case of a compromised remote perspective. @orangepizza you also have a good point about there not being an elegant parallel in the CAA space.

Maybe removing "allow the CA" and "The response returned" could make this language more general:

Suggested change
The response returned from each corroborating Network Perspective MUST allow the CA to verify:
Each corroborating Network Perspective MUST verify:

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I recall correctly, the intent of the existing language was in response to an earlier comment.

The basis for that comment was such that the perspectives should not be obligated to determine whether or not they corroborate the primary (as this would obligate the CA to share the expected token with the perspectives), but instead, perspectives should only be responsible for collecting information and sharing it with the CA. Ultimately, it should be the CA's responsibility to determine whether a perspective corroborates the primary validation.

I think the text should accommodate either implementation approach:

  1. The CA asks whether the perspective saw $challenge and the perspective responds accordingly ("Did you see '1235ABC1235'"? ---> "Yes.")
  2. The CA asks the perspective to return the results of the lookup ("What did you see?" ---> "I saw '12345ABC12345'")

@orangepizza / @birgelee - I'll see if I can improve this language further given the above discussion and the original comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Throwing something to wall if it sticks: (not a native speaker)
Either by perspective itself or CA, each corroborating Network Perspective's observation MUST verify:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @ryancdickson 's point that the text should accommodate either implementation. Just curious, if we changed it to simply:
Each corroborating Network Perspective's observation MUST verify:
would that clearly permit both interpretations?

Also just to reiterate, in the threat model for MPIC, the adversary is the one requesting a certificate for a domain it does not control and the challenge token is known to the adversary because it is the very token the CA sent to the adversary which was supposed to be uploaded to the domain. Thus, I do not think there is a major security advantage in not sharing tokens with remote perspectives and both of the implementations Ryan Dickson mentioned are good.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@orangepizza / @birgelee --- thanks for the suggestions.

What about:

"Each corroborating Network Perspective's response MUST provide the CA with the necessary information to allow it to affirmatively assess:

  • a. the presence of the expected 1) Random Value, 2) Request Token, 3) IP Address, or 4) Contact Address, as required by the relied upon validation method specified in Sections 3.2.2.4 and 3.2.2.5; and
  • b. the CA's authority to issue to the requested domain(s), as specified in Section 3.2.2.8."

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mocked up in 278f3b8.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me this language looks good.

docs/BR.md Show resolved Hide resolved
@orangepizza
Copy link

appendix B (about tor onion names, which can't link as it doens't changed here) assignes few 3.2.2.4 methods over tor network (18/19/20) which this will add MPIC requirement: as it funneled to tor network I'm not sure MVIC is appropriate for onion domains:

| 2-5 | 1 |
| 6+ | 2 |

Remote Network Perspectives performing Multi-Perspective Issuance Corroboration:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't find rule about where a remote perspective considered to be? Natural answer would be where is the metel it hosted is as this removed no delegation requirement we can't guarantee everything RP does happen at same place. For example HTTP validation RP in JP re‐delegate DNS lookup to public DNS hosted in US and still be legal; but can we say that RP is actually at anywhere?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The definition of a network perspective's location is with the definition of a "Network Perspective" in the definitions section (line 383). I am curios if you would recommend putting this somewhere else in the document.

**Network Perspective**: Related to Multi-Perspective Issuance Corroboration. A system for sending outbound Internet traffic associated with a domain control validation method and CAA check. The location of a Network Perspective is determined by the point where unencapsulated outbound Internet traffic is first handed off to the network infrastructure providing Internet connectivity to that perspective.

The text on location currently reads:

The location of a Network Perspective is determined by the point where unencapsulated outbound Internet traffic is first handed off to the network infrastructure providing Internet connectivity to that perspective.

In many cases this equates to the definition you mentioned of having the location be where the metal hosting the perspective is. Notably in cases of VPN tunneling, the perspective's location becomes the location where VPN traffic is unencapsulated.

@orangepizza You do have a good point about not everything happening in one place, and I had thought a bit about that DNS angle when coming up with text for this line. Ultimately, I felt the most important attribute of this definition was for it to be well-defined and auditable, and given the fact the DNS is often outsourced, I felt it would be cleaner to define it as where the perspective itself hands off Internet traffic.

I think two points to note when considering this is that:

  1. the only current diversity requirement in the document references the service regions of different RIRs (essentially continents), so some variance in location between a perspective and its DNS provider will not undermine that diversity
  2. I personally find it unlikely for performance reasons that a perspective would outsource DNS to another continent. All of the major public DNS resolvers are globally anycast, and other 3rd-party DNS resolvers (e.g., from local ISPs) will also likely be relatively close to the perspective in question. It is usually faster to run DNS resolvers near where queries are originated, and I feel this will help prevent the problem you are discussing. DNS resolvers in other continents can also cause issues with goegraphic load balancing, so distant DNS resolvers are generally not recommended for that reason as well.

It is worth mentioning that at Princeton we have recently made significant advances in tooling to measure the effectiveness of deployed MPIC implementations against real-world ethical BGP attacks. These measurements include measurements of DNS behavior (i.e., we can determine whether a perspective's DNS was fooled by a BGP hijack). I feel that this type of work could shed light on whether outsourced DNS is a real problem for MPIC (in which case maybe a more-specific definition is needed) or if the system generally behaves as expected. In the meantime, I personally like the simpler definition as I do not want compliance and auditability to be obstacles for the MPIC initiative.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, there is another rule(L1060) about network locations: Network Perspectives are considered distinct when the straight-line distance between the two States, Provinces, or Countries they reside in is at least 500 km. and I don't think public resolver should be able to used in MRP context, as for CAA or some challenges like 3.2.2.4.7 or call to contact on DNS challenges DNS lookup is only thing that remote perspective will done, and "public resolver" isn't something really definable: only definition it can have without making actual whitelist will be "any open resolver is public DNS", and allowing that won't end well.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, I simply mentioned public DNS resolvers as examples of DNS resolvers. I do not think it makes sense to add any specific text regarding public DNS resolvers.

I see your point that for CAA and some challenges remote perspectives are only sending DNS queries. What about adding text to ensure DNS resolver locations have the same diversity required of network perspectives? Potentially around line 1057

I think a statement along these lines could enforce DNS resolver diversity.

A network perspective MAY use a recursive DNS resolver that is not co-located with that network perspective. However, the DNS resolver used by a network perspective MUST fall within the same Regional Internet Registry service region as that network perspective. Furthermore, for any pair of DNS resolvers used on a Multi-Perspective Issuance Corroboration attempt, the straight-line distance between the two States, Provinces, or Countries the DNS resolvers reside in MUST be at least 500 km. The location of a DNS resolver is determined by the point where unencapsulated outbound DNS queries are first handed off to the network infrastructure providing Internet connectivity to that DNS resolver.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor tweaks, addressed in 6cca62b.

@birgelee
Copy link

Also, in response to #8 (comment) , I concur that MPIC is not appropriate for onion domains. Appendix B clearly defines that it is only valid for Version 3 Onion Address and an onion address directly contains the encoded public key of the service you are connecting to (see https://spec.torproject.org/rend-spec/encoding-onion-addresses.html ). This makes you not vulnerable to a BGP hijack over the Tor network and the text prohibiting outsourcing in Appendix B should prevent something like a BGP hijack between the CA and the Tor client.

I also see @orangepizza 's point that the current language in Appendix B would require MPIC for onion addresses which does not make sense. Maybe in line 3706 (

) the following text could be inserted and the below note updated:

`Even though some methods defined in Section 3.2.2.4 require Multi-Perspective Issuance Corroboration, a CA SHOULD NOT use use Multi-Perspective Issuance Corroboration for the validation of Onion Domain Names.

Note: Other than removing the requirement for Multi-Perspective Issuance Corroboration, this section does not override or supersede any provisions specified within the respective methods. The CA MUST only use a method if it is still permitted within that section and MUST NOT issue Wildcard Certificates or use it as an Authorization Domain Name, except as specified by that method.`

Do not require Onion Domain Names to be validated using MPIC.
Address comments made in cabforum#466
pgporada added a commit to letsencrypt/boulder that referenced this pull request Jan 25, 2024
Previously, `va.IsCAAValid` would only check CAA records from the
primary VA during initial domain control validation, completely ignoring
any configured RVAs. The upcoming
[MPIC](ryancdickson/staging#8) ballot will
require that it be done from multiple perspectives. With the currently
deployed [Multi-Perspective
Validation](https://letsencrypt.org/2020/02/19/multi-perspective-validation.html)
in staging and production, this change brings us in line with the
[proposed phase
3](https://github.com/ryancdickson/staging/pull/8/files#r1368708684).
This change reuses the existing
[MaxRemoteValidationFailures](https://github.com/letsencrypt/boulder/blob/21fc1912732274d3fc92f3660a8f45d25b2a702c/cmd/boulder-va/main.go#L35)
variable for the required non-corroboration quorum.
> Phase 3: June 15, 2025 - December 14, 2025 ("CAs MUST implement MPIC
in blocking mode*"):
>
>    MUST implement MPIC? Yes
> Required quorum?: Minimally, 2 remote perspectives must be used. If
using less than 6 remote perspectives, 1 non-corroboration is allowed.
If using 6 or more remote perspectives, 2 non-corroborations are
allowed.
>    MUST block issuance if quorum is not met: Yes.
> Geographic diversity requirements?: Perspectives must be 500km from 1)
the primary perspective and 2) all other perspectives used in the
quorum.
>
> * Note: "Blocking Mode" is a nickname. As opposed to "monitoring mode"
(described in the last milestone), CAs MUST NOT issue a certificate if
quorum requirements are not met from this point forward.

Adds new VA feature flags: 
* `EnforceMultiCAA` instructs a primary VA to command each of its
configured RVAs to perform a CAA recheck.
* `MultiCAAFullResults` causes the primary VA to block waiting for all
RVA CAA recheck results to arrive.


Renamed `va.logRemoteValidationDifferentials` to
`va.logRemoteDifferentials` because it can handle initial domain control
validations and CAA rechecking with minimal editing.

Part of #7061
@romanf
Copy link

romanf commented Feb 5, 2024

Dear all,
I am wondering, are there any statistics/numbers by those CAs that are already using MPIC about how many real world attacks (not just failures or misconfigurations) their setup thwarted? I think some hard numbers will make it easier for the CAs that will have to implement this to also get proper funding and priorization for this topic...

Thanks
Roman

@birgelee
Copy link

birgelee commented Feb 7, 2024

@romanf
Obviously ISRG or GTS feel free to chime in as well. I will say having done research in this area, analyzing positives from Let’s Encrypt logs, and working with the people tracking these real world attacks, getting an accurate estimate of this specific number (i.e. attacks thwarted by MPIC) can be very challenging. Many attacks go unnoticed (i.e., the victim does not go public, or doesn't detect it, or doesn't get to the root cause) and many go misattributed (e.g., the official report lists the attack as something like DNS hijacking). The attacks we have are largely based on threat intel and following the behavioral tendencies of this individual actor. Given the current difficulty of finding confirmed attacks, putting a number on thwarted attacks that never actually succeeded is really difficult. Key data sources like CT logs or victim reports will never appear for these attempted attacks. Even in the absence of this particular statistic, we still have all of the data from the line of work presented at the Face-to-Face. There have been over 70 hijacks spread across 30 distinct campaigns leading to 12 mississued certs (resulting in over 10 million USD in losses) to motivate MPIC. These numbers are updated from what was discussed at the Face-to-Face and are ever increasing with new ongoing attacks.

However, I will say we have seen some evidence of the adversary evolving its target and CA selection potentially in an attempt to avoid MPIC. This includes picking CAs that do not do MPIC and avoiding properly RPKI-protected prefixes. This also brings me to (what I think is the most important) the point that thwarted attacks is really not the correct metric when considering an attack like this. In some cases like DDoS attacks, the attack is relatively cheap to run and can be difficult to model accurately, thus causing adversaries to "try" the attack to observe the victim's behavior (even if there is a chance of failure). BGP attacks are very different in nature. Each BGP attack poses a risk to the adversary's infrastructure like burning their upstream (i.e., the upstream that propagated the attack discontinuing the adversary's BGP session) as well as other risks (e.g., RADb maintainer accounts getting banned, VPS harddisks getting seized). Thus, for BGP adversaries we often see them launch "test" announcements with prefixes that will not raise alarm to confirm their eventual attack will be successful. There is a good chance that an adversary knowing a CA is doing MPIC and a victim's prefix is protected against global hijacks will never actually attempt this attack. Thus I feel the true value in MPIC is not in the attacks it thwarts but in the attacks it deters. Furthermore, even if an adversary did launch the attack unsuccessfully, it would be nearly indistinguishable from a fat-finger mistake.

@romanf
Copy link

romanf commented Feb 8, 2024

Dear Henry,
Thanks for the extensive answer. I understand your argument and agree that it might be difficult or impossible to measure the deterrent effect of the measure. I was just wondering if the CAs have some numbers that state how often the Perspectives "don't agree" and thus certificate issuance is aborted.

-Roman

@aarongable
Copy link

Let's Encrypt observes that about 0.25% of failed validations fail specifically due to our remote validation, i.e., our primary perspective completed validation successfully, but two or more of our remote perspectives did not. This number is low enough that it does not represent a burden on us, but high enough that it likely consists mostly of false-negatives (e.g. HTTP-01 validation failing due to different frontends serving a website having different update latency or caching behavior) as opposed to true attacks.

@romanf
Copy link

romanf commented Feb 9, 2024

Thanks Aaron for sharing this!

@ryancdickson
Copy link
Owner Author

Closing in favor of cabforum#487.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.