甲方安全建设初探
2023-3-2 13:46:39 Author: ADM安全团队(查看原文) 阅读量:7 收藏

 近期想起自己还有一个公众号已经好久没有运营了,看到上一篇文章的时间还是2022年2月,那时还在和网安的几位兄弟一起学习,在学校里组建团队,一起交流探讨,转眼间已经各奔东西了。这一年来,从校园到互联网公司,身份的转变让我对于安全的理解和认知也有了很大的进步与成长,也正想对学到的一些东西进行总结和归纳,后续会继续更新我的公众号,会涉及漏洞挖掘、安全建设、蓝军攻防等方面,并不断提高文章质量,和师傅们交流分享一些工作学习上的心得。

    笔者现在在一家甲方互联网公司,在这里我接触到了很多之前在学校没有见闻的知识,关于安全建设和漏洞治理。笔者经验有限,对于一些知识的理解可能存在误区,希望师傅们可以及时指出。

01

甲方安全建设初探一-SDL基本框架

以我现在的理解,SDL(Security Development Lifecycle)简而言之是将安全嵌入到开发过程中去,与开发流程同步推进,将安全问题左移,有效化漏洞治理,建立流水线的日常安全任务,保证安全纵深覆盖。

具体分为了如下几个阶段:

①培训阶段:安全培训是整个SDL生命周期的起点,是安全建设的基石。对企业员工进行安全意识培训,可以让员工了解基本的安全知识,提高员工整体的安全意识,可以应对一些网络钓鱼攻击、员工操作失误导致企业数据泄露、安全硬编码等等问题。

②需求阶段:在需求阶段通常需要做的工作有确认安全需求、创建质量门槛、安全和隐私风险评估。

③设计阶段:确定设计需求、分析攻击面、威胁建模;这里很主要的一点是威胁建模,威胁建模是在需求设计阶段的一项识别和削减威胁的重要手段,微软提出了“STRIDE”的威胁建模方法,它可以将不同类型的威胁分类,简化整体安全交流。

企业做好威胁建模能够很好的识别体系化的结构缺陷,节约组织安全能本,落地DevSecOps文化,并满足合规需求。

④实施阶段:实施阶段是针对开发时可能存在的安全风险,使用批准的工具确定安全的版本,弃用不安全的函数避免安全隐患,并对代码进行静态分析。

⑤验证阶段:验证阶段包括动态安全测试、模糊测试和攻击面评审,动态安全测试补充了静态安全测试的不足,在测试阶段对程序的安全进行验证。

⑥发布阶段:制定安全响应计划,以便正在发生问题时能够及时找到对应的人员进行漏洞修复,最终的安全评审时在发布前仔细的检查对软件执行的所有安全活动,发布归档时对各种问题和文档进行存在,为紧急响应和产品升级提供帮助。

⑦响应阶段:执行安全应急响应计划。

02


甲方安全初探二-DevSecOps

我理解的DevSecOps和SDL的区别是,DevSecOps更加偏向于自动化去完成SDL流程,借助安全工具去减少安全团队的投入成本,在不影响效率的前提下提升软件系统安全性。

在理解DevSecOps前,我们先来了解DevOps

DevOps是DevSecOps 的前身,DevOps主张在软件开发生命周期的所有步骤实现自动化和监控,缩短开发周期,增加部署频率。DevOps的核心价值是快速交付价值,灵活响应变化,相应的,DevSecOps的价值是在不牺牲所需安全性的前提下,快速和规模地交付安全决策。

企业在推进DevSecOps之前,需要完善DevOps流程,才能更方便的落地DevSecOps。
DevSecOps 的目标是在不影响效率的前提下提升软件系统安全性,使两者能够相得益彰。DevSecOps相对比SDL等更强调自动化,所以相关安全动作通常由安全工具实现,同时安全动作不再只是安全团队执行。

DevSecOps主要分为10个阶段,分别是计划(Plan)、创建(Create)、验证(Verify)、预发布(Preprod)、发布(Release)、预防(Prevent)、检测(Detect)、  响应(Respond)、预测(Predict)、适应(Adapt),其中预防(Prevent)在之前的版本里也有叫做配置(Configure)。

