白泽带你读论文|MPChecker

admin 2023年6月5日01:57:48评论50 views字数 4425阅读14分45秒阅读模式

如需转载请注明出处,侵权必究。

论文题目:Detecting Missing-Permission-Check Vulnerabilities in Distributed Cloud Systems

发表会议:CCS 22

本文的第一作者陆杰,中科院计算副教授,主要研究领域为软件测试,分布式系统,程序分析和机器学习。

概述

分布式云系统中存在众多特权操作,包括修改用户数据,更改系统状态等。而由于设计缺陷,对于一些特权操作没有进行适当的权限检查,便会导致missing-permission-check(MPC)漏洞。作者针对这一现象,对95个真实世界的MPC漏洞进行了深入研究,得到一些关键性的发现,提出了基于日志分析的检测方案,并开发出工具原型MPChecker。文章利用6个流行的分布式系统评估了MPChecker。该工具报告了44个新的漏洞,包括43个关键漏洞,1个未公开细节的严重安全漏洞。

背景

分布式云系统正面临着巨大的安全挑战,托管在云平台上的大量宝贵数据会引起攻击者的注意。尽管已经引入了各种安全机制来保障云系统的安全,但广泛存在的漏洞依然可能会被利用。在分布式云系统的所有类型的漏洞中,访问控制漏洞是最普遍和最麻烦的一种[1-4]。分布式云系统由多个组件组成,每个组件都提供一组远程访问的API,用于与用户或系统中的其他组件通信。很多时候,开发者忘记在这些API中引入适当的权限检查,导致系统中出现MPC漏洞。正如在之前工作[5]中提出,不安全的接口和API占云安全漏洞总量的42%。此外,作者对分布式云系统中152个真实世界的访问控制漏洞进行了研究,发现其中62.5%是公共API的MPC漏洞。

关键挑战

  1. 分布式系统中的不同组件往往用不同方式实现权限检查机制。因此,需要大量的人力工作来检查和指定分布式系统中的所有权限检查方法。在HDFS系统中,32.6% 的权限检查是通过直接测试条件语句中的用户变量完成的,无法确定如何识别出这些权限检查。另外,有一些特权操作(60%)在程序中任何位置都不存在权限检查,现有的基于挖掘的方法无法识别这种问题。

  2. 在分布式系统中,权限检查和特权操作往往位于不同的组件中。因此,理解和准确分析组件间的相互作用至关重要。现有工具无法理解组件间的交流,比如RPC,web socket机制等。

贡献

  1. 对分布式系统中的95个MPC漏洞进行了深入研究。作者提出了分布式系统中MPC漏洞的新检测技术。

  2. 作者提出了一种基于日志的分析方法来检测分布式系统中的MPC漏洞。该方法通过推断代表用户和系统状态的变量,自动并准确地发现权限检查和特权操作。

  3. 开发了MPChecker,这是第一个用于分布式系统的MPC漏洞检测工具。该工具在6个真实世界的分布式系统中成功报告了44个新的关键漏洞,误报率为13.7%。

Insight

  1. 在分布式系统中,权限检查是通过检查代表用户的变量来执行的,一般直接在条件语句中,或者包装为API。

  2. 特权操作包括访问用户拥有的数据和关键系统状态变量,需要通过权限检查来保护。

设计

该工具包括3个步骤。首先,通过分析所研究系统的运行时日志及其字节码(目前该工具只能分析 Java 程序)自动推断出与用户和系统相关的变量。接下来,根据推断出的变量集中识别权限检查和特权操作。在最后一步中,那些不受权限检查保护的特权操作如果可以从公共接口访问,则被报告为 MPC 漏洞。

白泽带你读论文|MPChecker

阶段1:推断用户与系统相关变量

用户相关变量识别

规则1:如果变量与用户变量或另一个用户相关变量打印在同一日志实例中,则该变量是用户相关变量。

规则2:如果一个变量的类型与用户相关变量的类型相匹配,那么它就是一个用户相关变量。

在以下几种情况,𝑇𝐴和𝑇𝐵相匹配:

1)𝑇𝐴是一个与𝑇𝐵相同或继承于𝑇的对象类型,2)𝑇𝐴是一个元素类型与𝑇𝐵相匹配的集合,或者3)𝑇𝐴有一个索引字段,其类型与𝑇𝐵相匹配。

系统相关变量识别

作者根据观察发现,与系统有关的变量经常被作为错误条件进行测试。文章考虑以下两种类型的错误提示程序点:1)抛出异常的语句,以及2)紧随故障级日志语句(如Log.error()) 的公共API的返回语句。

阶段2:识别权限检查和特权操作

识别权限检查API

1. API入口处存在权限检查语句作为控制

2. 当权限检查调用受到对其接收对象的空检查的保护时,作者将空检查标记为wrapper权限检查

特权操作检查

对用户或系统相关变量的访问被标记为特权操作。具体来说,那些写入用户或系统相关变量,或泄露用户相关变量的操作都是特权操作。直观地讲,它们暗示着危险的操作,可能会破坏用户数据或整个系统,或者会泄露敏感信息。

阶段3 检测MPC漏洞

