Re: DarkMatter Concerns

2019-03-18 Thread Scott Rea via dev-security-policy
G’day Folks,

It was a pleasure meeting many of the Mozilla community face to face at the CAB 
Forum meeting at Apple HQ last week. There are many others of you however, 
whose interface to the community is right here on this list, and so I wanted to 
share my perspective and feedback here on the recent dialogue so that the 
openness and transparency of the community is preserved.

Over the past few weeks, there’s been much debate and shared points of view 
around DarkMatter’s multi-year process to have our CA Roots included in 
Mozilla’s Root Store. Who could have predicted that along the way, the 
community would have such wide-spread impact from the serialNumber entropy 
issue? I do think the BRs are a little ambiguously worded in this regards, and 
this is what certainly tripped us up, but upon learning what was intended by 
the standard, DarkMatter has completed its revocation of every still valid 
affected TLS certificate (~175), and we actioned that immediately, completing 
the process over about 72 hrs (timing over the week-end in the UAE was not 
optimal for us otherwise we could have completed it sooner). We still need to 
re-issue the Issuing CAs and submitted Roots – these are dependent on the 
availability of our WebTrust Auditors, but we expect this to be finalized in 
the next week or so.

Many others in the community are also evaluating replacement of affected 
certificates e.g. see [1] [2] [3], etc. But the volumes these organizations are 
dealing with will make it difficult to meet BR revocation timelines, which is 
why I think Mozilla’s recent acknowledgement of this challenge with a proposal 
for an updated best practice for revocation is the right discussion to have. 

I think this is where the community is at its best: working together to 
identify and manage issues, learning from each other in how best to take action 
and resolving it as quickly as possible while maintaining the security and 
integrity of services for end users. After all, we ultimately share the same 
goal: transparent community-based processes that promote participation, 
accountability and trust [4].  

Resolving this issue together is a good example of this principle in action.

As I reflect on the many discussions in this community, and also with the 
40-odd companies at last week’s CA/B Forum, it is clear that there is quite an 
interest in the DarkMatter story. Unfortunately, the one that has often been 
promoted as evidence in this community – is one that is not based on truth, and 
one that has consistently been refuted by DarkMatter.  I would like to set the 
record straight once and for all, and share with all of you why DarkMatter’s 
story is not what some have claimed, but is, I believe, actually completely 
aligned with Mozilla’s own manifesto. 

DarkMatter Group was founded by Faisal Al Bannai, one of the most accomplished 
business leaders in the Middle East [5], as a commercial business entity that 
specializes in Cyber Security services, and solutions.  Al Bannai served as CEO 
and founder until recently (2018), when he handed over the leadership role of 
the company to Karim Sabbagh, formerly the CEO of the world leading satellite 
fleet operator SES [6].  Al Bannai is the sole beneficial shareholder of the 
DarkMatter Group.  The CA business that I head within the DarkMatter Group, and 
which I will provide further details below, is a completely independent 
business unit housed in a legally separate subsidiary company.

