写点什么

如何处理开源漏洞

  • 2018-06-24
  • 本文字数:3917 字

    阅读完需:约 13 分钟

本文要点

  • 太多的组织忽视了其开源软件的安全性,使用具有已知漏洞的组件
  • 84% 的攻击发生在应用程序层,而且开源组件占据了 60%-80% 的代码库,因此,组织应该更加要重视这一点以保护其最大的威胁攻击面
  • 开源是一个分布式生态系统,它需要使用与专有软件不同的安全解决方案
  • 只有软件组合分析(Software Composition Analysis,简称 SCA)工具能够识别环境中的开源组件,帮助避免易受攻击的组件进入产品,并在发现新的漏洞时发出可操作的警报。

尽管在 2017 年 9 月的 Equifax 遭受黑客攻击后引发了冲击波,但是业界在保护产品方面仍然有很长的路要走。一个需要关注的关键领域是占据现代应用程序整个代码库 60%-80% 的开源组件。让我们来了解一下如何检测易受攻击的开源组件并确保产品的安全性。

去年 9 月,当围绕着信用评级机构 Equifax 被黑客攻击的新闻流传开来时,世界上大部分的人才突然知道开源漏洞这个概念。攻击者利用了 Apache Struts2 开源组件的一个漏洞,窃取了大约 1.479 亿人的身份信息,其中大部分是美国人。

从表面上看,该公司没有意识到其 web 应用程序中正在使用易受攻击的开源组件,并且没有及时打上补丁以避免受到攻击。

尽管像 Heartbleed 这样的黑客攻击在短时间内吸引了大众的注意力,但是在本次攻击中被窃取信息的数量和质量范围引起了公众更多的关注。

这也给组织敲响了一次警钟,他们有更大的责任来保护那些用于保卫其用户数据的代码,即使这些代码不是他们编写的也应如此。这些代码通常以开源组件的形式出现,可以免费试用,并被开发者出于及时向市场交付产品的目而广泛采用。开发人员依赖开源组件提供的有用功能,如果不使用开源组件的话,他们就得自己编写。据报道,开源组件的使用在不断增长,Gartner 预计,在我们知道并喜爱的大多数产品中开源代码占据了80%。

然而,尽管有这些漏洞,但是开源组件的安全性仍然被太多公司忽视,他们没有意识到这种威胁的规模,甚至没有意识到他们真正使用的开源组件的数量。

缺乏关注的主要原因之一似乎是,这些组织无视开源漏洞是什么、它们是如何被发现的以及他们应该怎样保护自己和客户。

回到最基本的问题:什么是开源漏洞

开源中的漏洞和专有产品中的漏洞类似。这些代码要么是编写出错导致黑客可以加以利用的,要么是允许黑客以开发人员不希望的方式执行有害的操作。

在某些情况下,可以利用开源漏洞发起拒绝服务攻击(denial of service,简称DoS)并使服务下线,而其他更严重的漏洞则可能允许黑客进行远程访问,让他们拥有进入系统的“钥匙”。

然而,开源代码和专有代码之间的相似之处仅此而已。内部代码是由一组开发人员遵循其组织集中指导编写出来的,而开源代码高度分散于编写、修复和维护项目的社区成员中。

集中控制系统和分布式系统常常被称为大教堂(Cathedral)和集市(Bazaar)。开源代码没有一个独立组织的中心设计来规划其逻辑,并且缺乏标准化的系统来解决新特性的添加和修复事宜,它们遵循的是一个不同的、通常更松散的规则集,使得它们更加难以管理。

对于组织来说,涉足这个混乱的领域是很复杂的且难以掌控的,但是对于黑客们来说,开源代码缺乏集中控制则是个福音。很多时候,开发人员会从像GitHub 等网站上的众多存储库中获取源代码,而不会去检查组件是否存在任何已知漏洞。更糟糕的是,很少有人会在其代码库或产品中跟踪开源代码的解决方案。

因此,就像我们在Equifax 的案例中看到的那样,他们并不知道他们正在依赖易受攻击的代码,而且根本不知道这些漏洞的存在,因此也无法为其打补丁。跟很多开发代码的组织一样,Equifax 可能一直在用某个工具测试他们应用程序中的代码,但是,很明显,他们没有一个为分析开源组件而构建的工具。

开源代码的漏洞是怎么找到的?谁在寻找这些漏洞?

静态应用程序安全测试(Static Application Security Testing,简称SAST)或动态应用程序安全测试(Dynamic Application Security Testing,简称DAST)这样的安全工具知道如何与专有代码良好协作。它们采用组织内编写代码的逻辑,使用一组像白名单(Whitelist)这样的规则来查找代码中可能被攻击者入侵的潜在缺陷。

然而,由于开源组件是按照不同的方式搭建的,因此这些工具对于查找漏洞来说用处不大。相反,我们要依靠大量的研究人员和社区成员,他们会花费时间在整个代码中查找漏洞。他们沉浸于代码之中,对代码进行细致检查、尝试各种可能会使程序出错的理论、编写攻击代码,目的就是让应用程序失去保护自己的能力。

