大家好,我是花生,某安全团队包工头,经过多年的探索,探索了一套适合当前企业的应用安全实践方法论。希望通过文章可以给中小企业团队提供一些建设经验(大厂轻喷)。
团队介绍:当前应用安全5人,1人主攻白盒代码扫描(规则优化+运营),2人负责评审测试,1人负责团队产品架构、开发相关、数据安全等各种业务,1枚小鲜肉实习生目前熟悉业务中。待招数据安全1名,如有年底观望机会的小伙伴,可与我联系。我们的团队属于小而精,紧张有序的进行日常工作。附近的大厂(某旅游龙头)每组大概10人的配额,安全部门大概50人左右。一般安全团队大概分有基础安全、数据安全、安全运营、安全开发、合规、业务安全、蓝军等等,每个公司都有独有的架构设计。人员配备和公司业务正相关,业务越大,需要的安全人员越多,业界安全的配比大概是1~3%区间(安全人员和总人数比),各个公司可能不大一样。我们团队除数据安全岗外,团队其他成员均掌握一门编程语言,可定制开发小工具,为平台安全建设添砖加瓦!经过安全团队三年努力,在产品、研发、测试、安全通力合作下,形成了适合当前业务的sdlc流程。因所列每一项,展开都可以书写文章,文章将以蜻蜓点水式介绍建设经验。同时致敬以前团队成员,因为有你我的努力,才有了现在的成果,感恩一起奋斗的日子,愿你在新的征途一切顺利!先上整体导图抛砖引玉,欢迎各路大佬指导交流~
总体导图
一、主动介入
1.SDLC流程
SDL流程图
1.1项目评审
产品同事设计prd完成后,会召集测试、研发、安全参加需求宣讲会了解需求,安全部门经过评审,会将相应风险邮件告知产品、研发,在设计阶段提供规避安全建议。同时为解决人员不足、产品快速迭代可能遗漏的情况,安全团队会从配齐发布系统、jira项目中获取项目信息,做平台展示提供给负责同事查看,如需安全评审、测试,会将项目信息同步(自动化)到应用安全项目管理中,并将相关风险评估信息录入项目中,提测日会发送邮件通知责任人跟进。经过多年的磨合,新业务、新产品研发设计阶段研发同事也会邀请安全同事参与研发设计评审,共同从源头抓产品安全,为公司、客户提供安全可靠的产品服务。风险评估流程如下图:
风险评估
为方便业务及时(24h)获取风险评估,我们开发了自助风险评估功能,适应快速的产品迭代,需求方可根据设计需求选择相应功能,系统会根据功能提供相应风险项,评估结束提供报告下载,业务方可参照建议提前规避风险。
自助风险评估
1.2安全测试
为了便于统计、查看(统计),我们开发了工单模式记录追踪安全测试项目,达到测试时间系统会自动邮件提醒责任人并抄送安全组,项目负责人会根据需求文档有的放矢做针对性测试,提升测试效率。为应对快速迭代的项目发布,在人员紧缺的情况,我们制定如下测试规则:如遇新项目、大项目,可多人协作测试;小项目、迭代等单人负责测试。尽最大努力满足业务安全测试需求。同时团队内部积极开发安全工具,提供被动扫描程序和bp插件等,提升测试效率和精准度。在洞态iast问世后,团队积极探索洞态IAST,部署测试环境试运营,目前功能磨合中,待测试环境运营成功,将会推动测试环境全接入,此举将大幅度减轻安全测试压力。待成功之日分享iast实践经历~
1.3黑盒扫描
因当前业务接口模式居多,且黑盒扫描较重,黑盒扫描当前仅作为辅助方式,上线前会对资产(域名、ip)做黑盒扫描,上线后会进行周期性扫描。黑盒扫描包括常规安全监测(XSS、sql注入、LFI等)、POC扫描(300+检测脚本)、知名漏扫工具、端口扫描。所有功能均为团队内部开发。此处先一笔带过,后续会在周期性扫描重点介绍。
1.4白盒代码扫描
白盒扫描v1版采用cobra扫描,经过3年的运营取得了一定成果,但误报率一直居高不下。经过团队探讨,决定尝试使用semgrep扫描工具替代,目前两套扫描同时运行,规则优化以semgrep为主,经过数月的探索,取得了一定的成果。
当前白盒流程:白盒扫描–>漏洞确认–>通知责任人–>修复–>验证通过–>处理完结
白盒运营
1.5API接口管理
因业务现均以api方式提供服务,且多数api接口是提供给app使用,抓包和爬虫均会有遗漏,存在漏测的可能,为减少漏测,安全团队需要掌握所有接口数据。经过和兄弟部门沟通,测试部门的接口压测平台拥有完整的接口数据信息。经测试团队和安全团队合作,安全团队每天拉取接口数据,将相应数据发送至接口扫描队列扫描,同时根据接口返回数据标记敏感字段,以便识别敏感api供数据安全评审。接口扫描业务接入初期,取得了很好的成果。同时,为了减少脏数据的产生,我们平台增加了扫描白名单功能,如有写数据接口,可一键加白(不扫描),减少脏数据,减少对测试工作的影响。
接口管理
1.6安全培训
安全部门提供在线漏洞说明及定期安全意识培训,提升员工安全意识。2021年举办了安全周,通过邀请外部专家讲座、有奖问答、观看安全视频等途径,提升全员安全意识。同事集团每年均会有安全培训考核,督促全员安全知识学习。
2.周期扫描
周期扫描采用分布式节点通过授权key访问扫描任务redis,扫描节点获取任务后,定时将扫描状态、结果同步至应用安全平台。扫描任务获取:产线环境通过抓取内部cmdb数据,每天发送扫描1次;办公环境通过部署探测节点,每天扫描存活ip发送扫描1次。扫描包括端口、常规漏洞扫描(xss/sqli等)、poc扫描+一款知名漏扫工具,均已集成平台,可在平台下发任务,及时获取最新扫描信息。
资产管理
当发现漏洞时,会将相应的信息录入漏洞管理,同时邮件通知相应责任人和直属领导,并自动同步相应信息至jira创建工单,并在漏洞周期内完成追踪,完成漏洞生命周期管理闭环。
漏洞管理
同时,团队内部不断自驱完善平台功能,提升各项功能自动化覆盖率,减少重复工作,提高工作幸福感。
自动化填充功能(例)
二、辅助发现
1.信息获取
背景介绍:当前所有产品需求均通过jira发起,经过审核后进入研发流程,项目测试、发布均通过测试部门配齐系统。因现有流程采用敏捷开发模式,业务可选择性安全测试,同时应用安全会拉取jira、配齐数据,做项目信息监控。如发现需要做测试项目,会创建安全测试项目并邮件发送相关责任人。
监控项目 | 子项 | 备注 |
JIRA需求管理 | 研发项目 | 评审是否需要安全评审、测试 |
域名申请 | 及时获取资产信息并扫描 | |
提测工单管理 | 统一管理安全测试需求 | |
配齐发布需求管理 | 获取最新发布项目 | 补充途径评审是否需要安全测试 |
Github监控 | 监控代码泄露 | 集成开源hawkeye |
APP安全 | APP自动化加固、签名 | 自研加固、发布对接流程 |
APP安全扫描 | Mobsf二次开发(辅助app隐私合规监测) | |
漏洞预警 | 及时获取最新漏洞信息,并预警 | CNNVD |
Seebug | ||
阿里云 | ||
公众号 |
2.定期内部攻防演练
团队每半年进行一次内外部攻防演练,模拟外部攻击内外部系统。每次演练指定项目负责人,通过团队信息共享、思维碰撞、协作,提升团队整体安全能力和公司安全水平。及时查漏补缺,防患于未然。
3.数据统计
因当前系统功能越来越多,大屏数据展示便于及时发现异常,团队可及时排查保证稳定可靠的安全服务,并且大屏数据是展示安全成果的很好途径,也方便领导视察~
一次逛菜市场,看到了菜市场交易数据总览,先看看菜场关注那些指数。
菜市场大屏
安全大屏展示项:半年度、年度漏洞级别数量;资产信息(域名、ip等)、API(接口)数量、安全测试项目数量,每日域名扫描工单、安全扫描工单、白盒扫描量、黑扫扫描量、App加固数据;每日API扫描数量信息;近期项目信息提醒;漏洞数量分布,漏洞类型分布。
这些数据均是安全关注的指标数据,此外我们还开发了漏洞统计看板,任务看板,方便追踪任务。其中任务看板包含项目扫描信息、接口扫描信息、周期扫描信息、白盒扫描以及各类扫描的修复率,驱动负责人及时完成漏洞闭环。
安全大屏(数据为虚拟)
总结:中小企业安全建设需要服务业务、适配业务,需不断摸索最佳实践。每个公司情况可能都不一样,可以通过交流学习实现符合公司的安全模式。大厂有数量众多的安全人员,完善的安全制度和流程,是中小企业学习的标榜。中小企业安全团队紧凑,人员紧缺及复用的情况比较普遍,对业务上线要求也相应灵活,需从多角度去思考总结经验,照搬可能无法推进,适合公司的才是最好的。