首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这里面发生了什么让我们加密CAA漏洞?

这里面发生了什么让我们加密CAA漏洞?
EN

Server Fault用户
提问于 2020-03-20 19:49:27
回答 1查看 519关注 0票数 3

最近,让我们对其系统中发生的导致向客户端发出证书问题的错误进行加密。他们用这样的方式来描述这个bug:

bug:当证书请求包含N个需要CAA重新检查的域名时,Boulder会选择一个域名并检查N次。这实际上意味着,如果用户在时间X验证了某个域名,而该域名的CAA记录允许在时间X进行加密,那么该用户将能够在X+30天之前发出包含该域名的证书,即使后来有人在该域名上安装了禁止通过加密方式发布的CAA记录。

这是否意味着当用户有多个需要重新检查CA的域名时,让我们只检查第一个域?证书是在不属于用户的域上颁发的吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-03-20 20:53:02

让我们根据错误加密颁发的安全性较低的证书。这更像是一种比赛条件,而不是任何其他情况。

CAA记录是一个可选的DNS记录,它限制允许哪个证书提供程序为域颁发证书。因此,如果订阅者在时间上验证一个域名( X ),并且允许在订阅服务器验证其域期间加密颁发该域的CAA记录,则该订阅服务器将有30天时间从验证日期起发出有效证书。因此,如果后来有人添加了CAA记录,禁止在X+ 30天之间的任何时候颁发证书,订阅者将能够发出证书而忽略CAA记录。

如果您查看有此错误的按下,这就是在prod中启用NewAuthorizationSchema功能标志时第一次触发它的地方。

问题代码是Go中的一个常见错误,参见boulder的相关代码:

代码语言:javascript
复制
// authz2ModelMapToPB converts a mapping of domain name to authz2Models into a
// protobuf authorizations map
func authz2ModelMapToPB(m map[string]authz2Model) (*sapb.Authorizations, error) {
    resp := &sapb.Authorizations{}
    for k, v := range m {
        // Make a copy of k because it will be reassigned with each loop.
        kCopy := k
        authzPB, err := modelToAuthzPB(&v)
        if err != nil {
            return nil, err
        }
        resp.Authz = append(resp.Authz, &sapb.Authorizations_MapElement{Domain: &kCopy, Authz: authzPB})
    }
    return resp, nil
}

这就是问题所在:对于循环迭代器变量的引用,他们未能正确处理第二个循环迭代器变量v

而在这个函数中,没有考虑两个重要的字段:IdentifierValueRegistrationID

代码语言:javascript
复制
func modelToAuthzPB(am *authzModel) (*corepb.Authorization, error) {
    expires := am.Expires.UTC().UnixNano()
    id := fmt.Sprintf("%d", am.ID)
    status := uintToStatus[am.Status]
    pb := &corepb.Authorization{
        Id: &id,
        Status: &status,
        Identifier: &am.IdentifierValue,
        RegistrationID: &am.RegistrationID,
        Expires: &expires,
    }

博尔德 (特别是boulder)确定给定的FQDN需要CAA重新检查,并且它使用来自授权对象的标识符字段,由于上面的提交,这是不正确的。因此,处理标识符字段的方式,对于单个映射中的所有值都是相同的。因此,例如,如果您有多个需要CAA重新检查的授权,boulder只会重新检查一个FQDN,而不是其他的。

确实是个坏虫子。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1007743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档