乐于分享
好东西不私藏

拒绝权限之后,App依然读到了剪贴板:一次让人脊背发凉的安全事件复盘

拒绝权限之后,App依然读到了剪贴板:一次让人脊背发凉的安全事件复盘

事情的起因很简单。

一位用户在酷安找到了123云盘的旧版安装包,复制了链接,准备去浏览器下载。到了浏览器发现需要账号密码登录,他不记得密码,于是打开123云盘App去修改密码。然后——App弹出了一个提示框,上面写的是他刚才复制的那个链接。

他在手机权限设置里明确拒绝了123云盘读取剪贴板的请求。用的是小米澎湃OS3。手机权限记录里清清楚楚写着”123云盘读取剪贴板-已允许”,点进去一看,权限开关仍然是关闭状态。

拒绝不了。记录显示允许,实际权限是拒绝。这是同一个系统给出的两个相互矛盾的答案。

帖子发到V2EX之后,有人说是系统漏洞,有人说是厂商留的后门。这个话题在48小时内收获了将近2000次浏览,评论区吵成一锅粥。顺着这个线索深挖下去,发现这可能不是一个个例——它指向的是整个安卓权限体系在国产定制系统上的结构性失效。


01|他做了什么验证?

这位楼主不是随口抱怨。他做了一套完整的对照实验。

第一步,卸载123云盘,重新安装,在App首次申请剪贴板权限时直接点拒绝。第二步,把手机上唯一一个同时拥有读写剪贴板权限的输入法也拒绝掉。他用的是谷歌拼音输入法——而不是搜狗或任何国产输入法——同时用ADB卸载了小米自带搜狗输入法和小米安全键盘,尽可能排除输入法参与数据中转的可能。

结果:123云盘依然读取到了剪贴板内容。在系统权限记录中,这次访问被记为”成功”,但权限开关指向的是”拒绝”。

他还提到另一个细节:国产安卓中有一项”拒绝访问应用列表”的权限。如果拒绝了这个权限,酷安和TapTap这类应用就无法知道用户手机上装了什么App。但是腾讯应用宝是例外——无论怎么拒绝,它始终能获取完整的已安装应用列表。

安卓有一个权限叫”读取已安装应用列表”,禁用后,应用就只能读到它自己。实测发现,这个权限形同虚设——利用getPackageManager().getPackagesForUid()暴力枚举UID,可以绕过权限获取全部应用列表,该漏洞安卓至今未完全修复。

来源:CSDN技术博客,2019年

这两件事加在一起,指向的不只是123云盘一个App的问题,而是安卓权限管理在国产定制系统上的整体可信度危机。


02|技术层面发生了什么?

要理解这件事,先要知道安卓的剪贴板权限是怎么设计的。

在Android 10(API 29)之前,任何前台应用都可以读取系统剪贴板。Google在Android Q时做过一次收紧——后台应用无法再访问剪贴板,但前台应用只要成为默认输入法或者获得用户授权,依然可以读取。从Android 12开始,每当应用访问剪贴板,系统会弹出提示框告知用户。

这是官方设计。那么”拒绝权限之后仍然读到了”可能来自几条路径:

系统层的隐藏接口。国产定制系统(小米澎湃、华为鸿蒙、OPPO ColorOS等)在原生安卓基础上做了大量修改,其中一些系统级服务拥有超越普通App权限框架的访问能力。如果某项系统服务向特定App开了白名单,App不需要申请权限就能访问剪贴板——权限管理界面显示的是给用户看的”假状态”。

利用AccessibilityService或后台Service。无障碍服务和后台运行服务可以申请更宽泛的权限范围,部分国产App通过这些服务间接获取剪贴板内容,而普通权限管理界面不会显示这些”侧门”访问。

厂商SDK或系统SDK中转。国内App大量集成了手机厂商推送SDK、统计SDK、广告SDK。这些SDK运行在独立进程,拥有独立权限,一些SDK会向合作App提供绕过系统权限限制的数据访问能力。

Android的权限粒度设计存在天然缺陷——”评价时选一张照片上传”和”能操作相册里所有文件”,在权限层面是同一件事。一旦点了”允许”,App获得了对整个相册的读写删权限。安卓13(API 33)引入了READ_MEDIA_IMAGES等细粒度权限,但国内定制系统升级缓慢,大量App仍停留在旧权限框架。

来源:东方财富网,2026年3月

也就是说,”拒绝了但仍然能读取”不一定是123云盘本身的代码在作恶——更可能的是小米澎湃OS3在系统层面给这家厂商开了后门,或者某个系统SDK在背后中转了数据。这是”国产特色安卓”生态里公开的秘密。


03|应用宝的”特权”说明了什么

原帖还提到一个细节:拒绝”读取已安装应用列表”权限之后,酷安和TapTap就不知道手机上装了什么App,但腾讯应用宝始终知道。

这不是漏洞,是特权。

