← 最新论文
💻 computer science

Extracting Database Access-Control Policies From Web Applications

本文介绍了 Ote,这是一个利用混合执行(concolic execution)来自动提取并总结 Ruby on Rails Web 应用程序访问控制策略的工具,旨在解决隐式、即时安全实现中易出错的问题,并实现对策略错误的检测。

原作者: Wen Zhang, Dev Bali, Jamison Kerney, Aurojit Panda, Scott Shenker

发布于 2026-07-20
📖 1 分钟阅读☕ 轻松阅读

原作者: Wen Zhang, Dev Bali, Jamison Kerney, Aurojit Panda, Scott Shenker

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

数字丛林的秘密地图

想象一下,互联网是一座巨大且繁忙的城市,每一座网站都是一座充满了房间、文件和秘密的建筑。在这座城市中,数据库是存放所有重要数据(如成绩、私密消息或医疗记录)的巨型保险库。为了保护这些保险库的安全,每座建筑都需要一名保安(访问控制策略),由他来决定谁可以进入哪个房间,以及谁被允许查看什么内容。

通常,这些保安是由人类开发人员编写的。他们将规则隐藏在建筑的蓝图(代码)中,以一种杂乱、分散的方式呈现。他们可能会在一个门上贴上“禁止入内”的告示,在窗户上贴上“员工专用”的便条,或者在走廊墙上留下一个复杂的谜题。这被称为隐式策略(implicit policy)。问题在于,这些零散的线索很容易被忽略,容易出错,而且几乎无法让其他人理解。如果一名开发人员离开了团队,没人能确切知道规则到底是什么了。这就像是通过观察人们玩游戏,试图推断出游戏的规则,却从未见过规则手册本身。本文探讨的任务就是寻找那本隐藏的规则手册,将其清理干净并记录下来,以便让所有人都能清晰地看到计算机实际上被允许执行的操作。


读取代码心智的侦探机器人

请看 Ote,一位旨在破解这些隐藏安全规则之谜的新型数字侦探。来自加州大学伯克利分校和纽约大学的研究团队意识到,试图通过阅读旧版 Web 应用那混乱的代码来寻找规则,就像是在戴着眼罩的情况下在干草堆里找针。Ote 并不打算逐行阅读代码,而是决定直接参与游戏

Ote 使用了一种称为**共形执行(concolic execution)**的技术。你可以把它想象成一个超级强大的视频游戏机器人,它不仅仅是玩一次游戏,而是会玩上数百万次,尝试每一种可能的输入组合。它就像一位侦探,穿梭于建筑之中,尝试每一扇门,检查每一个窗口,并详细记录下按下特定按钮时会发生什么。如果机器人按下按钮 A 后一个秘密文件打开了,它就会记录下:“按下按钮 A 会打开文件 B。”如果按下按钮 A 后什么也没发生,它也会记录下来。

但棘手之处在于:真实的网站规模庞大。如果 Ote 试图检查每一条路径,可能需要花费永恒的时间——也许要好几年!为了解决这个问题,团队注意到这些网站运作方式的一个有趣之处。他们发现,代码中真正决定获取什么数据的部分通常非常简单,就像是一份简短的“如果……那么……”规则列表。其余的代码只是华丽的装饰(比如让页面看起来更漂亮)。因此,Ote 会忽略这些装饰,只专注于核心逻辑。

更棒的是,Oite 拥有一个智能助手(AI 语言模型),充当相关性评判员。当机器人在代码中遇到一个奇怪的分支时,助手会询问:“这对于安全重要吗?”如果该分支只是关于改变字体颜色或显示“非官方”标签,助手就会说:“忽略它!”这让 Ote 免于在死胡同里浪费时间,将原本可能需要数天的任务缩短到了短短几小时。

Ote 的发现:那些“恍然大悟”的时刻

团队在三个真实的应用程序上测试了 Ote:diaspora(一个社交网络)、Autolab(一个用于学校作业的工具)以及 The Odin Project(一个编程学校网站)。他们不仅想看看 Ote 是否有效,还想看看它能否发现人类遗漏的错误。

结果令人惊讶。当团队将 Ote 提取的规则与他们多年前亲手编写的规则进行对比时,Ote 发现了几个漏洞

  1. 过度授权的保安: 在 Autolab 系统中,人类编写的规则意外地允许“课程助教”查看本应处于“禁用”状态的课程中的敏感数据。按理说,只有讲师才能看到这些数据。Ote 立刻发现了这个泄露点。
  2. 缺失的钥匙: 在 diaspora 社交网络中,人类编写的规则忘记了允许访问某些通知和个人资料详情,而这些内容对于应用的正常运行实际上是必需的。如果强制执行旧规则,应用会对真实用户失效。
  3. 沉默的 Bug: 最令人兴奋的发现是 Autolab 代码本身的一个微妙错误。多年前,一名开发人员在设置安全检查时,不小心把列名打错了。代码看起来是在检查学生是否有权查看某场考试,但由于这个拼写错误,该检查实际上处于“无作为”的状态。Ote 提取的策略显示,根本没有任何检查在进行,这引导团队找到了并修复了这个拼写错误。

结论:编写规则手册的更好方式

Ote 并不是保证完美的安全性的魔杖。它承认自己可能会错过一些极其罕见的路径,或者在处理不遵循简单规则的极复杂代码时感到吃力。然而,实验表明,对于现实世界的应用,Ote 非常有用。它能在不到五小时的时间内,提取出一份清晰、可读的规则列表(使用一种名为 SQL 的语言编写)。

论文指出,使用 Ote 就像拥有了一双永不疲倦的“第二双眼睛”。它帮助开发人员了解他们的代码实际在做什么,而不是他们以为在做什么。通过将混乱、隐藏的逻辑转化为一份清晰、显性的规则手册,Ote 帮助团队在安全漏洞演变成灾难之前将其捕捉。它并不会取代人类开发人员,但它为开发人员提供了一个强大的工具,以确保数字保险库始终锁闭严密。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →