QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Lars Kurth 谈开源安全流程之三:开源安全实践 vs 云时代的挑战

  • 2016-01-04
  • 本文字数:2561 字

    阅读完需:约 8 分钟

【编者的话】随着云平台的日渐流行,其面对的安全问题也越来越严重。 Xen Project 的顾问委员会主席 Lars Kurth 近日分享了其对开源安全流程的理解和看法。作为该系列文章四部分的第三篇,本文介绍了若干开源项目以及它们利用云计算进行安全实践的方法,而且讨论了开源安全实践是否适合当今的云时代。读者可阅读《第一部分:云安全介绍》《第 2 部分:容器 vs 虚拟机管理程序—保护您的受攻击面》来了解前两篇文章的内容。

当今绝大部分软件栈都包含了很多不同的层。而在一个层化的软件栈中,人只是其中最弱的一环。由于多个不同的开源项目中的安全漏洞进程并不完全兼容,处理安全问题时真的有可能出现错误。

在云计算中,开源项目处理安全问题一般有两个方法:“全公开”(Full Disclosure)和“负责任公开”(Responsible Disclosure)。这两种方法都是安全漏洞管理流程(Security Vulnerability Management Process)中能够帮助迅速解决安全漏洞的最佳实践。值得注意的是,有关这些流程的争论从来没有停过。本文就这些流程的历史、当今的开源技术是如何利用这些实践的以及他们是否适合云环境等问题进行了讨论。

首先,“全公开”和“负责任公开”这两种流程的区别主要体现在:

  • “全公开”采用尽可能早的公布软件漏洞相关的分析的方式,使得任何人都可以自由的访问这些数据。广泛散播有关漏洞消息的初衷在于,漏洞的可能受害者与攻击者能够掌握同样的信息。
  • “负责任公开”则对于掌握漏洞信息的人群进行了限制,也是目前云编排栈中绝大部分开源项目所采用的方式。该进程十分直接:谁发现问题就和项目的安全团队进行合作,评估并修复该问题。然后,那些开源项目的特权客户就测试并准备软件包来修复漏洞。一旦任何相关的安全问题被公开,这些软件包就被发布给广大用户,修复漏洞。“负责任公开”所采用的基本工作流和步骤如下图所示。

(点击放大图像)

尽管具体细节有些不同,这两种进程都非常鼓励安全问题的发现者能够将其发送到相关项目安全团队的邮箱,而不是出售或自己使用来获得非法利益。此外,他们的目的都是尽可能快的修复安全问题,并确保从发现问题到应用修复补丁中间的时间尽可能的短。最后,二者都是试图保证绝大部分用户能够尽可能快的应用补丁包。

在云中处理安全问题有何不同?

尽管绝大部分云项目的安全实践都准守上图中的基本架构,他们之间仍然有一些明显的不同之处:

  • 是否所有的漏洞或一些漏洞采用“负责任公开”方式;
  • 在一个漏洞被公开之间,优先收到通知的用户(特权用户)列表;
  • 判断一个用户是否在优先通知的邮件列表中的标准;
  • 决定一个用户是否在优先通知的邮件列表中的应用进程;
  • 特权用户列表是否被公开?
  • 在收到安全问题的通知后,特权用户所能采取的行动;
  • 从发现安全问题到通知特权用户的典型时间间隔;
  • 从发现安全问题到通知所有用户的典型时间间隔;
  • 项目发布安全问题的方式;
  • 是否 CVE 号应用于所有或者一些安全问题;
  • 是否存在一个专门的地方展示以往的安全问题;
  • 是否安全问题可以在代码提交或其他项目部门中被追踪。

绝大部分的不同都可以根据开源项目的操作执行效率、对于整个社区的公平性、信息的透明程度以及项目安全进程的操作等进行分类。尽管这些区别看起来有些脱离基本的流程,每一个不同都对云项目的用户有着巨大的影响。

“负责任公开”的 Distro 模型和云模型

首先,考虑两个典型的问题:哪些用户应该成为特权用户,特权用户在收到预先通知后能进行哪些操作。这两个问题和安全漏洞管理流程的目标紧密相关:

  • 确保问题公开之前修复方案已经准备完毕;
  • 确保下游的项目和产品能够在其环境中应用并测试修复方案。

在著名的负责任公开的 Distro 模型(“Distro Model of Responsible Disclosure”)中,只有创建上游项目版本的厂商才能成为特权用户。这些用户所提前收到的信息也只能被用来提出和测试修复方案。

由于该模型不允许使用开源软件的服务提供商马上开始计划升级方案,托管、云服务及其用户在安全问题公开后马上就会面临安全威胁。而且,在禁令结束前,该模型不允许使用软件的服务提供商部署升级。

为了使得安全流程能够更多的满足云计算的需求,Xen Project 首先采用了一种新的安全漏洞流程——负责任公开的云模型。在该模型中,共有云服务的提供商也成为了特权用户。而且,用户预先收到的信息可以被用于计划设计方案、通知客户或者部署升级。 OpenStack 也提出了类似的模型。