尽管他们确实会利用一些自动化工具去找出代码中那些容易找到的漏洞,但是,这个测试过程是一项漫长而艰巨的任务。据估计,研究人员可能平均要花3 个月的时间才能找到一个漏洞

从本质上讲,开源软件是个活生生的、有生命力的实体,由一群开发人员维护,他们贡献自己的时间以构建更好的项目。为了使项目更加健壮,很多社区成员自己花时间来寻找漏洞,当他们发现可能被对社会不满者、罪犯甚至在有些情况下是国家行为者利用的代码时,会提醒项目管理人员。很多这样的研究人员出于对开源代码的热爱和尊敬,为了帮助代码更安全做出了自己的贡献。

然后,那些赏金猎人(用了最好听的方式来称呼他们)为了那些冷冰冰的现金奖励而寻找漏洞。最近几年,一个迷你行业正在兴起,帮助黑客们改邪归正,允许他们利用自己邪恶的本领来做好事。很多像微软这样的大型组织已经为白帽黑客设立了漏洞赏金计划,以用于报告漏洞并获得报酬。

HackerOne 和 Bugcrowd 是为各家公司甚至美国政府运营这些漏洞赏金计划的两大巨头。为了避免错失其中的乐趣,在开源社区里也有一些bug 赏金倡议,它们得到了一些主要参与者的支持。

早在2014 年,Linux 基金会(Linux Foundation)为了应对Heartbleed 漏洞而建立核心基础架构联盟(Core Infrastructure Initiative)计划。他们成功地引进了微软、英特尔、谷歌、IBM、亚马逊、VMware 和许多其他的行业领导者,募集了3 百多万美元赏金。另一个众所周知的开源计划是非营利性 bug 悬赏项目(Internet Bug Bounty,简称 IBB)倡议,获得了脸书、福特基金会(Ford Foundation)以及最重要的 GitHub 的支持,每一家都提供了 10 万美元以支付研究人员。

暴露开源漏洞之后的响应

当研究人员最终在项目中发现漏洞时,会通知相关各方以启动一系列操作。

研究人员首先要做的是,把他们的发现发送给受美国政府支持的非营利MITRE 公司,该公司是维护通用漏洞披露平台(Common Vulnerabilities and Exposures,简称CVE)漏洞注册的机构。然后,MITRE 的工作人员将分析漏洞以确认,并提供关于漏洞的信息。这通常包括严重性评级,漏洞如何被利用的细节,最好还要有到修补程序的链接以便于修复该漏洞。在这个阶段,漏洞会得到一个ID。其中包括被报告的年份和唯一的ID 号码。比如,用于攻击Equifax 的Apache Struts2 漏洞被标识为 CVE-2017-5638

MITRE 维护的 CVE 系统的组织化程度还远远不够,因此,漏洞信息会在国家漏洞数据库(National Vulnerability Database,简称 NVD)上列出,该数据库是一个很好的目录。

与此同时,研究人员还将联络开源组件的项目管理人员,通知他们有问题要处理。在正常情况下,根据公平竞争原则,研究人员在把他们的发现公布于众之前,会给项目管理人员大概 60 到 90 天的时间以找出漏洞的修复方案。幸运的话,项目管理人员会在截止时间前提出解决方案。

在 CVE 公布于众后,所有人都能获得该信息,其成为已知漏洞。这其中包括好人,他们会利用该信息为自己的应用程序打补丁,而那些得到免费信息的坏人,则能利用该信息攻击那些打补丁很慢的公司。

正因为如此,已知漏洞是开源组件的主要威胁。既然大量漏洞的详细信息在 NVD 上免费列出,黑客们为什么还要浪费时间自己去找漏洞呢?

保护你的开源组件

正如我们在这里看到的那样,当涉及开源代码时,安全团队面临的挑战就不是自己在代码里面找出漏洞,而是在已知漏洞变得可用时,他们得做好准备。

要保持这些开源组件的安全,有两件事需要解决。

第一件要解决的事情就是需要掌握在代码库和产品中所使用的开源组件是否包含现有漏洞。如果你的开发人员还没有使用工具去跟踪他们拥有的组件以及那些组件的安全状态,那么他们可能会发现自己跟 Equifax 一样,处于缺乏关键可见性信息的境地。

除此之外,尽管我们可以修复脆弱的“必备”的组件中的问题,开发人员还是应该避免在构建新产品时,使用那些有已知漏洞的组件。这意味着,在把开源组件加入到你的代码库或产品中前,要利用可以检测脆弱组件的解决方案,甚至可以利用自动化策略,如果开发人员试图提交一段有风险的代码时,该策略就让构建失败。

保证产品和产品中内含数据的安全,已经成为客户的期望,因此需要应用正确的工具以在黑客们攻击之前就能找到含有已知漏洞的组件。