The general business of the DarkMatter Group is all centered around 
cybersecurity. DarkMatter is very active in our local constituency [7], [8], 
[9], we have even developed and launched our own mobile phone [10]. The 
Cybersecurity divisions of DarkMatter are fully engaged in and participate in 
identifying and disclosing malicious applications that attack the security and 
privacy of individuals everywhere.  Some recent examples of this are where 
DarkMatter researchers identified and informed Google of a malicious 
application available on the Google play store [11], and DarkMatter researchers 
also made a responsible disclosure to Apple of a significant attack that 
“bypasses all native macOS security measures”, (which findings were also 
presented at Hack-In-the-Box conference in Singapore [12]. This just highlights 
a couple.

For those who have questioned who is really in the driving seat of the 
DarkMatter CAs, I want to assure you that DarkMatter’s PKI business has always 
been operated independently. We are a legally separate entity – housed under a 
subsidiary of the DarkMatter Group. Only myself and my handpicked team ever 
have hands on key material, and no single individual can effect an issuance 
without the validation of a counterpart and always under multiparty and 
multifactor authentication.  We have stringent controls around who is eligible 
to hold a trusted role, and they must continue to meet operational KPIs, 
training and risk evaluation metrics to remai

Re: CFCA certificate with invalid domain

2019-03-18 Thread Jakob Bohm via dev-security-policy

On 18/03/2019 02:05, Nick Lamb wrote:

On Fri, 15 Mar 2019 19:41:58 -0400
Jonathan Rudenberg via dev-security-policy
 wrote:


I've noted this on a similar bug and asked for details:
https://bugzilla.mozilla.org/show_bug.cgi?id=1524733


I can't say that this pattern gives me any confidence that the CA
(CFCA) does CAA checks which are required by the BRs.

I mean, how do you do a CAA check for a name that can't even exist? If
you had the technology to run this check, and one possible outcome is
"name can't even exist" why would you choose to respond to that by
issuing anyway, rather than immediately halting issuance because
something clearly went badly wrong? So I end up thinking probably CFCA
does not actually check names with CAA before issuing, at least it does
not check the names actually issued.



Technically, the name can exist, if (for some bad reason) ICANN were to
create the con. TLD (which would be a major invitation to phishing).

As "not found" is a permissive CAA check result, CAA checking may be
perfectly fine in this case.

Domain control validation however obviously failed, as no one controls
the non-existent domain, and thus no one could have proven control of
that domain.


Enjoy

Jakob
--
Jakob Bohm, CIO, Partner, WiseMo A/S.  https://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Hector Martin 'marcan' via dev-security-policy
On 19/03/2019 02.17, Rob Stradling via dev-security-policy wrote:
> On 18/03/2019 17:05, Kurt Roeckx wrote:
>> On Mon, Mar 18, 2019 at 03:30:37PM +, Rob Stradling via 
>> dev-security-policy wrote:
>>>
>>> When a value in column E is 100%, this is pretty solid evidence of
>>> noncompliance with BR 7.1.
>>> When the values in column E and G are both approximately 50%, this
>>> suggests (but does not prove) that the CA is handling the output from
>>> their CSPRNG correctly.
>>
>> Sould F/G say >= 64, instead of > 64?
> 
> Yes.  Fixed.  Thanks!

Perhaps it would make sense to separate out <64, ==64, >64?

100% "64-bit" serial numbers would indicate an algorithm using 63 bits
of entropy and the top bit coerced to 1.


-- 
Hector Martin "marcan" (mar...@marcan.st)
Public Key: https://mrcn.st/pub
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Updated Revocation Best Practices

2019-03-18 Thread Ryan Sleevi via dev-security-policy
On Sat, Mar 16, 2019 at 12:49 PM Wayne Thayer  wrote:

> Ryan - Thank you for the feedback.
>
> On Fri, Mar 15, 2019 at 6:14 PM Ryan Sleevi  wrote:
>
>> While I realize the thinking is with regards to the recent serial number
>> issue, a few questions emerge:
>>
>> 1) Based on the software vendor reporting, they don’t view this as a
>> software defect, but a CA misconfiguration. Do you believe the current
>> policy, as worded, addresses that ambiguity?
>>
>>
> As the language is an example, I don't believe it needs to address this
> distinction. I intended "defect" to mean a defect in the certificate, so
> perhaps it would help to specify that - i.e. "certificate defect"?
>

I guess the challenge is it introduces the ontology that some folks have
advocated, but no one actually knows where the lines should be drawn, as
every example has had flaws. That is, a "certificate defect" could be
everything from granting basicConstraints:CA=true (e.g. as we saw with
Turktrust [1]) due to a misconfigured certificate profile (which, like
this, was an "off by one" error) to something like misencoded sequences [2].

My biggest worry with the proposal is that it seems to actually favor not
revoking/responding to systemic issues (those which can affect a
significant portion of the CA's issued certificates), whereas I think the
intent is that non-revocation should be exceptional and that the CA should
be moving to systemically address things.

I think the end-goal, for both cases, remains the same: that the CA take
holistic steps to make revocation easier and painless, whether they're
dealing with systemic issues (such as serial numbers or validation methods)
or exceptional situations (such as a rogue RA or validation agent). Looking
at Heartbleed as the example, we know that a massive number of Subscribers
and certificates were affected - it seems like this example would have
encouraged non-revocation, by choosing the size of impact as the
illustrative example.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=825022
[2]
https://wiki.mozilla.org/SecurityEngineering/mozpkix-testing#Things_for_CAs_to_Fix


> 4) This new policy seems to explicitly allow a CA never revoking a
>> non-compliant Certificate. Is that your intent? If so, is there any concern
>> that this introduces the risk of CAs presenting revocation as being
>> “required by Mozilla” as opposed to the factually correct and accurate
>> “required by the Baseline Requirements” if Mozilla or this community should
>> disagree with such a decision?
>>
>>
> Is there any difference between delaying revocation until a certificate
> expires and not revoking at all? Is there any difference between CAs
> misrepresenting revocation as "being required by  Mozilla to happen by X
> date" and "being required by Mozilla"?
>

