低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Lars Kurth 谈开源安全流程之一:云安全

2015 年 12 月 20 日

【编者的话】随着云平台的日渐流行,其面对的安全问题也越来越严重。近日, Xen Project 的顾问委员会主席 Lars Kurth 分享了其对开源安全流程的理解和看法。作为该系列文章四部分的第一篇,本文介绍了 Lars 对于云安全背后的理论。

随着去年的 Heartbleed 以及最近的 VENOM 漏洞的出现,运行互联网服务和云系统的软件遇到了前所未有的威胁。很多人认为,如果要保证软件尽可能的安全,就需要减少程序暴露给攻击者的攻击机会。然而,现实情况远非如此。其关键在于 IT 团队真的需要判断攻击者是否知道一个可被利用的漏洞的概率。接下来,本文就通过介绍虚拟和云环境相关风险的本质,来详细阐述上面的观点。一旦有了这样的框架,文章再讨论如何把理论变为现实,从而分析现实问题。

风险的含义以及它和漏洞 / 利用的关系

当人们讨论一个系统是否安全时,非常容易跌进一个二元的陷阱:一个系统要么处于可以被攻破的非安全状态,要么处于完全无法被攻破的安全状态。接下来,为了便于理解,文章反过来先谈论风险的事情。在实际生活中,任何事情都可能存在风险。软件也面临着同样的情况。因此,一个安全的系统指的应该是该系统被攻破的风险相对较低;而一个非安全的系统则意味该系统被攻破的风险相对较高。无论是何种系统,(安全)风险肯定存在,只是不同系统对其容忍程度不同。那么,究竟风险的本质是什么呢?风险又从而而来呢?

在云计算和虚拟环境中,系统的输入和输出是系统恶意负载的主要来源。然而,系统的负载是多样的,而且与用户行为有关。我们不能假设所有的云用户都可以做正确的事情。因此,迁移风险需要依赖另外两项技术:划分(compartmentalization )最小特权原则(Principle of least privilege)

划分是将对虚拟机、进程、用户和数据等资源的访问区分开来,而且在发生问题时帮助隔离。而最小特权原则是将访问权限限制到能保证系统正常运作的最低水平。例如,一个服务器上的常规用户并不需要root 访问权限,或者在某些时候不需要拥有安装软件的权利。

在云计算平台和数据中心中,虚拟机和容器就是划分的最基本形式。它们就是依赖Hypervisor 或Linux 来强制分离最基本权利的“可信域”。接下来,本文就尝试评估攻破虚拟层、访问其他虚拟机或其他容器中的数据或资源的风险。尽管“攻破”可能是最好的描述,它也可能引起误导——从字面上理解,好像需要暴力手段来攻破软件的防御策略。

在现实情况中,这类风险的来源就是_ 漏洞(Vulnerability)_。漏洞指的就是攻击者在一个可信域内能够利用的代码bug 或者配置bug。攻击者在利用漏洞时所使用的代码或者技术就叫做利用(Exploit)。如果系统中存在漏洞,而攻击者又正好知道,他就可以进入系统。而如果系统中不存在漏洞或者攻击者不知道漏洞的存在,他就无法进入系统。因此,“攻破”需要的并不是力量,而是对于漏洞存在的感知和掌握。

评估漏洞以保护系统

如上所述,一个软件漏洞就是一个错误。它可以是代码中的错误(例如,软件行为与程序员预期不相同)或者配置中的错误(例如,软件配置错误导致其行为不符合预期)。当评估系统安全时,这两类错误都需要认真考虑。

以编号为 CVE-2015-3456 的 VENOM 漏洞为例。VENOM 是一个存在于 QEMU 的虚拟软盘驱动器(FDC)代码中的安全漏洞。该代码存在于 Xen、KVM 以及 Virtualbox 等多个计算机虚拟化平台之中。VENOM 漏洞可允许攻击者从受感染虚拟机中摆脱访客身份限制进行 DoS 攻击,并很有可能获取主机的代码执行权限。为了规避该漏洞,Xen 工具栈自动配置 QEMU,使得 FDC 被直接关闭;而 KVM 用户可以手动配置系统,从而不使用 FDC。然而,即使是在这种情况下,QEMU 还存在另外一个 bug,使得 QEMU 中的 FDC 并没有实际关闭。

简而言之,管理员想要避免漏洞攻击就需要关闭一切可以被关闭且没被使用的选项。当然,这样的经验同样适用于软件:为了避免 VENOM 这样的漏洞,Xen 工具栈需要关闭不被使用的大量 QEMU 设备。

IT 团队可以从《行尸走肉》中学习到的东西

在当今复杂的软件环境中,安全漏洞已经成为生活的一个方面。IT 部门需要时刻警惕攻击者进行漏洞的识别和发掘。在全世界任何行业的公司中,该风险都真实存在,并将一直存在。尽管《行尸走肉》中电视剧的场景与现实的技术世界相距甚远,它却能够给公司以强烈的震撼,令其采取行动加强系统防御。

