企业安全实践之漏洞管理

2021-09-16 11:30:50 浏览数 (1)

以前在互联网公司做软件项目的时候,公司规定的上线流程中,就有一项是要做安全测试。当时使用的是IBM的AppScan,配置好要扫描的url地址,并通过录制的方式,爬取系统的页面,再设置扫描策略,对系统做安全检查,只有符合要求的结果才能被允许上线。从那个时候起,我就明白了上线前不能存在严重的漏洞,也是第一次对漏洞产生了兴趣。

一、漏洞的发现是一个扫雷的过程

为什么会产生漏洞呢?在做项目开发的时候,如果软件存在缺陷,是不允许上线的,必须要把缺陷修复完成并测试通过了才可以发版上线。而漏洞产生的原理,跟软件产品的缺陷类似,就是在开发过程中未有严格的控制,从而导致系统出现的暴露风险点。

当我换到另一家公司,开始转型全职负责网络安全工作时,直接面对的就是公司庞大数量的网站及信息系统,有动态和静态的官网、有登录入口的信息系统、有开放的接口地址、也有移动应用等等。刚开始只是觉得,网站只要通过工具扫描一下,就会有很多web漏洞,比如跨站脚本攻击、SQL注入、CSRF、恶意文件上传等。

但是,不同的web漏洞扫描工具,爬取的链接、漏洞库、检测的机制都会不同,很难用一个扫描工具扫出全部漏洞。所以,我们就引入了安全厂商的商用漏洞扫描设备,同时又本地搭建了开源的漏洞扫描环境,定期对公司的网站及信息系统做常规的web漏洞扫描。

刚开始做扫描的时候,就是在扫雷,会把当前需要扫描的网站和信息系统全都配置到工具中。但是,有时候就会出现这么一个场景:“有同事喊着,我的网站出现很多恶意的链接,我的服务挂了,是不是XXX在做扫描?”。这时候我心里一阵忐忑,赶紧把扫描任务停止了。

后来吸取扫描的经验教训,先把扫描配置调优了,降低了扫描的并发数和任务数,并设置在非业务时段定时触发扫描任务,这样既不会影响到正常的业务,也能有效提升web漏洞扫描的效率。在面对一些老旧的应用系统时,第三方的开发团队已经解散,也没有人熟悉原来的框架和代码,所以扫描出现的web漏洞,就无人可以修复。

针对这类历史遗留的老系统,我们的策略是通过在web应用防火墙或者入侵防御系统上,寻找该类型的web漏洞,配置规则来防护。虽然不能彻底修复,但是也是一个有效的缓解措施。

总结:在做漏洞扫描的时候,你不知道什么时候会踩到雷(系统与人的漏洞),但是你总是要义无反顾的往前走,寻找下一个有可能存在漏洞的点,并尽早发现它。

二、漏洞的处理是一个贪吃蛇的故事

从技术层面看,漏洞本身无法根除。在漏洞发现后的处理是一个漫长的周期。如果大量漏洞长期暴露并得不到及时有效地处理,那么新发现的漏洞与未修复的漏洞不断累加,对于公司的网络安全风险将会进一步叠加。

在对漏洞的扫描中,我也不断提升自己的认知,特别是跟安全厂商的学习交流以及自己在freebuf、安全客这些社区中徜徉各种安全知识,慢慢对漏洞的管理有了更多的认识。漏洞本身虽然不产生危害,但是一旦被不法分子利用,则有可能带来严重的威胁和损害。

特别是2017年5月14日的“永恒之蓝”漏洞,当时我印象特别深,那天正好是周末部门团建,大家在中场休息的时候看到这个新闻,敏锐的IT人第一反应就是打开随身携带的笔记本电脑,通过VPN远程到公司的网络,初步排查终端电脑及win server服务器的SMB补丁修复情况,并在第二天上班时间,部门同事分工协作,对公司的终端电脑逐一打补丁。

总结:在做漏洞处理的时候,就像玩贪吃蛇,你需要对漏洞各个击破,才能有效地把漏洞管理起来,形成一条漏洞修复链。从操作系统漏洞、到应用程序漏洞、再到开源组件漏洞、以及业务逻辑漏洞,就是一个漏洞处理循序渐进的过程。