Fair points. I think the previous policy encouraged a more concrete plan of
action ("when"), and did not leave the CA decision making capability ("if")
which could create a conflict between the CA's decisions and the community
expectations. That said, you make a good point - if their "when" is "when
the certificate expires", then it's implicitly an "if" as well, and that
remains unless/until "when" is more prescreptive.


> 5) If multiple CAs are affected by a common incident, this seems to
>> encourage delaying revocation as long as possible. It’s unclear whether a
>> CA that can and does revoke their certificates will be more or less
>> favorably considered, both by the ecosystem and by this community. Given
>> the economic incentives, it seems to strongly discourage revocation, as a
>> way of competitive differentiation.
>>
>>
> I'm not following how these changes have the effect of encouraging
> multiple CAs to delay revocation as long as possible. but I do think it
> would be useful to state that CAs who violate the BRs will always be looked
> upon less favorably than those who do not.
>

If a given CA is faced with a systemic issue - such as serial numbers -
then they have a decision whether to replace a majority of certificates or
not. Independent of any analysis, there will naturally be a preference to
not revoke "if we don't have to". Because the encouragement to post on the
Forum, and because these discussions show that people's opinions about the
seriousness/reasonableness of the matter is, in some way, impacted by how
many other CAs are impacted, there's a natural incentive to delay
revocation as much as possible (and to draw out discussions as much as
possible), in the hopes that a decision to not revoke will end up being
more favorable. If the determination is that revocation is not necessary,
the CAs that reported and revoked effectively went through more "pain" that
was needed.

I think this ties back up to the first remarks, about understanding what
CAs are systemically doing to prevent further issues. I would think that
the end goal is that, regardless of severity, CAs should be moving to
systems where it's easier to mass-revoke. If large CA

Re: Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Rob Stradling via dev-security-policy
On 18/03/2019 17:05, Kurt Roeckx wrote:
> On Mon, Mar 18, 2019 at 03:30:37PM +, Rob Stradling via 
> dev-security-policy wrote:
>>
>> When a value in column E is 100%, this is pretty solid evidence of
>> noncompliance with BR 7.1.
>> When the values in column E and G are both approximately 50%, this
>> suggests (but does not prove) that the CA is handling the output from
>> their CSPRNG correctly.
> 
> Sould F/G say >= 64, instead of > 64?

Yes.  Fixed.  Thanks!

-- 
Rob Stradling
Senior Research & Development Scientist
Sectigo Limited

___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Kurt Roeckx via dev-security-policy
On Mon, Mar 18, 2019 at 03:30:37PM +, Rob Stradling via dev-security-policy 
wrote:
> 
> When a value in column E is 100%, this is pretty solid evidence of 
> noncompliance with BR 7.1.
> When the values in column E and G are both approximately 50%, this 
> suggests (but does not prove) that the CA is handling the output from 
> their CSPRNG correctly.

Sould F/G say >= 64, instead of > 64?


Kurt

___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Rob Stradling via dev-security-policy
On 18/03/2019 15:43, Rob Stradling via dev-security-policy wrote:
> On 18/03/2019 15:30, Rob Stradling via dev-security-policy wrote:
> 
>> On 14/03/2019 10:59, Rob Stradling via dev-security-policy wrote:
>>> On 13/03/2019 22:28, Richard Moore via dev-security-policy wrote:
>> 
 If any other CA wants to check theirs before someone else does, then now 
 is surely the time to speak up.
>>>
>>> Someone else is in the process of checking...  ;-)
>>
>> The purpose of this survey is to flush out any further CAs that are (or
>> have been) noncompliant with BR 7.1 but have not yet disclosed an
>> incident.