Android有一个QUERY_ALL_PACKAGES权限,属于敏感权限,需要主动申请。MIUI等国产系统在此基础上加了”读取应用列表”这一层控制。但CSDN技术博客早在2019年就详细记录过:getPackageManager().getPackagesForUid()可以通过暴力枚举UID的方式,在未授权情况下获取设备上几乎所有App的包名——这个方法在部分安卓版本中被修复,但暴力枚举思路始终有效。

应用宝作为腾讯旗下App,拥有系统级特权,系统直接向它提供完整的App列表,不需要它自己去枚举。这是厂商给战略合作伙伴留的通道,在追求商业利益优先的国产安卓生态里,这种”白名单”并不罕见。

问题在于:这种特权的边界在哪里?如果应用宝能绕过权限拿到应用列表,剪贴板为什么不能?推送为什么不能?设备识别码为什么不能?一旦”系统级特权”这道门开了,它就被掌握在手机厂商手里——给谁开、开多少、对谁关,规则由厂商制定,用户既不知情,也无法控制。


04|美团删照片事件:同一病症的不同发作

2026年3月,多名安卓用户发现美团App在后台静默删除了手机相册中的照片和视频。手机系统直接弹出提示:”检测到美团删除了照片/视频,已成功拦截”。受影响用户少则丢失几十张照片,多则丢失了积累数年的家庭影像、工作资料,有用户丢了504GB的数据。

美团后来的回应是”第三方SDK冲突导致缓存清理异常”。技术圈对这个解释并不买账:正常情况下,App的缓存文件存放在私有目录,与用户相册的DCIM路径完全隔离。要删到用户照片,只有两种可能——代码把相册目录错误地判定为缓存目录,或者直接调用了系统删除接口批量处理媒体文件。

安卓的权限粒度太粗——”评价时选一张照片上传”和”能操作相册里所有文件”,在权限层面是同一件事。一旦点了”允许”,App就获得了对整个相册的读写删权限,而不需要每次操作都再次授权。

来源:东方财富网,2026年3月美团删照片事件分析

国家网信办和工信部已介入调查,要求平台提交说明并开展合规核查。这不是孤立事件——它是安卓权限体系在国产定制系统上长期积累的系统性风险的又一次暴露。


05|iOS的反面:令人安心的对照

原帖楼主是iOS和安卓双持用户。他提到自己在iOS上创建了快捷指令:当App首次申请剪贴板权限时,一键跳转到系统设置中永久拒绝。整个过程透明、可控,没有系统层面自相矛盾的状态。

这不是偶然。iOS的权限管理是”拒绝就是拒绝”——系统向用户呈现的权限状态,和App实际能访问的范围,始终是一致的。苹果因为封闭的生态,对每一款上架App都有更严格把控,App Store的审核机制从制度层面减少了恶意App进入的可能性。

安卓的开源生态带来了更多可能性,也带来了更复杂的利益格局。手机厂商、应用商店、广告SDK、数据公司——各方都有动机在权限体系里寻找有利于自己的缝隙。当一位用户拒绝剪贴板权限后看到”允许”的记录,这对整个权限信任体系是根本性的打击。

楼主在帖子最后打了个比方:”安卓手机使用起来完全没有iPhone那种令人放心的感觉。安卓给我的感觉就像是在网吧登录Steam。”这个感受,或许是这件事最真实的注脚。


06|思考:我们能做什么

这个系统的信任问题不是一个人、一家公司能解决的。但如果你是安卓用户,有几件事可以放在心上。

最基本的一条:敏感信息不要上剪贴板。助记词、私钥、银行密码——复制完就清掉,或者干脆用手输入。我知道这很麻烦,但这件事之后你会发现,麻烦反而是最便宜的安全险。

第二条:别把权限界面的状态当圣旨。”已拒绝”未必是真的拒绝了,”已允许”也未必意味着App在做什么坏事。系统界面和系统底层之间可能有一层你看不见的东西——如果你对某个权限真的在意,可以试着用ADB命令直接查看底层状态,眼见为实。

第三条:涉及密码和隐私的操作,有条件就上iOS或者原生安卓。不是国产系统一定有鬼,是在当前的信任状态下,它确实没有给你足够的说服力。

第四条:留意监管动态。2026年3月美团的事让网信办和工信部介入了,这是个好的开始。但制度改变靠的是一连串的案例,不是每次都等热搜发酵才重视。

回到那个拒绝了123云盘剪贴板权限、却还是被读到的用户。他在拒绝了之后,App仍然读到了。这个体验最让人不安的不是数据被读了,而是你明确表达了拒绝,系统却告诉你:没这回事。

当”信任”成了奢侈品,剩下的就是两件事:要么换平台,要么自己多留心眼。


数据来源
V2EX用户NekoBoss原帖,2026年5月2日 | CSDN技术博客《Android读取应用列表权限漏洞》,2019年8月 | IT之家《Android Q限制剪贴板访问权限》,2019年3月 | 东方财富网《美团App擅自删用户照片》,2026年3月 | 第一财经《美团回应删除用户照片》,2026年3月