Veracode的静态扫描要怎么去配,扫描规则的那些误报,又该怎么去料理,很多团队是在把这一套安全检查接进流水线了以后,才真真切切地碰到这些事的。Veracode的静态扫描,可不是把源码随便一丢就完事了,往前头看,得去预备好那个要扫的构建包、应用的信息、扫描的策略,还有分支的环境;往后头看,也还得去打理那些扫出来的结果,特别是那种,一眼瞧上去像个问题,可细一琢磨,跟实际的业务场景又对不上号的告警。Upload and Scan能用来把文件传上去,再去跑静态分析,策略扫描和sandbox扫描,也常常被搁在不同的阶段里用。
一、Veracode静态扫描怎么配置
去配Veracode的静态扫描,先要把“扫什么东西”跟“照着什么标准去扫”给分开。好些扫描跑不成,倒不是平台自己出了毛病,而是传上去的包不齐整、依赖的东西少了、构建的路子不对,再不就是把测试分支上的玩意,跟正式的策略扫描给搅和在了一起。
1、准备扫描包
在扫以前,先得去把你用的语言、框架、构建完的产物,还有那些依赖的文件,都给确认一遍。Java的项目,说不定就得传jar、war或者ear上去,.NET的项目,就得留心编译出来的东西和它的依赖,前端的项目,也得去瞧瞧打包以后的结果,还有源码的范围。要是包不完整,扫出来的结果就容易偏少,闹不好,有的调用链它就愣是分析不出来。
2、选择扫描方式
是可以照着项目正处在的阶段,去挑着用【Policy Scan】或者是【Sandbox Scan】的。
那种正式的版本,更对路子的,是去走策略扫描,拿它来断一断,到底是不是够上了安全上的那些条条框框;可要是还在那里做着开发、验着补丁修没修好、或者是分支上在跑测试,就还是先把它丢到sandbox里头去跑一轮,要更合适一些,也能免掉那些还没稳当下来的代码,一下子就捅到正式的策略结果里头去。
3、接入流水线
要是项目已经在用Jenkins、GitLab CI、GitHub Actions这一类的工具了,大可以把上传、扫描,还有去抓取结果这些个步骤,都塞进流水线里头去。到了这儿,有几样东西是要多照看两眼的,凭证是怎么管的、应用叫个啥名头、版本号是咋标的、扫描包的路径是搁在哪的,还有跑到啥地步就算它失败了。别单只在临发布前才去扫那么一回,到了那个份上,什么都堆到了一块儿,再转回头来修,就要被动得多了。
二、Veracode静态扫描规则误报怎么处理
静态扫描里头蹦出来一些误报,这算不上什么怪事,可也不能看着跟预想的不一样,就连眼皮都不抬一下,直接就给它忽略掉。去对付误报,得要手里头攥着证据,顶起码,也得能把它给说道说道,为啥偏就是这条告警,搁在当前的这个上下文里头,它就不会变成一个真能叫人利用的风险,又或者是,为啥那些已经有了的控制法子,就刚好能把它给兜住了。
1、先看告警上下文
进到【Triage Flaws】那个地方以后,先要去看的,是漏洞它是个啥类型,数据是怎么个流法的,打哪个口子进来的,又是哪个危险的函数给点着了,还有代码它窝在了哪一块。
别就拿眼梢子扫一下标题,就拍板说这是误报。有些毛病,粗看像误报,是因为它的上下文还没被瞧全乎;也确实是有些情形,是工具自己就硬是闹不明白业务上布下来的那些个限制,就比方说,输进来的东西,在它还在上游漂着的时候,就已经被人拿白名单给狠狠地滤过一遍了。
2、区分误报和可接受风险
误报,说的是工具它自己个儿判断不准,给弄岔了;可接受风险呢,那就是毛病活生生地杵在那里,只不过是项目这一头,在坐下来掂量了以后,拿定了主意,暂且先不去动它。这两样东西,不能给混到一堆儿去写。Veracode这一边,也是能应承你,在给缺陷走料理流程的时候,去做个缓解、写上几句说明、再过一过评审,跟在后头的那些结果,也就会流进往后的追踪里头去。
3、保留处理说明
要是真给认准了,就是个误报,那就得动手,把凭的是啥才下到这个判词的那些个依据,一样一样地写清楚了,比方说,那个输进来的源头,它是能被拿捏住的,还是没得法子控制的,是不是前头已经有了一统天下的过滤了,是不是有权限在那卡着脖子,再要不就是跑起来的时候,有没有个东西在旁边守着的。光撂下一句“false positive”,那是撑不住门面的,也服不了人,等到后头人家再复查的时候,还是会被揪着问。
三、误报太多时怎么减少反复返工
料理误报,不能光靠着一条一条地,把它们给单独关掉了事。要是一个项目,每回跑扫描,都跟坏了的水龙头似的,滴滴答答往外头冒一大堆,翻来覆去就是那些个叫人生气的争议项,那这个光景,就是在告诉你,那套配置、写码子的路数,再要不就是团队里头拿主意的那杆秤,是到了该好生归置归置的时候了。
1、检查扫描范围
先去看上一眼,是不是把那些个自动生出来的代码、打别人那搬来的第三方库、专跑测试的目录,还有那些临时文件,都给一筐子装进去扫了。范围划得太宽,就会带进来很多哇啦哇啦的噪音。那些该被踢出去的目录,就是要给排除了,可是,那些真正紧要的核心业务代码,就不能由着性子也把它给丢到要排除的那一堆里头去,要不然,这安全扫描,也就丢掉了它本来该有的那股子魂儿了。
2、统一编码写法
有些告警之所以会翻过来覆过去地,一遍遍往外蹦,就是因为团队里头,写码子的路数它就不统一,你有你的拳法,我有我的脚法。比方说,对输进来的东西的校验,是东一榔头西一棒子,散在各处的,工具类被叫的名字,也是乱得跟一锅粥似的,该包起来的那一层,又裹得太深了,这么个搞法,叫扫描工具又怎么能摸得准真实的数据是怎么个流法的呢。要是能花些功夫,把那些常用到的安全处置法子,裹得再清爽明白一些,反倒能叫那些翻来覆去的解释,少下去很多。
3、建立误报复查机制
对那些在眼皮子底下晃了好多回的,同一类的误报,是可以把它们给拢到一块儿,理成几条在内部传的料理规矩的。哪些情况能去申请忽略,哪些毛病是打断了骨头也得修好的,又有哪些是必得要把搞安全的给请出来重新相看相看的,这些个,都要提早把话给说到明处。Veracode那边呢,也是能应承你,对那些个八竿子打不着的、藏着误会苗头的,再要不就是团队自己个儿心里已经横了,情愿把那份风险给认下来的finding,去做个忽略不理的处置的,只不过,这一类的操办,顶好是后头都跟着一条能摆在台面上的、清清白白的说法。
总结
Veracode的静态扫描要怎么去配,还有它那套规矩闹出来的误报又要怎么去摆弄,这里头最要紧的,倒不是去把扫描的按钮给点着了就算完事,而是要把要扫的包、要用哪套策略、分支搅在一块的环境、嗖嗖跑的流水线,还有出了毛病以后那一整套料理的章程,都给一遭理得顺顺当当的。在配的时候,得先保着传上去的那些东西是圆图个儿的,再把那套正儿八经的策略扫描跟丢在沙盒里跑着玩的测试扫描给分分清爽;到了去对付误报的时候,要耐着性子把它的前后文给瞧明白了,完了以后再去断它到底是工具走了眼,是把风险往肚子里吞了,还是那段代码真真就是少了修行,非得去补上几笔不可。