The report now also includes issuing CAs whose certificates have not 
been disclosed to the CCADB, which of course is permitted for 
technically-constrained intermediates.  (Many thanks to the person who 
pointed out this oversight to me).

> Columns A and B are currently empty.  They are intended to hold a
> Bugzilla URL and the date on which the bug was filed.
> 
> Jonathan Rudenberg has offered to review the disclosures that have been
> posted by CAs so far (thanks Jonathan!), so I've given him edit rights
> to the spreadsheet.

Jonathan has finished filling in Columns A & B for all of the 
disclosures he's seen so far.

>> Having scanned the crt.sh database, I have produced the following
>> spreadsheet.  It covers all certificates known to crt.sh where the
>> notBefore date is between 30th September 2016(*) and 22nd February
>> 2019(**), and where the issuing CA...
>>  - is currently trusted by Mozilla to issue serverAuthentication
>> certificates, and
>>  - has issued at least 1 certificate with a <64-bit serial number.
>>
>> https://docs.google.com/spreadsheets/d/1K96XkOFYaCIYOdUKokwTZfPWALWmDed7znjCFn6lKoc/edit?usp=sharing
>>
>> When a value in column E is 100%, this is pretty solid evidence of
>> noncompliance with BR 7.1.
>> When the values in column E and G are both approximately 50%, this
>> suggests (but does not prove) that the CA is handling the output from
>> their CSPRNG correctly.
>>
>> For some issuing CAs, the sample sizes are too small to be able to draw
>> any conclusions.
>>
>>
>> (*) This date was chosen because BR 7.1 says:
>> "Effective September 30, 2016, CAs SHALL generate non-sequential
>> Certificate serial numbers greater than zero (0) containing at least 64
>> bits of output from a CSPRNG."
>>
>> (**) This is when Wayne started the discussion about DarkMatter, which
>> is what prompted the discovery that many CAs were falling short of BR 7.1.
> 

-- 
Rob Stradling
Senior Research & Development Scientist
Sectigo Limited

___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Rob Stradling via dev-security-policy
On 18/03/2019 15:30, Rob Stradling via dev-security-policy wrote:

> On 14/03/2019 10:59, Rob Stradling via dev-security-policy wrote:
>> On 13/03/2019 22:28, Richard Moore via dev-security-policy wrote:
> 
>>> If any other CA wants to check theirs before someone else does, then now is 
>>> surely the time to speak up.
>>
>> Someone else is in the process of checking...  ;-)
> 
> The purpose of this survey is to flush out any further CAs that are (or
> have been) noncompliant with BR 7.1 but have not yet disclosed an
> incident.

Columns A and B are currently empty.  They are intended to hold a 
Bugzilla URL and the date on which the bug was filed.

Jonathan Rudenberg has offered to review the disclosures that have been 
posted by CAs so far (thanks Jonathan!), so I've given him edit rights 
to the spreadsheet.

> Having scanned the crt.sh database, I have produced the following
> spreadsheet.  It covers all certificates known to crt.sh where the
> notBefore date is between 30th September 2016(*) and 22nd February
> 2019(**), and where the issuing CA...
> - is currently trusted by Mozilla to issue serverAuthentication
> certificates, and
> - has issued at least 1 certificate with a <64-bit serial number.
> 
> https://docs.google.com/spreadsheets/d/1K96XkOFYaCIYOdUKokwTZfPWALWmDed7znjCFn6lKoc/edit?usp=sharing
> 
> When a value in column E is 100%, this is pretty solid evidence of
> noncompliance with BR 7.1.
> When the values in column E and G are both approximately 50%, this
> suggests (but does not prove) that the CA is handling the output from
> their CSPRNG correctly.
> 
> For some issuing CAs, the sample sizes are too small to be able to draw
> any conclusions.
> 
> 
> (*) This date was chosen because BR 7.1 says:
> "Effective September 30, 2016, CAs SHALL generate non-sequential
> Certificate serial numbers greater than zero (0) containing at least 64
> bits of output from a CSPRNG."
> 
> (**) This is when Wayne started the discussion about DarkMatter, which
> is what prompted the discovery that many CAs were falling short of BR 7.1.

