1 企业安全视角下的威胁情报
-
漏洞预警:指软件、组件的0day及Nday的漏洞信息,通常关注名称、受影响版本、风险等级、修复方法、POC或EXP。通过订阅软件官方的更新、安全社区、安全媒介等渠道获取,与内部资产信息进行关联碰撞,评估受影响面及推动修复。
-
安全事件:指公司相关的安全漏洞被外部披露、数据被拖出来挂卖等事件,通过爬取暗网、Twitter、国外社区等获取,一旦发现很可能就是已经被攻击。
-
供应链投毒:指公司使用了植入后门等恶意代码的软件,导致可能会牵连遭受攻击。投毒点包括攻击软件开发工程师、代码仓库、开发环境、编译环境等整条从开发到使用环节的链路,较为典型的有phpstudy-2019、SolarWinds-2020、PyPI代码库恶意软件包-2021。
2 供应链投毒应急响应流程
2.1 收集情报
-
官方渠道:根据公司使用的软件、组件等基础设施而定。比如os层面的centos、Ubuntu、windows等及系统服务,虚拟化技术类软件,DB类,大数据开源组件类等。
-
安全媒介:主流的安全媒介及微信公众号,个人比较推荐TSRC和奇安信CERT,情报信息比较及时也比较全。除此之外还有一些也可以作为常态化关注:
2.2 情报研判
-
资产分级先后排序:抓重点,两拳相害取其轻。将资产进行分级,可参考业务方对业务系统的定级,可以分为:互联网侧资产,内网重要资产和内部一般资产,应急的优先级也从左往后依次降低。在资源有限的情况下,面对每日新增的漏洞和情报,应该制定应急的优先级、范围和必要的操作动作进行支撑,也算是给应急同学一个保障。
2.3 情报处置
-
边界阻断及时止损:通常的做法是在安全设备上进行IOC阻断、IP封禁等操作,也有人称热补丁堵住漏洞或者攻击。前者倒是可以做,后面的做法有待考虑。但及时止损肯定是正确的做法,可执行的动作也比较多,具体需要结合实际情况和场景进行判断。
-
常见情报处置动作:如响应流程图中所示,处置动作可以包括资产查询判断影响范围、边界阻断、NTA拉黑名单创建告警规则、受影响业务加固追踪、整改项验证等内容。其中部分场景可以做成SOAR,实现(半)自动化流程。故在日常的安全运营工作中,应该有意储备这方面能力,为应急止损或消除风险争取时间。
2.4 情报闭环
-
总结沉淀:记录情报处置的前因后果,并进行归档。无论是对事件处理者,还是对后续入职的人员,都是一份值得学习的参考资料,同时也是团队知识和能力的沉淀。
-
反思复盘:按照情报的处理流程,进行演练复盘。流程是否通畅?有不足或不顺的地方,需要完善与优化;执行某一动作时,是否耗时太长?能够自动化的,需要尽快上SOAR,不能自动化的需要写SOP;是否暴露出其他安全建设的薄弱点?未能覆盖的,需要进行安全建设规划并举一反三发现其他薄弱环节。
3 coa供应链投毒背景简介
3.1 最开始无IOC的情报
3.2 含IOC及分析的情报
|
4 coa供应链投毒实战应急
4.1 初级水平
-
出口阻断:在获知IOC的情况下才能操作,须对公司出口进行(统)管控为前提。就一般企业而言,很难有能力分析出IOC,就只能等大厂进行分享。封禁IOC,一般也是通过在防火墙或交换机上做ACL实现,但是交换机上的ACL条数有限且较难管理,须提前规划。
-
人肉排查:主要以人员询问的方式,没有很有力的工具支撑。效果往往取决于责任心,往往花费了时间和精力,效果甚少。即使是没凑效的招,在询问时也需要针对潜在的目标人选,如本次coa是前端相关,直接找前端负责人沟通,请其在团队内部排查并给反馈,可提升排查效率。
4.2 进阶水平
-
指哪儿打哪儿式软件排查:根据公布的受影响组件及版本信息,使用公司内部的SCA工具进行排查,包括coa、rc、react。疑问点在于react,究竟是那个版本受影响?
-
终端中毒情况排查:根据公布的IOC,借助公司edr和sysmon对员工终端进行访问记录排查。范围是有了,但是时间呢?参照IOC开始有请求的时间11–04来进行查看。结果取决于终端的覆盖率和日志传递及解析全路径的有效性,当前没发现有访问记录,但为了确保万无一失,也将IOC同步到覆盖率更高的NTA设备上,并设置检测和告警规则。
4.3 高阶水平
-
横向软件及依赖排查:答案无疑是不够的,若已经通过sca工具进行全面扫描与检查,则可以稍微安心。基础安全工作做得好的情况,会将开源组件当做安全资产进行管理,以应对应急事务。
5 从结果反推企业安全建设能力
5.1 安全能力投射图
-
边界安全防护能力:较为理想情况下,边界防火墙管住对外的业务,只需要对其ACL策略进行运营即可。当遇到供应链投毒的场景,直接在出口禁止对IOC的双向访问。但是实际场景中也存在防火墙管不了的情况,这取决于业务形态、网络位置、防火墙覆盖率等多种因素。统一原则就是尽可能的在出口进行把关,无论是业务系统还是办公网。
-
终端安全能力:指终端上的监控工具或管控软件,比如微软的sysmon或安全厂商的edr产品,对终端日志进行采集及分析。在遇到针对开源组件库进行供应链投毒攻击时,重点考虑研发团队终端访问IOC情况。排查时应注意时间范围,关注的日志一定是要在供应链投毒攻击之前,而不是现在。
-
软件成分分析能力:目前主要有源代码扫描和二进制文件扫描两种方式,源码层面可以读取程序的配置文件信息,比如JAVA的maven文件,最佳嵌入环节在CI过程中,有开源的工具如OWASP DEPENDENCY CHECK,也有不少成熟的商业产品;针对二进制文件扫描,本质就是拆解编译好的文件进行分析,拆解的颗粒度可以到协议、库文件等。另外这两种扫描也可以在同一个场景中进行互补使用 – – 外购软件安全管理,若能够获取源代码,可以直接进行源码层面检测;若供应商不提供源代码,可以使用源码检测客户端工具进行特征采集,再导入源码检测工具中与漏洞库进行识别碰撞出已知CVE漏洞;若供应商不提供源代码,还可以直接使用二进制检测工具进行扫描,从而评估其在开源组件方面的安全性。
-
软件成分资产库:软件成分分析的工程化能力体现,开源组件种类的全面性和准确性依赖于SCA工具的检测能力和覆盖面。比如公司整体业务都走cicd的话,把工具嵌入CI流程中实现自动化是较为高效的。很多业务都还在谈论ip、port、service、process等这些常规的安全资产,不过随着供应链攻击在实战中的频繁出现、国家相关部门的进一步要求,想必开源组件将作为安全资产之一,加入常规安全运营工作。最佳的状态是能通过 “组件-版本”关联到公司的“产品-版本”,通过检索“产品-版本”能够获取该产品中的所有“组件-版本”,这在应急响应场景中十分重要。
5.2 单项能力深广度
-
安全产品能力(深度): SCA工具对于软件中的依赖包、依赖包中的依赖包、程序动态执行时拉取的组件库的检测能力等属于深度(强弱度);
-
安全产品能力(广度):SCA工具对语言的覆盖度,比如不支持C语言但是公司内部有用到,则属于广度(覆盖度);
-
应用实践能力(广度):说直白一点就是落地能力,每个公司的现状不一样、遇到的棘手问题也不一样,及时具备相同的安全产品能力取得的效果也会有差异。基本上取决于基础安全设施,非安全团队的管控流程,安全团队及人员能力等综合问题。
-
企业安全建设需求 -
企业安全威胁简述 -
企业安全架构建设 -
企业安全项目-测试环境内网化 -
企业安全项目-Github信息泄露 -
企业安全项目-短信验证码安全 -
企业安全项目-前端绕过专项整改 -
业务安全之另类隐患 -
应用发布之安全隐患 -
甲方眼里的安全测试
原文始发于微信公众号(我的安全视界观):浅谈企业级供应链投毒应急安全能力建设