11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2008-08-06
  • 本文字数:1727 字

    阅读完需:约 6 分钟

华盛顿大学计算机科学系刚刚发布了 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

2008-08-06 09:47960
用户头像

发布了 225 篇内容, 共 55.3 次阅读, 收获喜欢 43 次。

关注

评论

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

建木持续集成平台v2.5.0发布

Jianmu

开源 DevOps CI/CD Worker 建木CI

一文理解OpenStack网络

华为云开发者联盟

后端 网络

Volcano成Spark默认batch调度器

华为云开发者联盟

云计算 数据分析 后端

面试官:你说你精通Redis,你看过持久化的配置吗?

阿Q说代码

redis aof rdb 数据持久化

优酷 Android 包瘦身治理思路全解

阿里巴巴文娱技术

治理 包大小

Datakit 代理实现局域网数据统一汇聚

观测云

XTransfer技术新人进阶秘诀:不可错过的宝藏Mentor

XTransfer技术

职场新人 职场经验

车白兔:洗车新模式共享自助洗车

车白兔自助洗车机加盟

自助洗车 自助洗车加盟 车白兔洗车

即构「畅直播」上线!提供全链路升级的一站式直播服务

ZEGO即构

为什么生命科学企业都在陆续上云?

阿里云弹性计算

HPC 高性能计算 生命科学 基因测序

AntDB数据库在线培训开课啦!更灵活、更专业、更丰富

亚信AntDB数据库

数据库 AntDB 培训学习 数据库·

升哲科技 AI 智能防溺水服务上线

SENSORO 升哲科技

大数据 AI 物联网

解密安卓微信聊天信息存储

ooooooh灰灰

Go sqlite 微信 后端 SqlCipher

TDengine可通过数据同步工具 DataX读写

TDengine

数据库 tdengine 时序数据库 DataX

车白兔:自助共享洗车机哪家好

车白兔自助洗车机加盟

自助洗车机 自助洗车加盟 车白兔自助洗车

心楼:华为运动健康的七年筑造之旅

脑极体

架构实战营 第 6 期 毕业总结

火钳刘明

超大规模AI异构计算集群的设计和优化

Baidu AICLOUD

大模型训练 异构计算

共享自助洗车24小时不打烊受青睐

车白兔自助洗车机加盟

共享自助洗车 自助洗车 自助洗车加盟

架构实战营 第 6 期 毕业设计

火钳刘明

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

共享智能自助洗车现在市场如何

车白兔自助洗车机加盟

自助洗车加盟 自助洗车市场 共享智能自助洗车

《各行业零代码企业应用案例集锦》正式发布

明道云

共享洗车机多少钱一台?看品牌

车白兔自助洗车机加盟

自助洗车机价格 自助洗车加盟 共享洗车机多少钱

Guava中这些Map的骚操作,让我的代码量减少了50%

码农参上

JAVA开发 Guava java工具包

openGauss内核:简单查询的执行

华为云开发者联盟

数据库 互联网 华为云

Redis+Caffeine两级缓存,让访问速度纵享丝滑

码农参上

redis 缓存 JAVA开发 Caffeine

在shiro基础上整合jwt,可在项目中直接使用呦

阿Q说代码

springboot Java EE 权限验证 shiro整合jwt

应用实践 | 海量数据,秒级分析!Flink+Doris 构建实时数仓方案

SelectDB

数据库 flink 数据分析 Doris 数仓

牛客java选择题每日打卡Day1

京与旧铺

6月月更

如何化解35岁危机?华为云数据库首席架构师20年技术经验分享

华为云开发者联盟

中年危机 经验分享 华为云

如何做到全彩户外LED显示屏节能环保

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏

以分布式信息流控制维护Web安全_REST_Jean-Jacques Dubray_InfoQ精选文章