-- 
Rob Stradling
Senior Research & Development Scientist
Sectigo Limited

___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Survey of (potentially noncompliant) Serial Number Lengths

2019-03-18 Thread Rob Stradling via dev-security-policy
On 14/03/2019 10:59, Rob Stradling via dev-security-policy wrote:
> On 13/03/2019 22:28, Richard Moore via dev-security-policy wrote:

>> If any other CA wants to check theirs before someone else does, then now is 
>> surely the time to speak up.
> 
> Someone else is in the process of checking...  ;-)

The purpose of this survey is to flush out any further CAs that are (or 
have been) noncompliant with BR 7.1 but have not yet disclosed an 
incident.

Having scanned the crt.sh database, I have produced the following 
spreadsheet.  It covers all certificates known to crt.sh where the 
notBefore date is between 30th September 2016(*) and 22nd February 
2019(**), and where the issuing CA...
   - is currently trusted by Mozilla to issue serverAuthentication 
certificates, and
   - has issued at least 1 certificate with a <64-bit serial number.

https://docs.google.com/spreadsheets/d/1K96XkOFYaCIYOdUKokwTZfPWALWmDed7znjCFn6lKoc/edit?usp=sharing

When a value in column E is 100%, this is pretty solid evidence of 
noncompliance with BR 7.1.
When the values in column E and G are both approximately 50%, this 
suggests (but does not prove) that the CA is handling the output from 
their CSPRNG correctly.

For some issuing CAs, the sample sizes are too small to be able to draw 
any conclusions.


(*) This date was chosen because BR 7.1 says:
"Effective September 30, 2016, CAs SHALL generate non-sequential 
Certificate serial numbers greater than zero (0) containing at least 64 
bits of output from a CSPRNG."

(**) This is when Wayne started the discussion about DarkMatter, which 
is what prompted the discovery that many CAs were falling short of BR 7.1.

-- 
Rob Stradling
Senior Research & Development Scientist
Sectigo Limited

___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Pre-Incident Report - GoDaddy Serial Number Entropy

2019-03-18 Thread Hector Martin 'marcan' via dev-security-policy

On 15/03/2019 13:26, Peter Gutmann via dev-security-policy wrote:

I actually thought it was from "Chosen-prefix collisions for MD5 and
applications" or its companion papers ("Short chosen-prefix collisions for MD5
and the creation of a rogue CA certificate", "Chosen-Prefix Collisions for MD5
and Colliding X.509 Certificates for Different Identities"), but it's not in
any of those.  Even the CCC talk slides only say "We need defense in depth ->
random serial numbers" without giving a bit count.  So none of the original
cryptographic analysis papers seem to give any value at all.  It really does
seem to be a value pulled entirely out of thin air.


To be honest, I see this as a proxy for competence. Complying with the 
spec strictly means you're doing the right thing. Complying with the 
spec minus a tiny margin of error for practical reasons means you're 
probably fine. Mucking things up due to misunderstood notions of entropy 
and thus dropping entropy on the floor means you probably shouldn't be 
writing CA software. The fact that the bar was pulled from thin air is 
irrelevant; nobody here is suggesting that those using 63 bits of 
entropy actually *introduced* a tangible security problem. They just 
didn't follow the BR rules, which are there to be followed.


Thus:

a) If you use >64 bits of CSPRNG output raw, you're fine (assuming any 
practical CA size).


b) If you use exactly 64 bits of CSPRNG output with duplicate and zero 
checks, such that the odds of those checks ever *actually* rejecting a 
serial number based on the number of issued certs are < (say) 1%, then 
you're fine. For all *practical* intents and purposes you have 64 bits 
of entropy.


Ideally you'd have used more bits to avoid risking a duplicate serial 
discarding entropy, but at 64 bits, and doing the math for the birthday 
problem, the threshold for 1% chance is at about 608 million 
certificates [1]. If you've issued less than that number, you have a 
less than 1% chance of having ever rejected a single serial number due 
to the duplicate check (the zero check is negligible in comparison). It 
can be argued that if the problematic code never ran, then it might as 
well have never been there. Of course, *proving* that the code never ran 
is unlikely to be possible. Ultimately, entropy was reduced by the 
presence of that code, even if the outcome was identical to that had it 
not been there.


