漏洞模板
去年冬天,漏洞模板一个做安全的漏洞模板朋友给我看了份漏洞报告模板。他说这东西比漏洞本身值钱。漏洞模板我当时没太理解,漏洞模板直到他翻到第三页——那页写着"复现步骤",漏洞模板但底下只有一行字:"见附件视频"。漏洞模板附件呢?漏洞模板没有。视频呢?漏洞模板也没传。就这,漏洞模板甲方还签字验收了。漏洞模板
漏洞模板这玩意儿,漏洞模板说白了就是漏洞模板一份"填空题"。你发现了个SQL注入,漏洞模板好,漏洞模板往模板里填:漏洞名称、漏洞模板风险等级、影响范围、复现过程、修复建议。看起来挺规范对吧?问题出在填的人身上。我见过最离谱的一份,漏洞描述写的是"该接口存在安全问题",修复建议是"建议修复"。你猜怎么着?这份报告被打回去三次,第四次过了。因为第四次他们换了个模板,把"建议修复"改成了"建议对输入参数进行严格过滤",字数多了,看起来专业了。
这行有个不成文的规矩:模板越厚,显得越权威。我见过一个团队,光漏洞模板就分了七种——Web漏洞、移动端漏洞、主机漏洞、配置缺陷、逻辑缺陷、信息泄露、第三方组件漏洞。每种模板都有二十几个字段要填。结果呢?他们一个月出了四十份报告,真正能复现的不到十份。剩下的要么是扫描器误报,要么是"疑似"、"可能"、"建议进一步验证"。甲方拿着报告去找开发,开发一看就火了:"你连怎么复现都没写清楚,我改什么?"
但你不能怪写报告的人。一个中级安全工程师,一天要审三个系统,每个系统少说几十个接口。他哪有时间一个个手工验证?扫描器跑一遍,导出结果,套模板,改改措辞,交差。这套流程跑熟了,一份报告二十分钟搞定。质量?那是甲方该操心的事。甲方要是懂行,自然会打回来让你补;甲方要是不懂,那正好,皆大欢喜。
我见过一个反例。某金融公司安全部有个老哥,他自己改了一套模板。别的先不说,他把"复现步骤"那一栏拆成了三块:请求包、响应包、预期结果。请求包必须带完整HTTP头,响应包必须带状态码和关键回显,预期结果必须写清楚"如果存在漏洞,响应中会出现什么特征"。他手底下的人怨声载道,说这模板太变态,填一份报告要半天。但半年后,他们部门的漏洞修复率从40%涨到了87%。开发那边反馈说,现在拿到报告不用猜,照着请求包发一遍,看到响应包里的特征字符串,就知道问题在哪。省了来回扯皮的时间。
模板本身没罪。罪在拿模板当挡箭牌的人。一份漏洞报告的核心就两点:怎么证明漏洞存在,怎么让开发看懂。其他字段——风险等级、影响范围、修复建议——都是锦上添花。但现实是,很多人把精力花在锦上,花没了。你打开一份报告,看到"风险等级:高危"下面跟着一段八股文式的描述,再往下翻,复现步骤就一句话:"访问URL即可触发。"你访问了,啥也没触发。再问,对方说:"哦,那个URL要带特定参数,我忘写了。"
所以我现在看漏洞报告,先看复现步骤。复现步骤写不清楚的,直接打回去。别的字段写得再漂亮,没用。一个漏洞的价值,不在于它被描述得多吓人,而在于另一个人能不能照着你的步骤,把同样的结果复现出来。做不到这一点,模板就是一张废纸。你填得再工整,也就是一张工整的废纸。