zoukankan      html  css  js  c++  java
  • 权限再次授权permission redelegation Android

    本片文章是翻译的国外研究论文,主要讲的是android中的权限再授权漏洞的问题。可以通过IPC检测机制,防止低级别的应用程序通过高级别的应用程序获得相关的权限。

    1.Permission Re-Delegation

        权限系统(Permission system)会阻止应用程序执行用户不希望执行的活动。我们关注的是发生在user-controlled resources上的攻击,这些是被用户授以权限所保护的资源。比如说camera还有GPS这些设备都是user-controlled resources,日历和联系人列表这样的私有数据也是,而像内存或者是某个应用程序专有的数据库就不属于这类资源。

        权限再次授权是这样产生的:拥有某个权限的应用程序代表另一个没有这个权限的应用程序执行一个特权任务。这是一种混乱的代理攻击或者是扩大权限攻击。在这种情况下,用户通过分配permission从而给deputy分配了authority这两个词不知道该怎么区分了).deputy定义了一个公共的接口将一些功能提供给外面。恶意requester应用程序缺少deputy所拥有的权限,requester向deputy的接口发出请求,致使deputy发起系统API调用。系统将会允许并且执行代理的API调用,因为deputy拥有所需要的权限。这样requester就成功地执行了它并不能直接请求的API调用。如下图所示:

        权限再次分配能够通过一下三种方式发生:

    第一,一个应用程序可能偶然地将内部功能暴露给其他应用程序。

    第二,一个“混乱”的deputy可能有意将一些功能暴露出去,但是攻击者用一种意想不到的上下文环境向功能发出请求。

    第三,开发者想要减弱权限而将功能暴露出去,但是没有能够正确地实行减弱策略,或者是通过与系统策略相违背的方法。

        我们并不能期望deputy的开发者选择其他的安全措施或是实现系统策略。实际上deputy对于系统的安全既没有好处也没有坏处。大多数开发者不是安全方面的专家,他们也不会自己自发地去防止权限再分配,因为权限再分配的结果并不影响deputy本身。

        尽管有些权限是信任deputy的,但是并不是所有的权限都是信任deputy的。应用程序通过用户所允许的权限集被精确地信任,deputy和requester可能拥有不相交的危险权限的集合。预防机制不会允许一个deputy使用requester所请求的权限,除非deputy已经用于那些权限。

        我们想让权限系统拥有这样一种能力:拒绝由deputy代表没有权利的requester所发出的API请求的能力。这样的访问控制机制可以阻止requester执行哪些有副作用或者是通过其他应用程序请求敏感数据的活动。However, we do not address the problem of preventing a privileged application from sharing sensitive data that it has legitimately and independently obtained. We focus on protecting access integrity, whereas improper data sharing is a confidentiality problem. Preventing data leakage is a complementary problem beyond the scope of our work。

    2.场景

    (1)Web

    网站所运用的是相互不信任的原则。当今的浏览器在“同源规则”(Same Origin Policy)下将不同的网站分隔开来,“同源规则”讲的是一个站点的代码不能去访问另一个站点的内容。一般地,我们会阻止网站访问用户的本地资源,但是,随着web应用开始展现出丰富的功能应用,这一点也在悄然变化。

    Web权限再分配会以以下两种方式产生:

    (1)新窗口。在这种情况下,用户在不知情的情况下浏览了恶意网站。恶意网站在新窗口中打开一个带有某个权限的页面。如果deputy website在加载的时候请求了特权API调用,这样恶意网站就成功的进行了一次权限再分配攻击。如果恶意请求网站是通过不可见的child frame加载了deputy,这次攻击对于用户来说是完全不可见的;或者,可以通过在当前活动浏览器窗口之下以pop-under window的形式打开deputy的方式将攻击隐藏了。

    (2)消息

    跟上一个情况一样,用户是在不知情的状况下浏览了恶意网站。恶意网站向deputy发出消息,可以通过postMessage(一种异步client-side消息传递通道)向其他网站提供服务。请求者可以向连接到请求者的新的child frame或者是现有的窗口发送消息。例如,用户向一个video网站永久地授以记录live video的权利,这样做可以向已知的web地址流式传送video。只要video网站被加载,就会自动的开始同时地记录和流式处理。随后,用户访问了一个恶意网站,它通过不可见的child frame加载那个video网站,结果就是,浏览器在没有告知用户的情况下开始记录流式live video。整个过程就是权限再分配。

    2.智能手机

    像iOS,android和windows7这样的智能手机平台都支持第三方应用市场。这些市场的接入成本很低,并不是所有的开发者都是可以信任的。因此,智能手机操作系统将应用视为潜在的恶意软件。智能手机操作系统也提供系统设备(蓝牙,相机,GPS,网络等等)的API。通过用户的允许,智能手机操作系统向应用程序授以访问这些资源的权限。

    Android权限被分成3个安全级别:普通、危险、标记。普通权限可以保护那些会影响到用户使用但是不会伤害用户的API调用,像SET_WALLPAPER;这些不需要用户的允许。危险权限导致应用程序执行一些有害的行为,例如RECORD_AUDIO。标记权限控制对极其危险特权的访问,比如CLEAR_APP_USER_DATA。拥有危险或者标记权限的恶意软件能够监视用户,删除数据,滥用用户的账户等等。

    未完待续。。。

  • 相关阅读:
    Java多线程学习(六)Lock锁的使用
    Java多线程学习(五)线程间通信知识点补充
    Java多线程学习(四)等待/通知(wait/notify)机制
    Java多线程学习(四)等待/通知(wait/notify)机制
    Java多线程学习(三)volatile关键字
    SLAM领域资源链接
    追踪tracking
    orbslam算法框架
    Covisibility Graph
    优化
  • 原文地址:https://www.cnblogs.com/pengwang/p/2127202.html
Copyright © 2011-2022 走看看