正如电视所演,假设你和你的同事是目前所知的最后存活的人类。你们需要四处逃窜,在旧文明中残喘生存。一旦到一个地方,你们就一直待到该地方的资源使用完毕为止。

以下就是行尸的行动规则:

  • 他们昼夜行动,通常会被声音所吸引。由此,小股行尸渐渐汇聚,最终形成一大波行尸群。
  • 他们非常强壮,可以轻易破门或破窗而入。
  • 然而,他们无法思考,不能识别门、窗户或者墙壁。只有一大波行尸聚集时,才能根据声音自动汇聚到门窗附近或者直接打破墙壁或围栏。

因此,残余的人类就需要保持安静,并确保每一个门、窗户或者任何开放的出入口处于关闭状态,而且防御的墙或围栏足够的坚固和高大。一旦留下任何一个破绽,并被行尸发现,那么故事就结束了。

尽管保卫人员早已知道保证门窗的安全并不是很难,但是人总是会累或者处于焦急状态。因此,即使付出全部的能力,也不可避免会出现一个门或窗忘记关闭。如果够幸运,行尸可能并没有发现。就如行尸一样,计算机的攻击者也在寻找任何可能攻入的“门”,而防御者很难顾及到所有的“门窗”。

小或者简单的门窗是很容易保卫的,而大的门窗就很难去保卫了,对于围栏也存在同样的道理。在给定时间内,修复五个小的窗户可能比修复一个大的窗户要简单很多,因而窗户(漏洞)越小越好

多层保护,又叫“纵深防御”(defense-in-depth),是最好的防御手段。如果你可以保卫附近建筑或围栏的安全,并关闭房屋内的所有门窗,黑客就需要找到若干漏洞才能攻入系统。而且,如果在这段时间内,你还可以加强安全机制,或者添加新的门进行防御。这就是系统架构中“划分”的应用。

在下一篇文章中,Lars 将进一步挖掘安全漏洞以及他们在 Hypervisor 和容器中的区别。读者可继续阅读《开源安全流程——第二部分:容器vs. Hypervisor——保护你的攻击面》

编后语

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


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

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

2015 年 12 月 20 日 16:18959
用户头像

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

关注

评论

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

如何利用数据异构实现多级缓存或者数据迁移

松花皮蛋me

缓存 分布式 分库分表

详解iOS性能优化,安装包瘦身

Usama Bin Laden

ios 源码分析 性能优化 性能 原理

关于「后浪」,ta 们在说什么?

boyzcl

年轻人 系列 后浪

瞎琢磨先生の常用的 linux 命令

瞎琢磨先生

Linux Shell

Redis学习笔记(基础命令)

编程随想曲

redis

准备重读测试驱动开发

escray

学习 CSD 认证实战营

重新认识Go语言中的slice

麻瓜镇

golang

DDD 实践手册(4. Aggregate — 聚合)

Joshua

设计模式 领域驱动设计 架构模式

在今天种下一棵树

陈医僧Ethan

感悟 育儿

关于沟通成本的一些认知

大鱼读书

项目管理 软件开发

系统的伸缩性以及扩展性设计

Janenesome

读书笔记 程序员 架构

年轻人的世界

boyzcl

年轻人 系列

对你来说,阅读是另一种生活的方式吗?

叶小鍵

开通InfoQ写作平台测试

ytl

Redis源码之常用数据结构和函数

心平气和

redis

新人工作的时候遇到问题怎么办

波波

学习 编程 职场 新人

如何对Code Review的评论进行分级

宝玉

代码审查 Code Review

婚姻就是合伙开公司,各自做好自己的工作很重要

鼎玉谷

管理 婚姻 公司 付出 人情

读懂才会用 : Redis的多线程

小眼睛聊技术

Java redis 学习 程序员 编程语言 后端

关于CodeReview的一些思考

Yezhiwei

[读书随笔]从哲学上的问题分类看TDD

老狗

哲学 TDD

我也曾对架构师的力量一无所知

曲水流觞TechRill

技术人赚钱的9个路线

品牌运营|陆晓明

副业 赚钱 技术人 码农 生财有术

Hello World !

ATGU:阿宝哥

Java Hello World ! Info

基于vue(element ui) + ssm + shiro 的权限框架

吴邪

信仰

小天同学

人生 个人成长 思考 读书感悟 信仰

赚钱的6个层次

品牌运营|陆晓明

创业 技术人 赚钱思维 层次 商机

瞎琢磨先生の好物推荐(软件/网站)

瞎琢磨先生

JAVA小抄-000-初始

NoNoGirl

Java

习惯与惯性

伯薇

个人成长 习惯 习惯养成 提升能力

金融「中台」十宗罪

fino星君

中台 企业中台 业务中台

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Lars Kurth谈开源安全流程之一:云安全-InfoQ