That said, it's quite *reasonable* to write the code this way; no 
strange misunderstandings are required. You had 64 bits of entropy and 
you applied a required check that negligibly reduced that; it's 
certainly better to lose a tiny fraction of a bit of entropy than to 
risk a duplicate serial.


c) If you're dropping serials with e.g. the top 8 bits set to zero (as 
per Daymion's algorithm), then you very clearly have 63.994353 bits of 
entropy, for no good reason. This is problematic, because it clearly 
demonstrates a *misunderstanding* of how entropy works and what the 
whole point of using 64 bits of raw CSPRNG output is. This is a BR 
violation in any strict reading, and readily provable by looking at 
serial number distribution.


d) If you're coercing the top bit (EJBCA defaults), then that's clearly 
63 bits of entropy, not 64, and of course a BR violation; it doesn't 
take a cryptanalyst to realize this, and anyone who isn't trying to 
"creatively interpret" the rules to weasel out of admitting 
non-compliance can see that 63 < 64 and there's no way to have 64 bits 
of entropy in a number where one bit never changes.


[1] See 
https://en.wikipedia.org/wiki/Birthday_problem#Cast_as_a_collision_problem :


>>> math.sqrt(2*(2**64) * math.log(1/(1 - 0.01)))
608926881.2334852

--
Hector Martin "marcan"
Public key: https://mrcn.st/pub
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Pre-Incident Report - GoDaddy Serial Number Entropy

2019-03-18 Thread Hector Martin 'marcan' via dev-security-policy

On 15/03/2019 07:13, Jaime Hablutzel via dev-security-policy wrote:

64bits_entropy = GetRandom64Bits() //This returns 64 random bits from a
CSPRNG with at least one bit in the highest byte set to 1

is, strictly speaking, not true. The best possible implementation for
GetRandom64Bits(), as described, only returns 63.994353 bits of entropy,
not 64.



Can you share how did you get the previous 63.994353?.

I'm trying the following and I'm getting a different value:

a = 2^64 = 18446744073709551616
b = 0x80 = 36028797018963968

(a - b) / a * 64 = 63.875

Maybe I'm misunderstanding something.


Entropy in bits is measured as the log2 of the possible values. So:

>>> math.log2(2**64)
64.0