由于大量的开源组件在业界广泛使用,开发人员和安全团队需要采用自动化的解决方案来跟踪所有在他们的代码库和产品中用到的开源组件,同时监控像NVD 这样的漏洞数据库以在研究人员发现新的漏洞时接收到警报。

WhiteSource Flexera 这样的软件组件分析(Software Composition Analysis,简称 SCA)工具正是为此目的而设计的,也是应用程序安全策略的重要组成部分,通过这种方式,我们就能赶在黑客的前面,这样的话才能维护客户信任同时保持产品的安全。未能实施 SCA 工具会让组织面临攻击,老实说,没人想成为下一个 Equifax。

作者简介

Rami Sass WhiteSource 的联合创始人兼 CEO,WhiteSource 是领先的开源安全和合规管理平台。Rami 是一位经验丰富的企业家和管理人员,他在定义创新产品、领导技术团队以及把公司从种子级培养到有成熟业务方面有着丰富的经验。

阅读英文原文: How to Deal with Open Source Vulnerabilities

感谢张卫滨对本文的审校。

2018-06-24 11:593582
用户头像

发布了 199 篇内容, 共 93.5 次阅读, 收获喜欢 295 次。

关注

评论

发布
暂无评论
发现更多内容

迈特趣视频创作 SaaS 系统:视频变现新工具

微擎应用市场

零碳园区:绿色转型的关键实践与智慧支撑

开源能源管理系统

开源 能源管理系统

AI 生成内容崛起,内容创作者如何避免被取代?

Wolink

人工智能、 海外营销推广 沃链Wolink 达人营销

数字人超级大师:微擎生态下的高保真 AI 数字人解决方案

微擎应用市场

手把手教你搭建MCP服务器

测吧(北京)科技有限公司

#人工智能 MCP

基于开发者空间云开发环境,使用MateChat+MaaS构建智能对话应用

华为云开发者联盟

MaaS 华为开发者空间 MateChat

DolphinScheduler API与SDK实战:版本管理、系统集成与扩展全指南

白鲸开源

大数据 开源 Apache DolphinScheduler API 管理 任务调度平台

知识图谱与RAG融合实战:用LightRAG极速构建智能问答系统

测吧(北京)科技有限公司

短剧在线播放系统:专业化平台解决方案

微擎应用市场

一键生成完整SpringBoot工程!飞算JavaAI 代码工具如何解决老项目重构痛点

飞算JavaAI开发助手

产研协作必备!一键拆分用户故事,敏捷冲刺规划不要太轻松

职场工具箱

效率工具 产品经理 敏捷开发 在线白板 在线协作

仓颉之反射和注解的神秘力量

华为云开发者联盟

注解 反射 仓颉 华为开发者空间

为什么编码智能体可以重塑开发范式?

Comate编码助手

AI辅助编程 AI 编程 文心快码 文心快码Zulu

拒绝代码纠错不准、原有逻辑被改!飞算 JavaAI 行间预测功能实战解析

飞算JavaAI开发助手

基于开发者空间知识推荐能力,搭建DeepSeek知识集

华为云开发者联盟

DeepSeek 华为开发者空间

AI应用进化论(上):Fabarta个人专属智能体如何找准场景与功能

Fabarta

人工智能 智能体 AI助手

基于开发者空间OpenGauss数据库的PLPGSQL实践一

华为云开发者联盟

opengauss #SQL 华为开发者空间

智慧物流车辆管理平台:全链路数字化解决方案

微擎应用市场

大模型性能测试完全指南:从原理到实践

测试人

人工智能 软件测试 测试开发

开源协同驱动能源管理革新:MyEMS 如何重塑行业生态

开源能源管理系统

开源 能源管理系统

大数据时代的新闻数据分析:舆情研判与决策支撑

沃观Wovision

数据分析 新闻 沃观Wovision

Apache SeaTunnel闪耀2025中国数据库技术大会,荣获「年度优秀技术团队奖」

白鲸开源

数据库 大数据 数据同步 数据集成 Apache SeaTunnel

性能监控与剖析工具全指南:测试开发工程师必备利器

测试人

Apache Flink错误处理实战手册:2年生产环境调试经验总结

Apache Flink

大数据 flink 实时计算

行业分享丨AI赋能流体仿真:从虚拟风洞到智能设计的实践与案例

Altair RapidMiner

人工智能 AI 仿真 CAE hyperworks

25年贵州等保测评机构名单(已整理)

行云管家

等保 等保测评 等保合规

基于开发者空间OpenGauss数据库的PLPGSQL实践二

华为云开发者联盟

sql opengauss 华为开发者空间

从入门到精通:什么是态势感知

沃观Wovision

态势感知 海外舆情监控 沃观Wovision

【新版发布】Apache DolphinScheduler 3.3.1 正式上线:更稳、更快、更安全!

白鲸开源

大数据 开源 大数据任务调度 Apache DolphinScheduler 发版

588次长征征程再添新星!我国成功发射卫星互联网低轨卫星

DevOps和数字孪生

航空航天

如何处理开源漏洞_开源_Rami Sass_InfoQ精选文章