①计划:计划阶段包含了SDL模型里培训、需求、设计等几个阶段,

②创建:创建阶段主要就是指编码阶段。

③验证:验证阶段其实就是测试阶段,主要以AST(自动化的应用安全测试)和 SCA(软件成分分析)为主。  应用安全测试主要分为DAST(动态应用安全测试)、SAST(静态应用安全测试)、IAST(交互式应用安全测试)。

DAST动态应用安全测试就是常见的黑盒扫描,在测试阶段接过测试流量对其进行黑盒扫描,也是过去最常用的一种应用测试方式,比如我们常见的 APPSCAN、AWVS等 Web 漏洞扫描器就是属于这种类型。

SAST静态应用安全测试是针对源代码的一种分析测试方式,也就是白盒扫描。常见的 Coverity、Fortify Static Code Analyzer、CodeQL 等自动化静态代码审计工具就属于这个类型。

IAST交互式应用安全测试,是一种灰盒测试方法,是将黑白盒进行结合,通过插装部署Agent,在测试部署环境时插入探针,在测试过程中获取请求、代码数据流、控制流等,然后进行综合的判断分析是否存在漏洞。工具分为扫描器端和agent端,Agent端用于收集web应用的运行信息,扫描器端用于处理插件产生的请求信息,并完成整个IAST扫描逻辑。

(图片为OpenRASP的IAST扫描架构图)

SCA软件成分分析主要是关注应用中引入使用的第三方组件的情况。组件漏洞所带来的影响是巨大的,目前企业内越来越多的应用程序由开源代码组成。为了能在漏洞爆出的第一时间对企业的资产进行快速的应急响应,企业需要提前对其资产进行软件成分分析,从而能够快速定位到漏洞组件所在的软件应用,以此消除第三方组件带来的安全风险。

④预发布:预发布阶段一般是测试阶段及正式发布阶段的中间阶段,在DevSecOps工具链中预发布阶段主要包含有混沌工程(Chaos Engineering)、模糊测试(Fuzzing)、集成测试三个安全动作。

⑤发布:针对发布阶段,在DevSecOps的流程中主要动作是软件签名,与预防阶段结合来看,主要是软件防篡改。

⑥预防:该阶段主要包含有签名验证、完整性检查和纵深防御。

⑦检测:从预防阶段,就已经从开发切换到运维阶段,而检测阶段则更符合传统安全中相关的安全监控动作,该阶段主要包含有RASP、UEBA、网络流量监控、 渗透测试几个安全动作。

RASP(应用运行时自我保护),RSAP将自身注入到应用程序中,与应用程序融为一体,实时监测、阻断攻击,使程序自身拥有自保护的能力。RASP的注入方式类似于某些IAST,但其更强调的是安全防护和阻断能力。

⑧响应:在DevSecOps的响应阶段,安全动作主要包含有安全编排、基于RASP/WAF的防护、以及混淆。基于RASP/WAF安全防护是指通过WAF或RASP的方式,针对 Web 攻击进行拦截阻断, 以实现避免由于Web 攻击导致的拖库等后果。

⑨预测:预测阶段主要涉及漏洞相关性分析与威胁情报。

⑩适应:适应阶段主要强调了安全技术债务、修改应急响应方案、安全防御方案等几个点。主要是基于DevSecOps实施的整个流程的情况,进行持续的适配改进和项目调整优化,对应到过去安全动作,可以理解为持续运营反馈调整的过程,包含对相关安全问题的持续跟踪、闭环,对DevSecOps过程中相关安全动作如策略的调整等。

    DevSecOps落地实施困难,需要开发团队、测试团队、安全团队和运营团队的融合协作,笔者也是刚刚接触学习,对里面一些环节的落地细节的认知还不够全面,想要做好甲方安全建设,需要安全团队具有丰富的实际经验以及其他部门的协同配合。


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMzIwMTE5OA==&mid=2247484767&idx=1&sn=16304e4e42216c36128b775d4d490c8a&chksm=c251511ef526d8082080f2b1700e2f8c9be4c3df7f9f534151cb77ac0dd81dadc01f18e4a6f0#rd
如有侵权请联系:admin#unsafe.sh