Of 64-bit numbers, 255/256 have at least one bit set in the highest byte 
(only those starting with 00 don't), so:


>>> math.log2(2**64 * 255/256)
63.99435343685886

--
Hector Martin "marcan"
Public key: https://mrcn.st/pub
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: CAA records on a CNAME

2019-03-18 Thread Hector Martin 'marcan' via dev-security-policy

On 18/03/2019 16:42, Corey Bonnell wrote:
Perhaps not very elegant, but you can encode an “allow all issuers” CAA 
RRSet by specifying a single iodef CAA record without any 
issue/issuewild records in the RRSet, which will probably be treated as 
permission to issue for  CAs. I say “probably” because the RFC wasn’t 
clear on the proper handling RRSets with no issue/issuewild property 
tags, but this was clarified in the CAB Forum in Ballot 219 
(https://cabforum.org/2018/04/10/ballot-219-clarify-handling-of-caa-record-sets-with-no-issue-issuewild-property-tag/) 
to explicitly allow the above behavior (although of course some CAs may 
be more restrictive and disallow issuance in this case).


Huh, I hadn't considered that interpretation. Indeed, a strict reading 
of the RFC suggests that would work. It seems an arbitrary non-defined 
non-critical CAA tag record should work too (if using an actual iodef is 
undesirable for some reason). Maybe such a tag should be defined for 
this purpose?


Though this won't help Amazon/Google/etc, as having a higher-level CAA 
record would require tree-climbing on CNAME targets, which was removed 
by errata 5065. Sorry for the noise.


--
Hector Martin "marcan"
Public key: https://mrcn.st/pub
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: CAA records on a CNAME

2019-03-18 Thread Corey Bonnell via dev-security-policy
Perhaps not very elegant, but you can encode an “allow all issuers” CAA RRSet 
by specifying a single iodef CAA record without any issue/issuewild records in 
the RRSet, which will probably be treated as permission to issue for CAs. I say 
“probably” because the RFC wasn’t clear on the proper handling RRSets with no 
issue/issuewild property tags, but this was clarified in the CAB Forum in 
Ballot 219 
(https://cabforum.org/2018/04/10/ballot-219-clarify-handling-of-caa-record-sets-with-no-issue-issuewild-property-tag/)
 to explicitly allow the above behavior (although of course some CAs may be 
more restrictive and disallow issuance in this case).

Thanks,
Corey

From: Corey Bonnell 
Sent: Monday, March 18, 2019 16:42
To: Hector Martin 'marcan'; Jan Schaumann
Cc: dev-security-policy@lists.mozilla.org
Subject: Re: CAA records on a CNAME

Perhaps not very elegant, but you can encode an “allow all issuers” CAA RRSet 
by specifying a single iodef CAA record without any issue/issuewild records in 
the RRSet, which will probably be treated as permission to issue for  CAs. I 
say “probably” because the RFC wasn’t clear on the proper handling RRSets with 
no issue/issuewild property tags, but this was clarified in the CAB Forum in 
Ballot 219 
(https://cabforum.org/2018/04/10/ballot-219-clarify-handling-of-caa-record-sets-with-no-issue-issuewild-property-tag/)
 to explicitly allow the above behavior (although of course some CAs may be 
more restrictive and disallow issuance in this case).

Thanks,
Corey

From: dev-security-policy  on 
behalf of Hector Martin 'marcan' via dev-security-policy 

Sent: Monday, March 18, 2019 14:26
To: Jan Schaumann
Cc: dev-security-policy@lists.mozilla.org
Subject: Re: CAA records on a CNAME

On 16/03/2019 10:25, Jan Schaumann via dev-security-policy wrote:
> someapp.example.com, over which I have control is a CNAME, so I can't
> set a CAA record there.  Let's say the CNAME points to
> ghs.googlehosted.com.
>
> Your suggestion is to contact Google and ask them to please add a CAA
> record to that domain for a CA that a third-party (to them and myself)
> chooses.  My experience has been that Google, Akamai, Cloudflare,
> Amazon, and Microsoft etc. are not amenable to adding such records.

I think part of the problem here is that the CAA specification has no
"allow all" option. Third party hosting providers probably want to allow
their customers to use any CA they wish, so they lack CAA records.
However, there is no way to specify this once you have already
encountered a CAA record, so by the time you follow the CNAME, you're stuck.

The default CAA behavior can *only* be specified by default, by the
absence of records throughout the entire tree. In my optinion this is an
oversight in the CAA specification.

My use case is different, but somewhat related. I host services for an
event under example.com, e.g. .example.com, but I also have a
dynamic user.example.com zone (several, actually) where users
automatically get a dynamic record assigned at
.user.example.com. I use Let's Encrypt for all of the
services. Currently I have a CAA record for example.com, but this also
locks all the dynamic users into using Let's Encrypt, while I want them
to be free to use any CA. I could instead have a CAA record for .example.com, but this is hard to manage and less
secure, as it would allow issuance for all nonexistent names and is
harder to manage. Ideally I would just set a CAA record for "*" on
user.example.com and that would solve the issue, but the current CAA
specification has no mechanism for this.

If CAA had a way to signal an explicit "allow all", then third party
hosting services could signal that on their overall zones in order to
solve this problem with CNAMEs (of course, customers who wish to lock
down their CAA records for such third-party hosted domains would have to
get CAA records added to them, but I think that makes more sense as an
explicit thing rather than breaking CNAMEs by default).

--
Hector Martin "marcan"
Public key: 
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmrcn.st%2Fpub&data=02%7C01%7C%7C8c18001675284d88925f08d6ab6246d5%7C84df9e7fe9f640afb435%7C1%7C0%7C636884835910007451&sdata=AvRYycQp7w0zMB2to49mL0MqPdkscrDmw91ePNwKJ5k%3D&reserved=0
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mozilla.org%2Flistinfo%2Fdev-security-policy&data=02%7C01%7C%7C8c18001675284d88925f08d6ab6246d5%7C84df9e7fe9f640afb435%7C1%7C0%7C636884835910017456&sdata=OGYmdLZfK8Rktf7N62tUzaJsswMiF64cQF8uGL6eekw%3D&reserved=0
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy