1、子芽子芽悬镜安全 DevSecOps敏捷安全技术落地实践探索软件工程安全的两个共识系统一定有未被发现的安全漏洞程序员每写1000行代码,就会出现240个逻辑性缺陷。每个逻辑性的缺陷,或者若干个逻辑性缺陷,最终导致一个漏洞;“缺陷是天生的,漏洞是必然的”。78%-90%的现代应用融入了开源组件,平均每个应用包含147个开源组件,且67%的应用采用了带有已知漏洞的开源组件,软件供应链安全威胁迫在眉睫。现代应用都是组装的而非纯自研现代应用软件的安全风险面开源组件缺陷第三方开源组件现代应用组成成分自研代码Web通用漏洞SQL注入、命令执行、XXE、XSS等OWASP TOP10业务逻辑漏洞水平/垂直越
2、权、短信轰炸、批量注册、验证码绕过等CNNVD、CNVD、CVE等针对现代应用全面风险审查应考虑从第三方开源组件、自研代码通用漏洞、自研代码业务逻辑漏洞等维度综合审计。应用软件安全问题产生-内因 软件规模持续扩大,功能越来越多,越来越复杂 软件模块复用,导致安全漏洞延续 软件扩展模块带来的安全问题Windows操作系统不同版本源代码数量01020304050607080Win NT4.0Win 95Win 98Win XPWin VistaWin7Win10SLOC(百万行)Windows系列代码行数增长率应用软件安全问题产生-外因 开源软件的盛行对应用安全的挑战 开发环境和开发人员对软件安全
3、的挑战 开发者缺乏安全开发的动机 市场和业务要求将交付期和软件功能做主要因素 用户方较少提供安全方面的压力 开发者缺乏相关认知及知识 软件复杂性加大,开发者需要学习更多东西 传统软件开发缺乏针对性安全教育 缺乏有效的安全开发工具 缺乏安全开发配套管理、有效安全测试工具等引用第三方2020年开源安全和风险分析报告应用开发模式的技术演进瀑布模型敏捷模型DevSecOps瀑布式开发敏捷开发DevOps传统SDL面临的安全挑战l业务先上线,安全问题后补救l安全责任过于依赖有限安全团队资源l安全较缓慢,常置于流程之外,当版本更新快时,传统安全手段影响业务交付设计开发测试部署DevSecOps敏捷安全框架
4、莫比乌斯带,寓意无穷大“”,也象征着融合及亘古永恒。DevSecOps新特性l安全是每个人的责任l柔和嵌入研发运维流程,持续循环改进l自动化流程,人更趋向于运营反馈处理l适用于周期较短,迭代较快的业务DevSecOps CI/CD黄金管道CI/CD黄金管道:AST应用安全测试(灰、黑、白)1SCA第三方组件成分分析2RASP运行时应用自保护3红蓝对抗和SRC众测4关键敏捷工具链技术:RSAC2018正式提出“Golden Pipeline”软件流水线实践体系,强调 CI/CD 自动化工具链支撑DevSecOps工具链-AST技术优劣分析对比AST技术系SAST白盒IAST灰盒DAST黑盒误报率
5、高极低低检出率高高中检测速度随代码量依点击流量实时检测随URL、payload数量第三方组件漏洞静态扫描支持运行时支持依赖payload、指纹语言支持区分不同语言区分不同的语言不区分语言框架支持一定程度区分一定程度区分不区分框架漏洞验证利用很难验证利用可验证利用可验证利用使用风险无无脏数据、大流量使用成本高,人工排查误报低,基本没有误报较低漏洞详情代码行数、执行流请求响应、代码行数、数据流、调用堆栈等参数、请求响应DevOpsCI/CD支持较高高低漏洞种类覆盖更偏向应用代码漏洞更偏向应用本身漏洞,难以回显带外也可发现可发现配置、运维、运行时层面漏洞 任何一项新兴技术出现,都有时代的背景和其适用
6、的场景。DevSecOps工具链-IAST技术实践IAST主要关键技术狭义的IAST特指运行时插桩模式,可帮助普通研发测试人员快速完成业务安全测试,精准定位漏洞细节及修复指导。广义的IAST须包含流量学习和日志分析模式,对研发测试等使用人员完成透明,无流程侵入,不依赖应用编程语言注意:IAST比较依赖用户点击流量覆盖的全面性,可通过主动模拟点击技术做补充。DevSecOps工具链-被动IAST技术误报及漏报高于主动IAST无数据重放、无脏数据可处理签名、加密接口被动IAST(动态污点追踪)基于应用插桩探针,Web应用运行过程中,通过实时监控程序的污点数据在系统程序中的传播来检测数据能否从污点源