云项目安全实践概况

下表列出了不同开源项目所使用公开安全问题的方法。

尽管 Linux 的不同版本长期以来都遵守负责任公开的方式,一个超级复杂而又很难理解的网页负责处理 Kernel 和 Distro 安全的不同方面:

  • Kernel 安全:处理 kernel 安全问题,目的在于尽可能快的修复并公开安全问题。
  • OSS 安全:公开的列表,其初衷在于讨论和处理已经存在的弱危险性安全问题。
  • OSS 安全 Distro :私有邮件列表,其成员局限于操作系统版本的安全联系人。采用负责任公开的方式,初始用于处理中高危险性的安全问题。
  • 此外,每一个 Linux 版本都拥有自己的安全团队,采用一个或多个上面的方式来处理安全问题的不同方面。所有软件包的安全问题会形成一个独立的版本。

结论

尽管云计算已经普遍存在,目前的绝大部分开源项目仍然遵循着负责任公开的 Distro 模型。此外,CoreOS、Kubernetes 以及 Cloud Foundry 等很多新的开源项目也只局限于让发现者报告安全漏洞问题。这反映出,很多开源软件项目的成员首先关注的代码开发,然后才会考虑到安全问题。

当今绝大部分软件栈都包含了很多不同的层。而在一个层化的软件栈中,人只是其中最弱的一环。由于多个不同的开源项目中的安全漏洞进程并不完全兼容,处理安全问题时真的有可能出现错误。解决该问题的唯一途径就是建立一个全兼容的、工业界普遍采用的、考虑到云和服务提供商需求的最佳实践。

编后语

《他山之石》是 InfoQ 中文站新推出的一个专栏,精选来自国内外技术社区和个人博客上的技术文章,让更多的读者朋友受益,本栏目转载的内容都经过原作者授权。文章推荐可以发送邮件到 editors@cn.infoq.com。


感谢董志南对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2016-01-04 16:231375
用户头像

发布了 268 篇内容, 共 127.1 次阅读, 收获喜欢 24 次。

关注

评论

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

学习方法

Tiger

28天写作

发射、加速与着陆:一群科学家的奥林帕斯探索之旅

脑极体

再见 Typora!这个开源的 Markdown 编辑器爱了!

JackTian

程序员 写作 Typora 编辑器 markdown编辑器

全链路压测系列(一):认识全链路压测

老张

性能测试 全链路压测

Golang中的runtime包

liuzhen007

28天写作 12月日更

Linux之whereis命令

入门小站

Linux

DataPipeline正式加入中国信通院数据库应用创新实验室!

DataPipeline数见科技

数据库 中间件 数据融合 数据管理 信通院

[架构实战营]模块4作业

Vincent

「架构实战营」

给弟弟的信第24封|盲目的努力没有用

大菠萝

28天写作

什么是 DID 身份,为什么需要 DID

Rayjun

区块链 did

全链路压测系列(二):方案调研和项目立项

老张

性能测试 全链路压测

学生管理系统详细架构设计

swallowluo

架构实战营 「架构实战营」

架构训练营 -- 模块四

LJK

#架构训练营

在线JSON转Go Struct工具

入门小站

工具

56 K8S之Kubernetes监控

穿过生命散发芬芳

k8s 28天写作 12月日更

.NET6新东西---TryGetNonEnumeratedCount

喵叔

28天写作 12月日更

HarmonyOS(鸿蒙)——滑动事件

李子捌

28天写作 21天挑战 12月日更

区块链在电动车产业中的角色

CECBC

全链路压测系列(三):技术改造和测试验证

老张

性能测试 全链路压测

语音信号的时域分析

轻口味

28天写作 12月日更

设计千万级学生管理系统的考试试卷存储方案

ren

#架构实战营

Reactor模式和Java NIO

Java·课代表

Java reactor 设计模式 网络编程 nio

代码实验01:main 方法可以继承吗?

Seven的代码实验室

阿里二面 main方法

关于分布式系统共识的思考

yuexin_tech

分布式

性能基础之理解Linux系统平均负载和CPU使用率

zuozewei

Linux 性能测试 计算机原理 12月日更

微服务划分的思考

无心水

微服务 微服务架构 SpringCloud 注册中心 微服务划分

Tinder系统架构

俞凡

架构 大厂实践 Tinder

重载(overload) 和重写(override) 的区别?重载的方法能否根据返回类型进行区分?

海拥(haiyong.site)

28天写作 12月日更

Springboot国际化消息和源码解读

DoneSpeak

Java spring springboot

Trino应用Iceberg Catalog写入数据原理分析

漫长的白日梦

数据湖 iceberg trino

MySQL的死锁系列- 锁的类型以及加锁原理

程序员历小冰

MySQL 死锁 28天写作 12月日更

Lars Kurth谈开源安全流程之三:开源安全实践vs云时代的挑战_安全_张天雷_InfoQ精选文章