文章总结: 本文技术剖析美团APP删除相册事件,指出漏洞主因安卓10及以下SharedStorage模式允许获授权APP直接操作公共目录。美团因缓存清理bug越界删除文件且未更新MediaStore数据库,致使照片变灰框。建议用户尽快升级至安卓11或原生鸿蒙系统以利用沙盒隔离机制,并定期检查存储权限与多重备份数据。 综合评分: 89 文章分类: 移动安全,漏洞分析,数据泄露,应用安全,安全意识
3.3 MediaStore接口
那么怎么才能在安卓11以后的系统上删除相册图片呢?
答案是:通过一个新引入的名为MediaStore的管理接口。
MediaStore删除流程
// 通过MediaStore删除图片的标准流程
ContentResolver resolver = context.getContentResolver();
Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
// 构建删除条件
String selection = MediaStore.Images.Media._ID + " = ?";
String[] selectionArgs = new String[]{ String.valueOf(imageId) };
// 执行删除
int deletedRows = resolver.delete(imageUri, selection, selectionArgs);
MediaStore的安全机制
MediaStore接口有一个关键特性——APP在调用它删除图片的时候,手机会在屏幕上强制弹窗,告诉用户有一个APP要删照片了。
┌────────────────────────────────────┐
│ │
│ ⚠️ 美团想要删除照片 │
│ │
│ 美团正在请求删除以下照片: │
│ • IMG_20240101_001.jpg │
│ • IMG_20240101_002.jpg │
│ │
│ [ 允许 ] [ 拒绝 ] │
│ │
└────────────────────────────────────┘
以谷歌相册为例,在安卓11之后的手机中,如果你通过谷歌相册删除存储的照片,你会收到一个巨大的弹窗提醒,让你对删除操作进行二次确认。
结论:正常情况下,美团APP是不可能在新系统上静默删除照片的。
四、美团删除照片的技术分析
4.1 老版本安卓(安卓10及以下)的删除过程
在低于安卓11的手机上,过程很简单:
┌─────────────────────────────────────────────────────────────┐
│ 老版本安卓删除流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Step 1: 美团APP申请外部存储读写权限 │
│ ↓ │
│ Step 2: 用户图方便给了授权 │
│ ↓ │
│ Step 3: 后面的操作就是一路绿灯了 │
│ ↓ │
│ Step 4: 缓存清理bug触发,开始删除文件 │
│ ↓ │
│ Step 5: 从私有目录一路删到公共目录 │
│ ↓ │
│ Step 6: 用户相册照片被删除,无任何提示 │
│ │
└─────────────────────────────────────────────────────────────┘
可能的触发场景
假设某天某个后端开发用AI写了一个有问题的缓存清理指令:
// 有问题的缓存清理代码示例
public void clearCache(String path) {
File cacheDir = new File(path);
// 错误:没有正确限制删除范围
deleteRecursive(cacheDir);
}
private void deleteRecursive(File file) {
if (file.isDirectory()) {
for (File child : file.listFiles()) {
deleteRecursive(child); // 递归删除所有内容
}
}
file.delete(); // 如果path传入错误,可能删除整个存储!
}
内部流程又比较草台班子,导致修改被一路审批通过并更新,用户的存储就被清理得干干净净了。
4.2 新版本安卓(安卓11及以上)的疑问
网上也有一些使用较新手机的用户声称照片被美团删掉了,这就有意思了。
假设一:媒体管理应用权限(Manage Media)
从安卓11开始,系统引入了一个特殊的权限——媒体管理应用(Manage Media)。
<!-- 媒体管理权限声明 -->
<uses-permission android:name="android.permission.MANAGE_MEDIA"/>
它和普通的”访问照片与视频”权限不一样,是一个更高级的特殊权限,需要额外申请。
权限效果:假如APP被授予了这个权限,MediaStore接口在删除照片时就不会再弹出特殊确认了。
假设二:管理外部存储权限(Manage External Storage)
另一个可能是管理外部存储(Manage External Storage)权限,同样是安卓11之后引进的特殊权限。
<!-- 管理外部存储权限声明 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
这个权限为的是方便网盘类应用和第三方文件管理器能够继续在新系统上正常工作。
权限效果:一旦APP被授予了这个权限,就可以一键清空相册,并且和这次美团删除相册的表现一致。
关键证据:只删除文件,不更新数据库
安卓系统里有一个用来管理媒体数据的数据库(MediaStore数据库)。
| 删除方式 | 文件是否删除 | 数据库是否更新 | 表现 | | — | — | — | — | | MediaStore接口删除 | ✅ 是 | ✅ 是 | 照片完全消失 | | 直接文件删除 | ✅ 是 | ❌ 否 | 照片变成灰框框 |
美团删除相册的表现:只删除了照片文件本身,但是没有更新媒体数据库,导致手机相册里所有照片都变成了无法预览的灰框框。
这说明美团是通过直接文件操作删除的,而不是通过MediaStore接口。
4.3 真相是什么?
然而,在查看美团APP申请的权限清单时,发现美团既没有请求MANAGE_MEDIA权限,也没有请求MANAGE_EXTERNAL_STORAGE权限。
这就引出了三种可能的推测:
推测一:用户描述不准确
网上发帖的用户不太懂技术,描述有误。可能他们使用的是老版本系统,但误以为是新系统。
推测二:第三方SDK问题
美团所谓的”第三方SDK”是系统里面有管理外部存储权限的SDK,调用时传递了错误的路径。
例子:手机里自带的快应用服务框架就有管理外部存储权限。
┌─────────────────────────────────────────────────────────────┐
│ 第三方SDK调用链 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 美团APP(无特殊权限) │
│ │ │
│ ▼ │
│ 第三方SDK(有MANAGE_EXTERNAL_STORAGE权限) │
│ │ │
│ ▼ │
│ 传入错误的路径 → 删除公共目录文件 │
│ │
└─────────────────────────────────────────────────────────────┘
也可能是通过热更新和云控下发的代码,但这一点没有证据。
推测三:手机厂商预装问题
有些手机厂商给美团植入预装推广应用时,没有设置好权限,让预装的美团应用意外获得了系统级的手机公共空间读写权限。
草台班子 + 草台班子 = 灾难
五、事件总结
5.1 确认的事实
| 项目 | 内容 | | — | — | | 受影响系统 | 安卓10及更早版本、鸿蒙4.2及以下 | | 触发原因 | 美团APP缓存清理bug + 过于宽泛的存储权限 | | 删除方式 | 直接文件操作删除,非MediaStore接口 | | 删除表现 | 文件被删除,媒体数据库未更新,照片变灰框 | | 美团权限 | 未请求MANAGE_MEDIA和MANAGE_EXTERNAL_STORAGE |
5.2 待验证的推测
- 1. 新系统用户中招可能是第三方SDK问题
- 2. 可能存在手机厂商预装权限配置不当
- 3. 可能存在热更新/云控下发的问题代码
六、如何保护自己?
6.1 尽快更新系统
如果你的手机系统版本比较老,建议尽快更新到最新系统。
6.2 华为用户强烈建议升级鸿蒙6
如果你的华为手机满足升级鸿蒙6系统的条件,强烈建议升级!
原因:鸿蒙6系统采用了全新的权限隔离机制,美团APP根本不可能删除系统相册,从根本上杜绝了此类问题的发生。
6.3 定期检查权限
检查有没有图方便给APP乱发权限:
设置 → 应用管理 → 权限管理 → 存储/文件访问权限
6.4 数据备份
数据真的很宝贵,记得定期备份:
- • 云端备份(iCloud、华为云、百度网盘等)
- • 本地备份(电脑、移动硬盘)
- • 多重备份策略
七、技术启示
这次事件暴露了安卓生态的多个问题:
7.1 系统层面
- • 老旧系统权限设计的缺陷(Shared Storage模式)
- • 权限模型的演进滞后(Scoped Storage推出太晚)
7.2 开发者层面
- • APP开发者对权限的滥用
- • 内部审核流程的漏洞
- • 可能存在的第三方SDK管理问题
7.3 厂商层面
- • 可能存在的手机厂商预装乱象
- • 预装应用权限配置不当
7.4 用户层面
- • 对权限授权缺乏警惕
- • 系统更新意识不足
- • 数据备份习惯缺失
八、结语
作为用户,我们能做的就是:
- 1. 保持警惕:谨慎授权,不要图方便给APP乱发权限
- 2. 及时更新:保持系统在最新版本
- 3. 做好备份:数据无价,定期备份
毕竟在这个草台班子搭建的数字世界里,数据安全最终还是得靠自己守护。
参考资料
- • 差评君视频分析
- • EBCDIY技术解析
- • Android Developer Documentation – Storage Access Framework
- • Android Developer Documentation – Scoped Storage
本文仅供技术学习交流使用,不构成任何法律意见。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:利刃信安 利刃信安 利刃信安《美团,我日你仙人,还我相册》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论