InfoQ

新闻

以分布式信息流控制维护Web安全

作者 Jean-Jacques Dubray 译者 郭晓刚 发布于 2008年8月6日 上午9时47分

社区
Architecture
主题
规则引擎,
SaaS,
REST
标签
跨站脚本XSS,
Facebook,
Wiki

华盛顿大学计算机科学系刚刚发布了Max Krohn(MIT)所作的一次演讲,题目是“分布式信息流控制维护Web安全”。

Max在演讲中解释说,他观察到一场计算领域的变革正在发生,正从桌面软件向服务器端软件和云计算变迁。

但他提醒道

Web软件是错漏不断的,为攻击者发现和利用。结果技术数据被盗或者被毁坏。

很多人都使用没法做静态分析的动态语言,很随意地使用第三方的代码、插件……照直说吧,为了让网站快速上线运行,我们做了很多草率的拼凑。

他定义了一个有意思的指标来粗略衡量软件的脆弱程度——用代码行数(LOC)除以装机数量。软件安装的次数越多,就像Linux,缺陷被发现及纠正的机会就越大,因此缺陷的数量就会越少。他用了几页幻灯片来列举Web应用的LOC和LOC/装机数量,以此阐明其观点。

Max的研究目标是为新类型的应用和架构定义一个安全模型。像Facebook这类应用允许开发者在平台中插入代码,甚至允许第三方服务器在Facebook平台上提供功能,问题变得更加严峻。

为了应对新挑战,Max和同事一起,以分布式信息流控制(Decentralized Information Flow Control,DIFC)模型为基础,开发了开源Web应用安全基础设施Flume

DIFC这种安全手段,让应用程序的作者能够控制应用的组成部分与外部世界之间数据如何流动。

对于隐私数据,DIFC允许不被信任的软件使用隐私数据,但由受信任的安全代码控制是否透露该数据;同时在数据完整性方面,DIFC让受信任的代码保护不受信任的软件,使之免于意外的伪造输入之威胁。

他们将服务器视为一个黑盒,并在响应构造的时刻跟踪数据。整个安全架构由一个安全网关和一个操作系统库组成,Web应用可使用该操作系统库标记数据。核心思路是把所有安全决策集中在网关,防止不希望出现的数据访问。

典型的Flume应用由两类进程构成。不受信任的进程完成大部分工作,它们受到DIFC控制的约束,且有可能自身并不知道DIFC的存在。另一方面,受信任的进程知道系统中存在DIFC,它们设立隐私及数据完整性控制来约束不受信任的进程。受信任的进程还有特权,可以选择性地违反经典的信息流控制——例如可以解密隐私数据(以导出到系统外),或者为数据完整性做担保。

系统的核心建基于一组相当简单的数据跟踪规则,用标签(Tags and Labels)来跟踪数据。

标签t本身并无内在的涵义,但进程一般会将每个标签与某个加密或完整性的范畴联系起来。举例来说,Tag b可能标示(label)Bob的隐私数据。Label是标签集(tag set)的子集。

如果Flume进程p有一个label是进程q的子集,那么p可以向进程p发送数据。Flume模型假定在同一台机器上运行着许多进程,并且通过消息或“流”相互通信。模型的目标是通过管制进程的通信以及进程label的变化,实现对数据流的跟踪。


图1.通信规则

Max指出这种思路并不是新的,而是从80年代就出现了。

网关是Flume安全架构的关键元素。首先Web应用不需要了解浏览器的任何情况,因为网关能够制定策略。但网关的中心角色使我们需要引入另一种新抽 象:Endpoint。由于网关需要协调多个系统的交互(浏览器、认证仓库、Web应用……),不能向所有的进程公开同一组label。Endpoint 有助于定义特别的label组合,专用于在网关与特定进程间实施通信。

演讲的第二部分集中展现一个基于MoinMoin Wiki的 用例。Max以此用例说明Flume能解决的问题远不止已知的缺陷类型(缓冲区溢出、跨站脚本以及SQL注入)。他演示了MoinMoin Wiki日历功能中的一处安全缺陷,利用该缺陷,原本应该只限于特定用户组的日历条目可以被所有用户看到。而仅仅用了标准策略,Flume就能阻止不该显示的日历内容。


图2.系统调用委托

Max总结说需要做的工作还很多。他们希望使系统更加灵活,以便能够处理Web应用中第三方上传的软件。他们也在研究如何让人们用同样的原则去共享数据。还有计划将触角延伸到浏览器层,把JavaScript纳入到架构之中。Max预见在金融行业会有许多用途。

联网系统的发展越来越需要端到端的安全解决方案,用应用程序代码之外的手段,强制施行数据访问策略,阻止恶意的访问。您的观点如何?是否曾遇到过这类安全问题?您用了什么样的方法解决?

查看英文原文:Securing the Web with Decentralized Information Flow Control

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。