软件供应链安全,必须从“源”头抓起公众号新闻2022-12-29 10:122020年底,黑客利用SolarWinds的网管软件漏洞,攻陷了多家美国联邦机构及财富500强企业的网络。这场“太阳风暴”让人始料未及。时隔一年,2021年底爆发的Log4j漏洞,更被称为互联网历史上破坏力最惊人的漏洞之一。有报告显示,软件供应链的攻击在过去三年内增加了742%。人们不禁感叹:软件供应链安全问题猛如虎!腾讯开发安全高级产品经理刘天勇一针见血地指出,软件供应链安全这个问题其实折射出了开源组件的安全问题。经过几十年的日积月累,软件开源化不仅成了一种业界趋势,更成为一种文化,甚至改变了整个软件业的面貌。有统计显示,当前全球90%以上的企业正在直接或者间接,甚至是在无意识中使用着开源技术、开源软件。保障开源软件的安全已经成了当务之急。在云计算代,云原生要求软件的研发再提速,同时容器、微服务、DevOps等新的理念、技术又不断加入,使得软件供应链变得越来越复杂,安全问题的滋生在所难免。解决软件供应链安全问题之道,还是要从“源”头抓起:一方面,既然今天黑客更愿意选择从软件供应链安全的缺口,也就是从软件开发阶段就开始渗透、攻击,那么我们就要在软件开发的源头做好防守;另一方面,针对存在的开源软件漏洞或组件不可控等问题,我们更要查遗补缺,严防死守,不能有一丝懈怠。控制好代码来源毋庸置疑,云原生是一种更先进的开发和应用模式,其先进性的一个重要体现就是降低了开发的门槛。比如,以前作为一个程序员,必须具有非常全面的能力,既要了解业务需求,又要会写代码。而现在,有了容器化、微服务、DevOps等,可能程序员本身就不用再掌握那么多的底层技术、开发技巧,很多时候通过直接调用第三方现成的一些模块,或公开的开发组件,就能完成特定程序的开发,效率大大提升。不过也正因为如此,程序员不可控的东西增加了,导致危险的来源也同步增加了。站在一家研发企业的角度,解决软件供应链安全问题的关键就是控制好代码来源。尤其是程序员如果在开发过程中直接使用了第三方的开源组件,就要特别小心。因为现在很多开发的过程中都是直接使用标准化、模块化的工具进行堆叠,所以要对这些开发组件进行必要的安全检测。而对于一般的用户来说,则要守好两条“管道”:一是自己开发的软件,要做好全流程的安全管控和检查;二是直接购买的商用软件或开源软件,在产品上线前,除了要做好组件的检测和代码检测之外,还要在软件供应商的资格准入问题上严格要求,一丝不苟。刘天勇指出,在国内,不同的行业对于软件供应链安全这个问题的重视、认知程度也不尽相同。以互联网、金融等为代表的、软件研发占据相当比重的行业用户,最近两三年受到国内外频发的安全事件的启示,加快了软件供应链安全建设。其实与商品的供应链相比,软件供应链并不是很长,其安全症结集中而突出,就是能不能完全掌控软件的所有开发组件。近些年,随着使用开源组件的范围越来越广,频率越来越高,开源组件的安全问题正源源不断浮出水面。举例来说,如果开发一个APP总计有100万行代码,其中70%是调用现成的开源组件,那么就意味着这70万行代码必须“可信”,否则就可能存在安全隐患。如何能够有效地监控到这70万行代码的安全,对很多普通用户来说可能是一个棘手的问题。还有一种可能让用户更担心的情况,就是像0day漏洞。安全人员可能发现了某个组件是有安全漏洞的,但留给企业来修补的时间只有一天甚至几个小时,过了这个窗口期,黑客也许就会大规模地攻入。因此,防御未知漏洞还是一项十分严峻的挑战。安全防线前移以前一提到安全,人们最先想到的就是杀毒软件、防火墙等。但这些都是在应用部署之后的运行阶段所做的防御措施。解决软件供应链安全问题,安全防线还要再前移。这也是业界提出“安全左移”“开发安全”以及DevSecOps等概念的初衷,其本质都是希望在应用上线前就最大程度地消除安全隐患。刘天勇解释说,安全左移代表的一种技术理念,是将安全的检测和防御从应用上线之后向左移动。如果将一个软件的生命周期由左至右来排列,那么最开始是软件的需求设计,然后是程序员的编码、测试、发布上线,最后是运营。以前的安全防御集中在运营阶段去做,就像是看病,要得了病以后再去医院治疗。而安全左移意味着,要提前做好预防工作,特别是在引入了第三方开发组件的情况下,“安全左移”就更具必要性。而DevSecOps代表着一种研发模式,更多地强调,在这种新的研发模式之下,安全防御手段也要与时俱进做出调整,不管是在开发还是在测试阶段,或其他阶段,所有人都要为整个应用的安全负责。因为现在应用的研发迭代非常快,不可能再像以前那样一道工序接着一道工序按部就班。只有将安全体系的建设放到应用上线之前,才能事半功倍。很多时候,我们在谈到开源软件时,关注的都是对研发效率的提升或其他优势,比如站在巨人的肩膀上研发,可以省掉大量重复劳动,能够把更多精力和时间放到攻克技术难关上,更好地实现共享等。但我们容易忽视的是,开源在某种意义上意味着责任不清晰。比如,你在使用开源软件时,可能免费地拿来就用,一旦其中隐藏着安全隐患,这个责任又该谁来承担呢?这就涉及到一个严肃的话题,即开源组件的权限权益、责任边界以及如何合理地进行使用。这不是一个单纯的技术问题,应该上升到整个公司的研发标准、策略和规范层面,再往上可能会涉及到国家安全。所以,对于开源组件的安全使用一定要有明确的规范和准则。二进制SCA另辟蹊径既是软件开发者,同时又是安全解决方案提供商,腾讯的“双重身份”让它在软件供应链安全这个问题上看得更加通透,解决起来也更加得心应手。“腾讯在软件供应链安全上有自己独特的技术思路。”刘天勇如是说。在软件上线之前,要检测清楚到底使用了哪些第三方的开源组件,是否存在安全隐患。针对这个问题,业界目前有两大技术流派。一派是检测源代码,即源代码SCA(Source Code Analyzer,源代码分析)。大多数主流安全厂商都采用这一思路。腾讯则另辟蹊径,是从源代码编译构建的产物,也就是制品或者说二进制构建产物切入的,是在代码编译之后,检测其编译后的产物,以得到软件供应链的组成成分。两者的区别在于,源代码侧技术难度相对较低,但弊端在于,它可能会忽略编译过程中引入的新问题, 难以解决一些间接依赖问题;而二进制分析技术是编译之后再去检测,无需源代码,使用起来也更简单,而且可以把在编译过程中引入的其他问题,如和编译器相关的软件供应链风险扫描得更全。这也是腾讯选择走二进制SCA技术路线的原因。“我们之所以选择二进制SCA这条路线,主要因为腾讯在此领域有比较深厚的技术积累。”刘天勇介绍说,“腾讯安全科恩实验室积极布局物联网、车联网安全,其技术实力和研究成果达到国际领先水平。自2016年以来,实验室连续5年发布多个知名品牌网联汽车安全研究成果,助力厂商修复安全问题,并构建全面的安全体系。现在,将这些技术应用于软件开发,其本质是一样的。因此,腾讯安全在二进制SCA方面筑起了高技术壁垒。”目前在国内安全厂商中,腾讯是唯一一家在软件供应链安全实践中,从制品角度去检测整个第三方开源组件的厂商。在国外,采用与腾讯相同技术路线的厂商屈指可数,它们有的是从源代码扫描领域拓展而来,有的本身并不是安全厂商,而是做制品库管理的。但是异曲同工,二进制SCA是确保软件供应链安全的一条捷径。保障软件供应链安全,腾讯安全能够提供包括SCA、SAST等工具在内的一系列检测产品,同时还可以提供专家咨询服务,协助客户落地相关体系。“在DevSecOps的概念之下,腾讯针对广义的软件供应链安全还能提供更多的创新技术和产品。”刘天勇举例说,“最近,腾讯安全科恩实验室就推出了一个模糊测试的解决方案T-fuzz。这样一来,腾讯在源代码扫描、开源组件的成分分析测试、模糊测试等几个维度都有了相应的工具。这些工具再加上专业的咨询服务,就构成了腾讯软件供应链安全的完整体系。”腾讯自己就是二进制SCA最早的使用者和试验田。腾讯在其整个DevOps流水线中集成了二进制SCA扫描产品后,在应用上线之前就完成了整个开源组件的检测。腾讯内部有一个专家团队,负责实时维护开源组件知识库,能够第一时间发现漏洞,并及时通知相关的业务团队,快速完成应急响应处理。作国中国信息通信研究院软件供应链安全实验室(3S-Lab)首批成员单位,腾讯安全的二进制SCA产品应用实践入选了2022中国信通院守卫者计划——“软件供应链安全”优秀应用案例,这是腾讯安全与上汽集团子公司零束科技开展“产研结合”的重要成果之一。该产品基于先进的二进制软件成分分析能力,在供应链安全管理、软件生命周期(SDLC)管理、关键基础设施安全、发布合规检查等各类场景中,实现了已知漏洞扫描、开源软件审计和敏感信息检测。同时,腾讯安全的代码安全检查工具Xcheck通过了《静态应用程序安全测试工具能力要求》评估。Xcheck采用创新的技术路线,摒弃了传统SAST工具主要依赖规则匹配的技术原理,基于成熟的污点分析技术与对抽象语法树的精准剖解,实现了快速精准的识别代码风险。新赛道 新标准当前,关于软件供应链安全整个业界还没有一个统一的标准。2022年上半年成立的“软件供应链安全实验室(3S-Lab)”,旨在联合政产学研用多方力量,进行软件供应链安全关键技术的研究,同时完善标准体系建设,开展测试评估。包括腾讯在内的很多安全厂商都加入了这一实验室,致力于联合推动软件供应链安全产业的发展与创新。据了解,实验室在成立后,已经发布了一个SBOM软件物料清单的管理标准,为下一步工作的开展开了一个好头。“从当前的市场需求和应用场景来看,软件供应链安全还处于早期市场教育阶段。对安全比较重视的公司已经在着手填补此领域的空白。而大多数公司还没有开始行动。”刘天勇表示,在对开源组件进行检测的过程中,有两个细节需要特别注意。第一,在发现开源组件存在安全隐患后,应该如何进行修复?因为开源代码通常不属于开发者,在发现问题后,只能寄希望于开源组件的拥有者,能够及时发布更新的版本,然后开发者再进行替换。第二,开源组件如果有未知漏洞,该怎么办?随着开源软件的名气越大,使用的人越多,如果开源组件有未知漏洞,那么可能造成的危害就越大。“0day漏洞,再加上软件供应链安全这个‘放大器’,危害结果很可能是1+1>2。Log4j之所以震惊世界,也是与此相关。”刘天勇解释说。腾讯安全非常看好软件供应链安全这条新赛道,这将是一个巨大的增量市场,也能够充分体现腾讯安全的核心竞争力。腾讯安全已经在该领域处于领先地位,其产品的可行性、可靠性也得到了市场的全面验证。下一步,就是要开展大规模的商业应用。“从公司内部自研自用的产品,到全面走向市场的适用于各行各业的标准化产品,我们在软件供应链安全产品层面,还有很多标准化的工作要持续做下去。产品完善的过程需要循序渐进,不可能一蹴而就。”刘天勇表示,“未来,我们会不断加强软件供应链安全方面的防御对策和手段,并在行业标准的制定上贡献自己的力量。”往/期/回/顾见证安全新力量!首届腾讯数字安全创新大赛收官以标准化促进数字化 腾讯标准“两手抓”“藤”缠“树”,腾讯安全与青藤云安全发力主机安全微信扫码关注该文公众号作者戳这里提交新闻线索和高质量文章给我们。来源: qq点击查看作者最近其他文章