1. Gaining access to anyones Arc browser without them even visiting a website (kibty.town)
Arc浏览器远程代码执行漏洞分析
漏洞概述
攻击者可在用户未访问任何网站的情况下,通过篡改Arc浏览器的云端数据实现远程代码执行。该漏洞源于Arc使用Firestore数据库时存在安全规则配置缺陷,结合其"Boosts"(网站自定义样式/脚本)功能,可向任意用户注入恶意代码。
技术原理
- 架构依赖:Arc强制要求用户登录,并使用Firebase服务存储用户数据。
- 数据存储结构:
- 用户偏好设置(
preferences/) - 用户基础信息(
users/) - Boosts自定义配置(
boosts/) - 用户推荐关系(
user_referrals/)
- 用户偏好设置(
- 关键漏洞:Firestore安全规则允许用户修改自身Boosts记录的
creatorID字段。攻击者可将自己的恶意Boost关联到受害者ID,使受害者在访问特定网站时自动加载恶意脚本。
攻击链
- 获取受害者用户ID:
- 通过邀请码系统(
user_referrals表) - 通过公开的Boost快照页面
- 通过共享的Easel白板功能
- 通过邀请码系统(
- 创建恶意Boost:在攻击者账户下创建包含恶意JavaScript的Boost配置。
- 篡改creatorID:通过Firestore API将Boost的
creatorID字段修改为受害者ID。 - 触发执行:当受害者访问对应网站时,Arc自动加载并执行该恶意Boost。
漏洞影响
- 远程代码执行:可在任意网站上下文执行任意JavaScript。
- 权限提升:恶意Boost甚至可在
chrome://settings等特权页面执行。 - 隐私泄露:Arc实际上传了用户访问网站的
hostPattern数据,违反其隐私政策。
修复措施与时间线
- 应急响应:
- 2024年8月25日:研究人员通过加密渠道联系Arc联合创始人
- 同日完成漏洞验证
- 2024年8月26日:完成修复并发放漏洞奖金
- 根本修复:
- 1.61.1版本修复隐私数据传输问题
- 后续版本将弃用Firebase服务
- 新增Boosts禁用功能
- 长期改进:
- 启动外部安全审计
- 建立正式漏洞奖励计划
- CVE-2024-45489已分配
技术细节
研究人员通过Frida脚本拦截了Firebase SDK的Objective-C方法调用,还原了完整的Firestore查询逻辑:
- 使用
firebase.doc()操作偏好设置 - 使用
firebase.collection().where()查询Boosts和推荐关系 - 关键过滤字段为
creatorID和hostPattern
结论
该漏洞揭示了当移动/桌面应用使用无服务器数据库(如Firestore)时,严格的安全规则配置至关重要。错误的字段权限设计(如允许用户修改其他用户关联数据)会导致严重的跨用户数据污染攻击。Arc在披露后采取了透明的修复措施,并开始向更安全的架构迁移。