如果存在一个从程序入口(公共API的入口)到特权操作的程序路径,并且路径中没有任何权限检查,便将其作为MPC漏洞进行报告。文章将MPC漏洞的检测看作一个经典的IFDS(程序间、有限、分布、子集)数据流问题。将大量程序间数据流问题作为一个广义的图形可达性问题来解决。数据流分析最终得到的结果为真或假,真表示存在MPC漏洞,假则表示没有。在一个公共API的入口处,该值被初始化为 "true",只有通过权限检查才会被设置为 "false"。在一个程序点上,当多条路径汇合时,不同路径上的结果值用∨运算符合并起来。如果分析的结果在权限操作处为true,工具将报告一个MPC漏洞。

例如在下图①处,初始结果设为true,当程序运行进入if分支时,此时的路径为①->②->⑤,而19行处存在未受保护的特权指令,因此这条路径的结果是true。当运行else分支时,此时的路径为③->④->⑤,第七行为权限检查,因此结果设置为false。最终两路结果相并得到True,因此存在MPC漏洞。

白泽带你读论文|MPChecker

实验评估

RQ1.  MPChecker 识别特权操作的精确度如何?

能否准确识别特权操作是工具有效性的关键。下表总结了每个系统的相关变量的数量(第 2-4 列)、特权操作的数量(第 5-7 列)以及派生的权限检查 API 的数量(第8 列)。MPChecker 自动推断出了数以千计的用户相关(第 2 列)和系统相关(第 3 列)变量,访问这些变量会产生数百个特权操作,如第 7 列所示。作者已经手动检查了每个操作,并确认它们都按预期访问了用户或系统相关的变量,因此是确为特权操作。后来的实验进一步证实,这些访问中的大多数都是真正的特权操作:只有 5 次误报是由不正确的特权操作引入的。因为很难自动化地检测是否漏掉了特权操作,作者手动检查了所有属于被评估系统的研究漏洞中的错误触发操作后,发现只漏了一个特权操作,因为它访问了一个未打印在日志中的用户相关变量。

白泽带你读论文|MPChecker


RQ2.  MPChecker 检测 MPC漏洞的效率如何?

下表总结了检测已知漏洞的结果。作者选择了5个Java系统中的所有57个MPC漏洞。在这57个漏洞中,MPChecker成功检测出50个漏洞,漏报7个漏洞,召回率为87.8%。漏报原因包括:跨系统交互、返回clusterID、region等开发者或用户认为无隐私泄露风险的变量、系统本身允许这种特权操作,因此没有设置权限检查。

白泽带你读论文|MPChecker

下表给出了MPChecker报告的44个新漏洞。对于每个报告的漏洞,作者列出了暴露该漏洞的公共API,特权操作的类型(第3栏),相关的变量(第4-6栏),以及涉及的组件数量(第7栏)。

白泽带你读论文|MPChecker


RQ3.  MPChecker 的效率如何?

下表展示了分析每个系统的时间。第1列显示该系统的代码行数 (LOC),第2列给出运行每个系统时生成的日志实例数。可以看到,除了MapReduce(1089),其他系统的日志实例都不到1000个。第3 - 5列分别是每个步骤的分解时间,第6列是总分析时间。大部分分析时间由IFDS求解器在第3步(第5列)中消耗。CloudStack有1764个API,因此分析耗时最长(17.15小时)。Zookeeper可以在3分钟内分析出来,因为它只有7个公共 API。

白泽带你读论文|MPChecker

总结

文章作者提出了工具原型MPChecker,这是第一个用于分布式系统的MPC漏洞检测工具。MPChecker使用基于日志的分析方法来推断与用户和系统有关的变量,对这些变量的访问是特权操作。作者用6个广泛使用的分布式系统评估了MPChecker。该工具在6个流行的分布式系统中检测出44个新的关键漏洞,包括1个未公开细节的严重安全漏洞。

供稿:侯乔聃

审稿:施游堃、邬梦莹、洪赓

排版:边顾

戳“阅读原文”即可查看论文原文哦~

[1] Bharat Bhargava and Leszek Lilien. 2004. Vulnerabilities and threats in distributed systems. In International Conference on Distributed Computing and Internet Technology. Springer, 146–157.

[2] Bernd Grobauer, Tobias Walloschek, and Elmar Stocker. 2010. Understanding cloud computing vulnerabilities. IEEE Security & Privacy 9, 2 (2010), 50–57.

[3] Steve Kosten. 2020. 7 Cloud Computing Security Vulnerabilities and What to Do About Them. https://towardsdatascience.com/7-cloud-computing-securityvulnerabilities-and-what-to-do-about-them-e061bbe0faee.

[4] Bruce Sussman. 2020. Top 4 Types of Security Vulnerabilities in the Cloud. https://www.secureworldexpo.com/industry-news/4-types-cloudsecurity-vulnerability-mitigation.

[5] 2019. United States: Biggest Cloud Security Vulnerability Is Misuse Of Employee Credentials And Improper Access Controls! https://www.mondaq.com/unitedstates/security/822364/biggest-cloud-security-vulnerability-is-misuseof-employee-credentials-and-improper-access-controls.

复旦白泽战队

一个有情怀的安全团队

还没有关注复旦白泽战队?

公众号、知乎、微博搜索:复旦白泽战队也能找到我们哦~

原文始发于微信公众号(复旦白泽战队):白泽带你读论文|MPChecker

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月5日01:57:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   白泽带你读论文|MPCheckerhttp://cn-sec.com/archives/1782783.html

发表评论

匿名网友 填写信息