三、漏洞的修复验证是一次守望先锋的胜利

当你把漏洞扫描报告发给同事时,有些同事会对你说,这个漏洞是误报,我的程序根本不可能存在这个问题。这时候,你就要多花点时间,把漏洞的名称、类型、来历及利用的方式搞清楚,并要搭建好自己的验证环境,将漏洞真实存在的验证结果输出给同事,让他哑口无言。

而当另一些同事对你说,这个漏洞我不知道怎么修复,漏洞报告我看不懂。这时,你也要多花点时间,查阅各种资料,用比较浅显的表达,将漏洞的产生原理、漏洞的描述及修复思路写清楚,用换位思考的方式,让同事能理解和接受它。同时,要形成规范的漏洞修复文档,以便同一类型的漏洞,可以把文档直接丢给他,让对方一看就知道如何修复。

我曾经遇到过,同样的生产环境和测试环境的部署,在测试环境上有检测到某一个未授权访问的漏洞,并也有开放了该服务的端口,而在生产环境上有扫描到该端口,但是一直却没有检测到该漏洞。而对方开发人员很肯定地跟我说两边的部署和配置都是一样的,于是他们对扫描器的可靠性产生了质疑。

面对质疑,我也是硬着头皮,不用扫描器而通过自己搭建环境,使用了该漏洞的验证工具,对该系统做了尝试的验证,结果是存在的。每个漏洞都有它形成的特点,就像每个英雄有自己独特的技能和特点。你应该根据漏洞的出现规律及特点,改变自己的扫描策略。就像根据每个英雄的角色定位改变自己的打法,要确定自己希望扮演的角色,才能最终获得胜利。

总结:有时候扫描器也有缺陷,并不是所有的系统、所有的漏洞都可以检测到,所以不能太依赖扫描工具,要拓宽思路地想想,每一个漏洞都会有对应的验证方法和工具,正如《守望先锋》里的每一位英雄都有各自标志性的武器和技能。

四、漏洞的防御是一场英雄联盟的对决

如何能主动发现漏洞,并有效遏制呢?可以通过堆叠一定的安全设备,如态势感知系统、防火墙、日志审计设备、数据库审计设备、web应用防火墙、入侵防御系统,以经济和装备的领先取得优势。

但是,有时候会发现,安全设备一旦没有及时的关注威胁事件,并快速处理告警事件,很容易就变成摆设而失去意义。所以,我对自己每天的工作计划,就是要对这些设备的告警做处理,并在处置中不断优化策略,强化规则,并及时更新系统版本和规则库、漏洞库。

对漏洞的管理要从多方面思考,当我从安全设备接收到一台失陷终端主机的告警,我会先看最近两周或者一个月内该失陷主机的告警历史,判断是否为误报或者真实,如果是真实的,则立刻通知桌面运维同事,从终端安全的角度协助处理。

当我在威胁情报中心获知某一产品的版本漏洞时,我会在公司内部的管理员群组中同步信息,并将漏洞详情发给使用该产品的负责人,让他从应用安全的角度协助处理。

当我通过内网的漏洞扫描发现某系统开放了敏感的端口,并检测存在高危的漏洞时,我会将漏洞扫描报告导出来,发给该系统的项目经理,让他尽快去协调相关人员修复漏洞。如此配合的多人协作模式,就像在玩英雄联盟,团队型战斗更是一场游戏的关键。

总结:我喜欢这样的团队配合,在公司的漏洞管理工作中,遵循PDCA的原则,对漏洞有一个闭环的过程。漏洞管理本是一个漫长的过程,需要把各方资源调动起来,有效地防御才是能给人一种打怪成功的感觉。

漏洞管理只是我在公司做的一部分网络安全的工作,面对复杂的网络安全管理体系,我希望可以借助漏洞管理的经验,在整个网络安全架构下,横向和纵向扩展开来,有计划地并行开展着,确保企业安全有序进行。所谓游戏人生,其实就是把游戏的团队作战精神,融入到实际的工作中,开疆拓土保安全!

0 人点赞