V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
ck65
V2EX  ›  全球工单系统

Lark(飞书的外国版)会劫持 macOS Safari 的 Google 账号登录请求?

  •  
  •   ck65 · 143 天前 · 654 次点击
    这是一个创建于 143 天前的主题,其中的信息可能已经有所发展或是发生改变。
    # TL;DR

    最新版 Lark for macOS 疑似会劫持 Mail.appSafari.app 发起的 Google 登录请求,复现视频:


    # 缘起

    由于升级到 macOS Sonoma 之后 Mail 的搜索一直是臭的,今天打算清空 Mail 数据之后,重新添加 Google 账号(很不幸,搜索依然没好)。

    吊诡的是在登录过程中弹出来一个巨大的让我以为是 Safari 的窗口,提交了用户名密码后,甚至弹出了 FIDO 验证。当下感觉这个 FIDO 的框长得有点奇怪,不是熟悉的 Safari 原生 UI ,反而有点像 Chromium 的 UI 风格,但还是鬼使神差填了钥匙密码、摸了 Yubikey 。提交之后 Mail 里没出现任何东西,心里一惊,大事不妙。进 Google 账号控制台看最近登录,显示刚刚在 Windows 上成功登录。没多想先改了密码。



    # 复现

    略加思索后怀疑到了 Lark 身上(刚才怀疑那个窗口时留下了一个印象,它的地址栏菜单里显示中文),于是简单验证了一下,果真复现了。

    - Lark macOS 客户端最新版 v7.6.11 (0.68)
    - macOS Sonoma 14.1.2

    步骤:

    - 启动 Mail ,再启动 Lark
    - 在 Mail 里登录 Google 账号(重连失效账号,或在偏好设置里添加账号,这两种操作理论上都能复现)
    - 等待 Mail 启动 Safari
    - 此时 Lark 内置的 Apollo 进程( Chromium )会劫持登录请求,Safari 窗口未能显示,而登录请求会在 Apollo 窗口内打开
    - 登录后将在 Google Accounts 的最近活动里看到刚刚有一个 Windows 设备用 Safari 登录了账号

    ## Lark 创建的 Apollo 窗口



    ## 正常的 Safari 窗口



    我把复现过程大致录了下来。其中通过 Apollo 的地址栏菜单打开了它的 Chromium 本体。可以看到 version 信息以及证明 Apollo 从属于 Lark 的信息。视频链接见 TL;DR 部分。

    # 疑问

    - Lark 为什么「要」以及是如何「能」感知系统里其他 app 的 Google 登录的请求?
    - 假设这次「劫持」是研发 bug 导致的意外,那么 Apollo 的设计职责和工作流程应该是怎样的?
    - Apollo (和其他用户尚无感知的 Lark 组件)是否会把非 Lark 业务的数据传到我电脑之外的地方?

    # 延伸

    其实对 Lark 客户端很早就有一个 Google 鉴权过程的疑问:如果通过点击 Google 按钮登录,那么 Lark 会不同于正常 OAuth 流程,也就是在用户的默认浏览器里打开 Google 登录页面,Lark 会在 app 窗口内直接跳转到 Google 登录页。若能成功登录,在 Google Accounts 里留下的记录也会显示为 Windows 平台登录。

    这种流程的坏处显而易见,1 )请求都发生在 app 内部,等于把 Google 账号的所有令牌都暴露在了 app 的上下文中; 2 )用户无法使用默认浏览器里现有的 Google 登录状态,因为对于 Google 而言 Lark 内置的 webview 启动的是一个全新的 session ; 3 )无法正常使用 1Password 等工具进行自动填充,毕竟让 1Password 信任 Lark.app 并把我的 Google 账号自动填充进去,怎么看都不是个合理的事。

    # 结语

    感谢各位看完,如果有字节的朋友看到麻烦帮忙转达,此地都知研发苦,没有针对任何个人。

    目前已经卸载了 Lark 客户端,未来有可能尝试放进 CrossOver 或者虚拟机里运行,毕竟公司团队梭哈了 Lark ,不用不行。
    第 1 条附言  ·  143 天前
    已和 Lark 研发团队语音沟通,双方已同意回复此贴。根据我被告知的信息整理的回答:

    Q:Lark 为什么「要」以及是如何「能」感知系统里其他 app 的 Google 登录的请求?
    A:Lark 无意主动参与到 Mail 调起 webview 的请求当中,目前研发团队在排查问题的具体原因。初步判断是在注册 Apollo 为 webview 的过程中,错误地配置了 macOS 系统参数,导致 Mail 调起 webview 时意外地启动了 Apollo 内核。

    Q:假设这次「劫持」是研发 bug 导致的意外,那么 Apollo 的设计职责和工作流程应该是怎样的?
    A:Apollo 在 Lark 7.0 之前仅负责渲染,7.0 之后扩展为 Lark browser 化的 webview (与 Android 系统 app 自带 webview 的设计类似),团队再次澄清不是「劫持」,是由于配置错误导致的 bug 。

    Q:Apollo (和其他用户尚无感知的 Lark 组件)是否会把非 Lark 业务的数据传到我电脑之外的地方?
    A:Apollo 原则上不会向 Lark 发送非业务数据,甚至不会发送数据。

    很愉快有效的沟通。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2805 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:16 · PVG 14:16 · LAX 23:16 · JFK 02:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.