Lark(飞书的外国版)会劫持 macOS Safari 的 Google 账号登录请求? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
mogita
V2EX    全球工单系统

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

  •  
  •   mogita 2023-12-05 15:07:12 +08:00 1227 次点击
    这是一个创建于 754 天前的主题,其中的信息可能已经有所发展或是发生改变。
    # 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 条附言    2023-12-05 17:08:06 +08:00
    已和 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     Solana     2559 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:02 PVG 18:02 LAX 02:02 JFK 05:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86