对SolarWinds事件更深的思考:如何防御供应链攻击
APT攻击愈演愈烈,与SolarWinds相关的安全反思已持续半月,阿里云安全带来了面向供应链攻击特征属性的全面攻防观察,以飨从业者。
后期精彩的APT内网对抗往往依赖于「先从外部撕开」一道口子,对于黑客而言,脆弱的供应链无异于一块「新大陆」,成为击穿「关键基础设施」的最佳切入点。
应用开发方式变革引入供应链风险
随着企业上云,传统的网络边界正在逐渐消失,尤其是突如其来的疫情,更是让几乎所有企业都不得不进行远程办公,员工开始从家庭网络、咖啡厅与企业网络建立连接,企业的IT架构正在从「有边界」向「无限边界」发生转变。
受益于开源软件与成熟的三方产品和服务(COTS)的优势,国内互联网、金融行业快速发展。在COTS模式下,企业可以快速采购到能够满足当前业务需要的生产工具、软件或硬件产品,从而节省成本和时间。
开源软件的蓬勃发展改变了应用开发形态,现代应用的开发人员不再首选自研,而是会看当前业界是否已有成熟的框架或解决方案。
Synopsys公司发布的《2020年开源安全和风险分析OSSRA报告》中指出,当前超过90%的现代应用融入了开源组件,平均每个应用包含超过124个开源组件,其中49%的开源组件存在高危漏洞。
从政府服务到金融机构每个组织都依靠软件来为客户提供服务。嵌入式软件不再仅仅局限于计算机,现在可以控制复杂的电网、交通、医疗硬件、汽车以及卫星,软件正在吞噬整个世界。
在传统边界安全的防护理念下,安全是一个整体,保证安全不在于强大的地方有多强大,而在于真正薄弱的地方在哪里。企业边界无限扩大后,面临的风险会随之增加,边界上任一节点的「安全性」被打破后,黑客就能通过这层信任链路,利用多种APT手段渗透到企业内部,窃取核心数据。
以往企业防护的策略,可以从梳理企业最有价值资产开始,再看资产潜在面临的最大威胁是什么,基于威胁分级、资产分级的方式来循序渐进做治理。
在今天这种企业架构与软件开发形态下,越来越多的商业软件、硬件设备、开源项目被集成到企业的IT基础设施中,从而扩大了潜在的攻击面,让安全防御变得越来越复杂,以及充满着大量「不确定性」。黑客发起攻击不再关注你是谁,只要你与被攻击目标的网络或业务存在关联,就会成为重点攻击对象。
并不是所有的软硬件供应商都自建完善的安全团队,对产品开展软件安全生命周期管理(SDLC)来确保其安全性。三方软件供应商对安全的「漠视态度」,是导致黑客频频入侵「轻易得手」的关键原因。
对于黑客而言,脆弱的供应链无异于一块「新大陆」,成为黑客击穿「关键基础设施」资源投入的最佳「切入点」。
供应链攻击分类
知己知彼,供应链攻击手段有哪些?
如果你不了解黑客是如何对供应链发起攻击的,那么就无法保证其安全。
阿里云安全通过分析历史曾经发生过的126起供应链攻击事件,将相关攻击手段总结为以下15种:
1. 社工开发者账号替换正规应用
对安卓、苹果、三方移动应用商店内提供的应用,浏览器的插件,通过盗取应用开发者账号替换正规应用,以及发布相似名称「仿冒知名应用」,或通过重打包的技术,使用合法的应用程序添加自己的恶意代码,从而散布存在恶意代码的应用。
2. 黑灰产模式推广恶意软件
通过向第三方下载站点、共享资源社区、破解软件联盟等组织投放含有恶意代码的应用,通过SEO优化方式劫持搜索引擎结果,引导大众下载恶意软件。
3. 向开源软件仓库投毒
攻击者通过向主流的软件包管理源(PyPI、Node.js npm、Maven、RubyGems、Docker Hub)投放大量「相似拼写名称」谐音的软件包或镜像,仿冒正规项目,从而让有恶意代码的代码包被安装到开发或生产环境。
4. 以假乱真
攻击者通过分析特定行业内的知名软件、项目名称,抢注对应的域名,模仿官网,所提供的软件下载链接,早已植入了恶意代码。针对国外知名的软件进行汉化,并提供「汉化版」下载链接,也属于该范畴。
5. 入侵官方网站替换下载链接
企业官网通常由WEB应用构成,应用程序相对于其他业务形态更加脆弱,黑客通过应用漏洞控制软件官网后,篡改官方下载链接地址为植入了恶意后门的软件,从而间接控制目标计算机。
6. 劫持正式更新下载地址的域名
黑客通过域名服务商的漏洞,控制域名解析系统,将软件、OT设备用于下发更新通知的域名劫持到了黑客的服务器,通过更新通道将恶意代码植入目标计算器。
7.? 污染网络基础设施的DNS解析记录
利用企业级路由器的已知漏洞或弱口令批量入侵网络设备,修改路由器上的NS解析服务器为黑客所控制的服务器,通过劫持软件用于更新的域名解析记录,从而利用更新通道将恶意代码植入目标计算器。
8. 下载节点缓存、CDN缓存、P2P缓存、城域网缓存,被投毒污染
当前互联网体系下,硬件、软件、物联网OT设备的更新和数据分发,均依赖网络基础设施来承载,当终端客户进行更新、下载时通过网络链路拉取,网络基础设施为了提升效率节省成文,会对一些资源进行缓存。攻击者可通过定向污染缓存来实现投毒,最终攻击终端用户。
9. 入侵官方更新升级系统
软件、硬件产品在发展的过程中,为了提升产品体验、升级能力、修复BUG等,需要进行更新升级,供应商因此建设有配套的更新升级系统。黑客通过自身的攻击能力与掌握的漏洞,对供应商发起攻击与横向渗透,最中取得升级系统的控制权。利用窃取或伪造证书签名的软件更新,将恶意软件带进攻击目标。
10. 入侵软、硬件开发公司,向目标项目的源码植入恶意代码
软件、硬件产品从无到有,需要经历漫长的开发生命周期流程,包括:产品设计、物料采购、开发硬件电路板、代码实现、测试、发布流转等过程。直到产品最终流转到真正要供应链下游终端客户的生产环境。
黑客通过自身的攻击能力与掌握的漏洞,入侵软件、硬件供应商的办公与开发环境,直接向产品代码内植入后门,在设备上预安装的恶意软件 (相机、USB、电话等),实现恶意代码与后门的分发,最终进入被攻击目标的网络。
11. 仓储、物流链路劫持
第三方供应商在针对网络设备、安全设备、智能硬件等物理设备的仓储和交付过程中,为了节约成本,均会采用三方的仓储与物流服务。攻击者通过买通或偷盗的形式,取得于存储在仓库或物流环节中的设备接触机会,通过拆机或替换的方式向芯片或设备固件中写入后门。
12. 供应商预留的远程管控能力和超级权限账号
供应商为了降低售后服务和维护成本,在交付的产品中,偷偷预留了远程管控的功能,供应商可实现对部署在客户环境中的产品,进行远程管理控制。为了维护方便,供应商同时也会预留一些超级管理员、运维、测试等账号。
13. 编译环境,开发工具污染篡改源码,植入后门
攻击者通过对开发者常用的代码开发编辑器发起攻击,通过对开发工具的篡改,以及附加一些恶意的模块插件。当开发者进行代码开发的时候,恶意模块悄悄的再开发者写的代码中植入后门。经过被污染过的开发工具编译出来的程序,或部署到生产业务的源码,都将被植入恶意代码。
14. 应用运行环境、应用组件环境被植入后门
应用软件存在编译型与解释型两种语言形态,解释型的软件代码在运行时,需要依赖运行环境将源码翻译成中间代码,再由解释器对中间代码进行解释运行。攻击者通过入侵常见的JAVA、PHP、Python、Ruby等运行环境的安装包,或向XAMPP、PHP Study成熟的环境软件等,植入后门后直接影响业务。
15. SaaS化上游服务污染
为了收集统计数据,网站管理员通常会在每个网页中添加一个基于JavaScript代码的网站跟踪脚本,来跟踪访问次数和查看流量历史记录。在前端开发体系,有大量优秀的框架供开发者快速实现各类功能,比如:Jquery、Bootstrap、Vue等,开发者为了省事,会直接引用官方提供的CDN地址。当上游的JS代码源被入侵,引用这些三方JS代码的业务,将演变为发起更大规模代理人攻击的跳板。
供应链攻击的应对建议
一、从最关键的供应商开始,将供应商的数字资产纳入全面的、基于真实风险的安全评估体系中:采用攻防实战的方式来验证产品能力,而不仅仅是合规检查。引入更加具有代表性的反向验证体系,以消除供应商网络上,可直接对组织造成业务中断或破坏的安全盲点。
? 对所在组织网络具有重要访问权限的供应商;
? 拥有所在组织「敏感数据」的供应商;
? 制造特殊零件或开发特殊系统的供应商。
二、安全始于可见性,为每个硬件、应用程序持续构建详细的物料清单,从而全面洞察每个硬件、应用软件的组件情况:随着软件行业以「前所未有」的速度发展,开发人员承受着以「更快的效率」和「更低的成本」来交付产品的压力。因此开源软件、开源组件成为了软件生态系统中至关重要的一环,许多漏洞被一层又一层地隐藏在依赖之下,开源亟需更有效的保护策略。为所有应用程序创建SBOM(软件物料清单),可以帮助企业发现当前运行中的程序、源代码、构建依赖项、子组件所依赖的开源组件清单,以检测开源软件组件是否带有已知的安全漏洞或功能漏洞,漏洞披露时可通过清单列表迅速响应排查,最终确保软件供应链中使用的都是安全的组件。从风险管理的角度跟踪和检测开源软件、开源组件的安全态势。
三、尽可能地缩小攻击面、减少碎片化,降低对第三方组件、开源软件的依赖,选择可信度较高,对安全重视的供应商:以白名单形式限制硬件型号的准入和允许安装的软件,以及确保安装最新的安全补丁。通过正规渠道购买、下载的软硬件介质,使用经过验证可信的第三方开源/商业库、算法等,采购安全可信的软件外包服务。
四、慎用对安全态度消极的厂商所开发的软件或硬件产品:建立完整的供应链安全风险管理流程,企业高层为安全第一责任人,并由安全部门统一集中管理和运营。为了让供应商更加注重安全,在采购条款中明确要求,只有产品出具了足够说服力的安全控制证明,才能进入采购体系,并对供应商进行定期的安全抽查。
五、加强信任链路的自主可控能力,全链路加密和验签:要求供应商在提供更新、升级通道的同时,在网络链路中须加入自定义证书的能力(用户自定义密钥BYOK)。同时,代码签名是在软件供应链中建立信任的重要过程,签名和验证体系可以确保程序的执行都是可信、可靠的。
六、提升软件、硬件产品安全风险的发现能力:投入资源挖掘当前企业正在使用的商业软件、开源软件漏洞,将商业软件、开源软件和自研软件同等对待,实施安全开发流程(SDL)的安全审计。
七、减轻已知漏洞的影响:通过产品架构,或在产品设计中内置安全性,部署和启用恶意软件防护和检测能力。在使用了第三方组件的应用服务器侧部署运行时保护技术RASP,网络侧部署WAF,主机侧部署HIPS等防御系统,来缓解已知漏洞的影响。
八、网络和物理环境访问控制、运输安全:软件和硬件分发过程的安全性,物理和网络安全之间没有差距。有时,黑客会选择利用物理安全上的漏洞,从营业厅或车库发动网络攻击。同样,攻击者在寻找进入物理场所入口时,可能会利用网络漏洞来获取物理门禁的访问权限。黑客甚至会在物流运输阶段下手,供应商需找可靠、安全的运输物流公司,以最大程度地减少运输过程中被篡改的风险。
九、软件和硬件具有安全验签能力,物理磁盘默认加密:硬件系统在安全启动过程中会进行验签,如果无法识别签名,系统将不会启动,且磁盘也无法解密。防止黑客向固件或磁盘存储写入后门或恶意代码。
十、联防联控,建立供应链安全联盟以应对系统性威胁,提升企业在遭受供应链攻击时的响应与恢复能力:由单一组织构成的防守阵线显得势单力薄,在关键基础设施如此重要的今天,应对供应链攻击亟需上升至国家、社会层面,成立行业同盟,全面升级联防、联控的体系。