这几个月和各种安全组织/机构交流(对线)得出一些结论,写出来可能会对安全圈的朋友有一些帮助,对于不挖洞的人来说是拓宽知识,对于挖洞师傅来说可以少走弯路
未来的话,不会再挖洞了,虽然还是处于安全圈,但主要的精力会放在开发相关,很大的概率不会再碰漏洞相关的事情,并不是说挖洞不好,只是我不擅长也不愿意再做了
自行申请CVE的表单是:https://cveform.mitre.org/
选择Select a request type
为Report Vulnerability/Request CVE ID
其中的Attack vector(s)
是填写POC
的地方,但只能写一个普通的URL
因此一般情况下,需要自己找一个第三方的平台,例如Github
仓库,写一份POC
然后填写URL
到这里
当我们填写完表单后,会收到一份邮件:大致意思是CVE
团队已经确定收到了报告,但无法确定处理时间,通常情况下他们会根据漏洞的紧急情况来处置
一般情况下,这种方式需要等待三个月以上,甚至一年以上。这时候官方会回复你一封邮件,意思是:我们已经为你提交的资料分配了CVE
编号,但是并未公开,所以是保留状态。
很多师傅认为到了这一步就算成功申请CVE
了,其实是错误的。还有下一步:公开CVE
继续前往CVE
申请的表单,选择Select a request type
为Notify CVE about a publication
选项,这一步需要等待大概两三周,然后这个CVE
的信息将会被公开,比如你填写的描述信息,参考引用信息等。但到了这一步,这个CVE
还不算是完全申请
最后一步是,等待NVD
给出CVSS
评分,这一步大概需要两三周的时间,例如CVE-2022-29885
的信息:https://nvd.nist.gov/vuln/detail/CVE-2022-29885
总结:
CVE
的流程极长,一年以上也不罕见POC
是什么,只要申请资料没问题就给通过,因此提交的是垃圾洞,甚至不是漏洞,无论多么小众的项目,都会给你通过。显而易见没有含金量其实自行申请并不是CVE
的标准流程,标准流程如下:
h1
等方式)CVE
机构申请CVE ID
(CVE
机构有很多)CVE
机构分配CVE ID
(这时候报告者并不知晓)Github
或者邮箱)CVE
机构公开该CVE
信息NVD
对CVE
信息进行审核和评分可见,如果漏洞发现者绕过项目管理者直接申请CVE
是一种不妥的方式,这也是自行申请不被认可最重要的原因。项目负责人都没同意和确认,谁来确认这个漏洞的真实和有效性?CVE
分配团队是不会对申请信息进行审核的,你的POC
是否有效没人看,也不会对申请项目有任何要求,不需要多少的Star
或者知名度,哪怕你自己写个Demo
项目申请CVE
都会同意,只要你不怕人喷
按照标准流程,下面结合真实的案例来谈谈
相信很多师傅都在尝试挖Apache
项目漏洞,所以首先谈一谈这个:
这种方式其实是基于上述标准流程的,但CVE
机构变成了Apache
组织,该组织分配CVE ID
的速度远远快于MITRE
官方。但要求是必须Apache
项目负责人才有资格申请,这也保证了每个出自Apache
的CVE
都得到了官方的确认,大大提高了含金量和可信度
第一步需要做的是确定该项目是否存在安全漏洞报告方式:可以在搜索引擎中搜索对应的项目页面,然后浏览其中的Security
页面。很多的Apache
项目的安全页面是直接复制Apache Security
页面的,该页面告诉你应该发送漏洞报告到security@apache.org
邮箱,这种情况编辑漏洞报告发送到总邮箱即可,然后总邮箱负责转交给对应的项目管理者
但并不是所有的项目都应该发送到这里:例如Tomcat
和Shiro
都有自己的邮箱:security@tomcat.apache.org
和security@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
对于漏洞的处理过程:
private
邮箱并告知这是安全漏洞PMC
向总邮箱申请CVE ID
CVE
公告按照Apache
安全团队的规定,发布CVE
公告的时候,应该抄送一份到oss-security
邮箱: https://oss-security.openwall.org
做安全研究的师傅一定要订阅该邮箱,随时会更新开源项目的各种最新漏洞
总结:
Apache
项目分配的CVE ID
都能够确定其真实性和有效性,提高了含金量,这种方式脱离了水CVE
的范围,但有可能漏洞本身比较鸡肋,例如拒绝服务和各种无危害漏洞,也会被某些人喷垃圾洞Apache
项目处理漏洞的过程较快,最快可以一个月内处理完毕,当然也有慢的项目,个别老项目处理漏洞的过程需要半年以上,因为他们发布新版本的频率很低,除非漏洞极其高危,否则项目负责人不会选择专门为某个漏洞特意发布规划之外的版本Apache
项目有h1
页面:https://hackerone.com/apache_nifi对于Spring
系列项目来说,就比较省心了,发现漏洞直接报告给:security@vmware.com
邮箱
处理效率极快,最快在一个工作日内就会给出回复,最慢三到五天给出确认。但确认后还需要等待新版本的发布,一般来说一个月会发布一个新版本,然后官方会在这个页面同步CVE
公告:https://tanzu.vmware.com/security
对于为什么Spring
项目处理过程极快,比较好理解,因为Apache
项目的管理者是用爱发电,主职不是该项目,有空看一看。而Spring
项目是一个公司,保证安全是他们的责任
总结:
Spring
系列的项目只需要报告到一处,然后静待确认和安全公告即可Java
开发领域,最知名的系列框架最后谈一谈Oracle
的漏洞,一年中Oracle
会发布四次安全公告,每隔三个月左右,安全公告地址是:https://www.oracle.com/security-alerts/
如果发现了Oracle
产品的漏洞,应该报告到secalert_us@oracle.com
邮箱,通常第二天就会确认收到了漏洞,接着他们会对漏洞进行分类和初审,能够通过初审的漏洞会分配一个ID
号,在分配成功后官方会回复你。在每三个月的安全公告前,官方会再次回复你,告知你报告的漏洞是否已被处理,是否会给你分配CVE ID
以及CVSS
分数,以及询问你致谢的信息等
总结:
Oracle
产品的漏洞只需要报告到一处,然后静待确认和安全公告即可相信以上内容,可以解决Java
安全研究者90%的问题,因为绝大多数Java
项目都属于上述组织或者公司。例如谷歌和微软,包含的Java
产品不多,存在漏洞的可能性就更低了,谷歌有自己的一套漏洞报告平台,无需上述这样原始的邮箱报告,微软直接报告到MSRC,也更加先进
不难发现,做Java
安全研究给开源项目报告漏洞,在99%的情况下是没有任何赏金的。想要靠这个赚钱,并不是没有路子,只是比较麻烦,个别的公司和组织收购开源项目漏洞,然后该公司组织报告到官方,真正的漏洞发现者可以获得赏金。国外有知名的公司搞这种操作,国内似乎也有
学习路上总会有冷嘲热讽阴阳怪气的人,所以有时候少说多做,毕竟没有任何人发自内心希望你更好
本文很多地方也是我四处碰壁得到的经验,希望可以帮助到一些安全研究师傅