[备份]详细谈谈CVE的申请过程

这几个月和各种安全组织/机构交流(对线)得出一些结论,写出来可能会对安全圈的朋友有一些帮助,对于不挖洞的人来说是拓宽知识,对于挖洞师傅来说可以少走弯路

未来的话,不会再挖洞了,虽然还是处于安全圈,但主要的精力会放在开发相关,很大的概率不会再碰漏洞相关的事情,并不是说挖洞不好,只是我不擅长也不愿意再做了

自行申请

自行申请CVE的表单是:https://cveform.mitre.org/

选择Select a request typeReport Vulnerability/Request CVE ID

其中的Attack vector(s)是填写POC的地方,但只能写一个普通的URL因此一般情况下,需要自己找一个第三方的平台,例如Github仓库,写一份POC然后填写URL到这里

当我们填写完表单后,会收到一份邮件:大致意思是CVE团队已经确定收到了报告,但无法确定处理时间,通常情况下他们会根据漏洞的紧急情况来处置

一般情况下,这种方式需要等待三个月以上,甚至一年以上。这时候官方会回复你一封邮件,意思是:我们已经为你提交的资料分配了CVE编号,但是并未公开,所以是保留状态。

很多师傅认为到了这一步就算成功申请CVE了,其实是错误的。还有下一步:公开CVE

继续前往CVE申请的表单,选择Select a request typeNotify CVE about a publication选项,这一步需要等待大概两三周,然后这个CVE的信息将会被公开,比如你填写的描述信息,参考引用信息等。但到了这一步,这个CVE还不算是完全申请

最后一步是,等待NVD给出CVSS评分,这一步大概需要两三周的时间,例如CVE-2022-29885的信息:https://nvd.nist.gov/vuln/detail/CVE-2022-29885

总结:

标准流程

其实自行申请并不是CVE的标准流程,标准流程如下:

可见,如果漏洞发现者绕过项目管理者直接申请CVE是一种不妥的方式,这也是自行申请不被认可最重要的原因。项目负责人都没同意和确认,谁来确认这个漏洞的真实和有效性?CVE分配团队是不会对申请信息进行审核的,你的POC是否有效没人看,也不会对申请项目有任何要求,不需要多少的Star或者知名度,哪怕你自己写个Demo项目申请CVE都会同意,只要你不怕人喷

按照标准流程,下面结合真实的案例来谈谈

Apache

相信很多师傅都在尝试挖Apache项目漏洞,所以首先谈一谈这个:

这种方式其实是基于上述标准流程的,但CVE机构变成了Apache组织,该组织分配CVE ID的速度远远快于MITRE官方。但要求是必须Apache项目负责人才有资格申请,这也保证了每个出自ApacheCVE都得到了官方的确认,大大提高了含金量和可信度

第一步需要做的是确定该项目是否存在安全漏洞报告方式:可以在搜索引擎中搜索对应的项目页面,然后浏览其中的Security页面。很多的Apache项目的安全页面是直接复制Apache Security页面的,该页面告诉你应该发送漏洞报告到security@apache.org邮箱,这种情况编辑漏洞报告发送到总邮箱即可,然后总邮箱负责转交给对应的项目管理者

但并不是所有的项目都应该发送到这里:例如TomcatShiro都有自己的邮箱:security@tomcat.apache.orgsecurity@shiro.apache.org。按照Apache的规定,如果某个项目存在了自己的security邮箱,那么不建议发送给总邮箱security@apache.org(曾经我这么干过被告知不建议这样做)

值得一说的是某些项目的安全报告方式是非security邮箱,例如Apache Flink安全页面(https://flink.apache.org/security.html)写着private@flink.apache.org邮箱。这就是另外一个方式了,任何一个Apache项目都有自己的private邮箱,该邮箱用于项目PMC(管理者)内部交流,但是外部可以发送邮件进来

最后谈一谈总邮箱security@apache.org对于漏洞的处理过程:

按照Apache安全团队的规定,发布CVE公告的时候,应该抄送一份到oss-security邮箱: https://oss-security.openwall.org

做安全研究的师傅一定要订阅该邮箱,随时会更新开源项目的各种最新漏洞

总结:

Spring

对于Spring系列项目来说,就比较省心了,发现漏洞直接报告给:security@vmware.com邮箱

处理效率极快,最快在一个工作日内就会给出回复,最慢三到五天给出确认。但确认后还需要等待新版本的发布,一般来说一个月会发布一个新版本,然后官方会在这个页面同步CVE公告:https://tanzu.vmware.com/security

对于为什么Spring项目处理过程极快,比较好理解,因为Apache项目的管理者是用爱发电,主职不是该项目,有空看一看。而Spring项目是一个公司,保证安全是他们的责任

总结:

Oracle

最后谈一谈Oracle的漏洞,一年中Oracle会发布四次安全公告,每隔三个月左右,安全公告地址是:https://www.oracle.com/security-alerts/

如果发现了Oracle产品的漏洞,应该报告到secalert_us@oracle.com邮箱,通常第二天就会确认收到了漏洞,接着他们会对漏洞进行分类和初审,能够通过初审的漏洞会分配一个ID号,在分配成功后官方会回复你。在每三个月的安全公告前,官方会再次回复你,告知你报告的漏洞是否已被处理,是否会给你分配CVE ID以及CVSS分数,以及询问你致谢的信息等

总结:

最后

相信以上内容,可以解决Java安全研究者90%的问题,因为绝大多数Java项目都属于上述组织或者公司。例如谷歌和微软,包含的Java产品不多,存在漏洞的可能性就更低了,谷歌有自己的一套漏洞报告平台,无需上述这样原始的邮箱报告,微软直接报告到MSRC,也更加先进

不难发现,做Java安全研究给开源项目报告漏洞,在99%的情况下是没有任何赏金的。想要靠这个赚钱,并不是没有路子,只是比较麻烦,个别的公司和组织收购开源项目漏洞,然后该公司组织报告到官方,真正的漏洞发现者可以获得赏金。国外有知名的公司搞这种操作,国内似乎也有

学习路上总会有冷嘲热讽阴阳怪气的人,所以有时候少说多做,毕竟没有任何人发自内心希望你更好

本文很多地方也是我四处碰壁得到的经验,希望可以帮助到一些安全研究师傅