前端老鸟都知道一个常识
谷歌浏览器里面是拿不到真实 CPU 和硬件信息的
(:UA 那个很容易伪造好吧
今天再给你一个反常识:
其实,Chromium 内置了一个系统级插件。
这个插件允许 *.google.com 网站获取宿主机 CPU 信息
去 Chromium 源码里找找,发现插件 ID 是:nkeimhogjdpnpccoofpliimaahmaaome 。
而且,这个插件还能对外通信
so ,骚操作来了
我们可以随便打开一个 Google 的网站在 console 里面输入:
chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome', {method: 'cpu.getInfo'}, respOnse=> console.table(response));
CPU 、进程还有负载 一五一十的就有了
看源代码,这个内置插件里面还暴露了不少其他方法,可以自己探索玩玩
说人话:
如果你做的是浏览器扩展,完全可以获取到宿主机的 CPU 还有其他硬件信息的
哈哈哈哈哈
1 itakeman 2024-07-10 08:53:00 +08:00 via Android 会不会泄露用户数据呢? |
![]() | 2 RiverRay OP 只能说插件权限不要乱给,谷歌扩展能干的事情蛮多的 |
![]() | 3 luzemin 2024-07-10 08:54:02 +08:00 骚操作 |
4 cslive 2024-07-10 08:56:28 +08:00 真的是骚操作,有没有办法屏蔽这个东西 |
![]() | 5 LieNoWell 2024-07-10 09:00:03 +08:00 ![]() 的确可以,有点厉害。 |
6 vueli 2024-07-10 09:00:10 +08:00 学到了,好骚 |
7 0o0O0o0O0o 2024-07-10 09:01:39 +08:00 via iPhone ![]() |
8 PhosphorLin 2024-07-10 09:06:47 +08:00 ![]() “不作恶” |
![]() | 9 shuax 2024-07-10 09:08:04 +08:00 ![]() only *.google.com can do |
![]() | 10 ersic 2024-07-10 09:08:42 +08:00 ![]() 新的恶龙 |
![]() | 11 geelaw 2024-07-10 09:13:01 +08:00 ![]() 这件事情的幽默之处在于 MS Edge 也给 google.com 高权限。来源是 https://x.com/lcasdev/status/1810753964020773316 但我没有验证 |
12 drymonfidelia 2024-07-10 09:14:16 +08:00 via iPhone ![]() 所以说浏览器插件能不装尽量不装,小公司、个人开发者的必须亲自审核代码后禁用更新不然大概率被卖掉 |
![]() | 13 nealHuang 2024-07-10 09:20:45 +08:00 m2pro 执行报错 Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. |
14 EspoirBao 2024-07-10 09:26:13 +08:00 @nealHuang 好像是带尾缀的不行,只从浏览器端判断 google.com 结尾的 |
![]() | 15 AlexMeng 2024-07-10 09:29:42 +08:00 试了一下,chrome 和 edge 都可以 |
![]() | 16 Ritter 2024-07-10 09:30:46 +08:00 666 |
![]() | 17 Felldeadbird 2024-07-10 09:33:00 +08:00 6 ,真的可以。骚啊。 |
18 0x90200 2024-07-10 09:34:41 +08:00 骚的一批 |
19 elboble 2024-07-10 09:35:04 +08:00 国内用户安全了:-: |
![]() | 20 Ghostsss 2024-07-10 09:35:46 +08:00 ![]() 只有*.google.com 才可以,.hk 就不行了。看来这几个知名公司,没一个好的。 |
21 w568w 2024-07-10 09:37:19 +08:00 Only Google Can Do! 这是给 Firefox 送子弹啊 |
22 qinjiang 2024-07-10 09:38:14 +08:00 试了下可以复现,谷歌好样的! |
23 aqqwiyth 2024-07-10 09:40:53 +08:00 ![]() 这个插件的申明. https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/resources/hangout_services/manifest_v2.json;l=1;drc=b0b102b6582fe1fca4a5eb6b156f198113674ec7 源码的解析 https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/resources/hangout_services/thunk.js ... if (method === 'cpu.getInfo') { chrome.system.cpu.getInfo(doSendResponse); return true; } ... chrome 本质上是 C++写的 很早以前还支持 C++的扩展安装 , 有条件可以看看 chromimu 的源码. |
24 Greendays 2024-07-10 09:45:10 +08:00 chrome os 好像就是可以获取到性能信息的,也是在浏览器上显示。不知道有没有关系。 |
![]() | 25 wst 2024-07-10 09:45:53 +08:00 Arc 浏览器也可以,这是放到内核里了吗... |
![]() | 26 Cooky 2024-07-10 09:46:31 +08:00 ![]() 看来确实得切换到 ungoogled-chromium |
![]() | 27 proxytoworld 2024-07-10 09:48:51 +08:00 看代码 2013 年就写了 |
![]() | 28 clifftts 2024-07-10 09:51:51 +08:00 收集客户端硬件信息,为了干啥 |
![]() | 29 body007 2024-07-10 09:52:47 +08:00 ![]() 我测了下,只能在访问*.google.com 网址时在控制台能成功,其他域名不行。 |
30 registerrr 2024-07-10 09:56:19 +08:00 TypeError: Cannot read properties of undefined (reading 'sendMessage') Google 首页,Gmail 都没成功 |
![]() | 32 cheneydog 2024-07-10 10:01:27 +08:00 试了 chrome 和 edge 可以,360 极速不行。 |
![]() | 33 HFX3389 2024-07-10 10:02:01 +08:00 @drymonfidelia #12 但这是 Chrome 自带的,你装不装插件它都在 ![]() |
34 71oG4t5Zq6Bgx4tE 2024-07-10 10:03:02 +08:00 没复现出来。。。 |
![]() | 35 HFX3389 2024-07-10 10:03:15 +08:00 @registerrr #30 你的 Google 首页是不是带后缀的?这个只接受.com 后缀的,不能带其他的 |
36 HK560 2024-07-10 10:06:51 +08:00 edge 也是生效的 |
![]() | 37 huBane 2024-07-10 10:07:42 +08:00 |
![]() | 38 opengps 2024-07-10 10:08:34 +08:00 插件远比网页的级别高,毕竟直接用了本地环境运行,可调用资源甚至接近浏览器的级别,算是一种客户端应用 |
![]() | 39 gongquanlin 2024-07-10 10:09:03 +08:00 google.com 可以,google.com.hk 不可以,哈哈哈 |
![]() | 40 dufu1991 2024-07-10 10:10:05 +08:00 @daba 记得 ncr ,不然会跳转到非 google.com |
![]() | 41 D33109 2024-07-10 10:13:07 +08:00 观察下来在 2013 年貌似就有这个插件了? |
42 drymonfidelia 2024-07-10 10:13:45 +08:00 |
43 71oG4t5Zq6Bgx4tE 2024-07-10 10:14:25 +08:00 |
44 dode 2024-07-10 10:15:23 +08:00 差,谷歌给自己信息收集开后门 |
45 Jessec 2024-07-10 10:18:30 +08:00 哈哈,但我用 firefox |
46 unique0lai 2024-07-10 10:30:11 +08:00 @clifftts 大型广告公司恨不得搜集你的所有衣食住行数据,然后拿去给你做用户画像,最后拿去卖广告或是做金融服务。。。 |
47 zhangdp 2024-07-10 10:42:35 +08:00 只能在 google.com 网页下获取,又有何用 |
![]() | 48 geelaw 2024-07-10 10:46:23 +08:00 via iPhone @drymonfidelia #42 和 Edge 保护不保护隐私没啥关系,觉得幽默是因为通常会假设 MS 会把各种 Google 专有的东西删除或者换成 MS 专有的。 @zhangdp #47 对 Google 有用。 |
![]() | 49 RiverRay OP ![]() @zhangdp 任何浏览器插件,只要申明 google.com 的的权限,都可以获取~(:这个操作你是无感的 |
50 chenliangngng 2024-07-10 10:50:13 +08:00 @zhangdp 当你安装插件,大概率是挂梯子走谷歌官方的插件中心,这个时候安装完插件已经拿到你所有数据了。这些硬件数据拿一次就可以了 |
![]() | 51 cnt2ex 2024-07-10 10:51:30 +08:00 试了一下 ungoogled chromium 无法获取,chrome/brave 可以。 |
52 siteshen 2024-07-10 10:51:58 +08:00 |
53 atuocn 2024-07-10 10:54:22 +08:00 ![]() edge 也有,edge://extensions-internals/ 可以发现更多 |
![]() | 54 zaizaizai2333 2024-07-10 10:55:20 +08:00 ![]() |
![]() | 56 ysc3839 2024-07-10 11:03:50 +08:00 via Android @geelaw 属于是 100% backdoor-for-backdoor compatible 了 |
![]() | 57 satoru 2024-07-10 11:08:24 +08:00 https://news.ycombinator.com/item?id=40918052 报告,有人翻译了你的发现发到 Hacker News 上去了 |
![]() | 58 6388xE5FRKTNUT9x 2024-07-10 11:15:27 +08:00 ![]() ungoogled chromium 没有成功,提示 VM252:1 Uncaught TypeError: Cannot read properties of undefined (reading 'sendMessage') at <anonymous>:1:16 |
![]() | 59 6388xE5FRKTNUT9x 2024-07-10 11:16:57 +08:00 检查 chrome://extensions-internals/ 没有发现名称为 nkeimhogjdpnpccoofpliimaahmaaome 的插件 |
60 dante9 2024-07-10 11:21:16 +08:00 |
61 zhangdp 2024-07-10 11:21:25 +08:00 |
![]() | 62 blubzz 2024-07-10 11:23:54 +08:00 那么类如 360 自家的浏览器的,访问特定的网站是不是也可以获取了? |
![]() | 63 lod 2024-07-10 11:24:21 +08:00 ![]() 这不是一个公开的 api ?,也别说什么开源并不等于有人看,这代码截图都贴上了不也没人看。 https://developer.chrome.com/docs/extensions/reference/api/system/cpu?hl=zh-cn |
65 SkywalkerJi 2024-07-10 11:30:40 +08:00 in Microsoft Edge this capability is also available exclusively to *.google.com domains 厉害了微软 |
![]() | 66 lc4t 2024-07-10 11:41:53 +08:00 Arc 也是可以的 |
67 webbillion 2024-07-10 11:43:32 +08:00 ![]() 63 楼是谷歌不作恶的坚决维护者? |
68 hez2010 2024-07-10 11:50:13 +08:00 @SkywalkerJi edge 用的也是 chromium 内核,如果 ms 压根都不知道这个 api 的存在的话,自然也保留着 chromium 默认的行为。 |
69 9ki 2024-07-10 11:52:09 +08:00 之前发帖子说 google 屏蔽疑似主动屏蔽某些搜索结果还被爱自由人士喷了呢 /1055707 某些人被洗脑的太严重了.. |
70 Biggoldfish 2024-07-10 11:56:25 +08:00 你都装了 Chrome 了 Google 要收集你硬件信息搞用户画像的话直接用 Chrome 读取上传不就完了,搞个插件只对 google.com 生效然后等着用户访问网页再去读取上传? |
![]() | 71 codehz 2024-07-10 12:00:06 +08:00 @Biggoldfish 这里的问题是给 google meets 提供了竞争优势,其他基于网页的在线会议软件都没法通过这个来获取 cpu 信息来调试错误 |
72 SkywalkerJi 2024-07-10 12:09:45 +08:00 ![]() @hez2010 #68 证明了大家搬项目时并不会把代码都看一边,也不会全局替换上家的名字 ![]() |
![]() | 73 cat9life 2024-07-10 12:22:25 +08:00 同样,chrome 和 edge 都复现成功 |
![]() | 74 skadi 2024-07-10 12:25:46 +08:00 在 g 的首页复现成功. |
![]() | 75 kkocdko 2024-07-10 12:28:50 +08:00 using ungoogled-chromium chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome', {method: 'cpu.getInfo'}, respOnse=> console.table(response)); VM62:1 Uncaught TypeError: Cannot read properties of undefined (reading 'sendMessage') at <anonymous>:1:16 |
![]() | 76 rdZZZ 2024-07-10 12:31:47 +08:00 https://developer.chrome.com/docs/extensions/reference/api/system/cpu#type-CpuInfo 这 API 不是早就有了,不光 cpu ,显示器、内存、存储都能查,也就是说任何 chrome 扩展都有能力拿到,只是 google 恰好把它给暴露出去了 |
![]() | 78 vela 2024-07-10 12:38:08 +08:00 Version 126.0.6478.127 (Official Build) (arm64) 复现成功,可以可以。 ``` value : archName : "arm64" features : [] modelName : "Apple M2 Max" numOfProcessors : 12 processors : (12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] temperatures : [] [[Prototype]] : Object ``` |
79 daidr PRO ![]() 如果是扩展,本身 chrome 就提供了 cpu.getInfo 方法让你拿到完整的 CPU 信息 如果是网页,只有 google 自己的白名单域名会注入 chrome.runtime ,其他网页你怎么搞都不可能拿到这玩意 |
81 daidr PRO ![]() @hez2010 runtime 暴露出去主要是可以给 what's new 或者扩展商店之类的页面用,比如检测扩展安装状态、在 what's new 里帮你改浏览器主题。 |
82 LingXingYue 2024-07-10 13:19:57 +08:00 |
83 kylix 2024-07-10 13:56:03 +08:00 确实可以,google.com 首页 复现成功 |
![]() | 84 Garphy 2024-07-10 14:13:36 +08:00 有时候可能有点用 |
![]() | 85 zaizaizai2333 2024-07-10 14:14:45 +08:00 Marius Karnauskas @karnauskas To report CPU/GPU load during Hangouts call - and probably adjust stream quality on the go. Luca Casonato @lcasdev That’s not the point. The idea is good. The Google only implementation is not. 最后两句中文金句 |
86 drymonfidelia 2024-07-10 14:22:33 +08:00 via iPhone ![]() @satoru HN 上的源链接是昨天发的,OP 是今天的帖,明显是 OP 翻译别人的 |
87 SunOfHomeBoy 2024-07-10 14:36:12 +08:00 chrome.runtime.sendMessage('nkeimhogjdpnpccoofpliimaahmaaome', {method: 'cpu.getInfo'}, respOnse=> console.table(response)); 亲测可行! |
![]() | 88 Akiya 2024-07-10 14:38:54 +08:00 实测 Edge 在 Mac 上可以复现 |
![]() | 89 piapia 2024-07-10 14:49:19 +08:00 @0o0O0o0O0o zz 你咋啥都知道. tql |
90 CloveAndCurrant 2024-07-10 14:50:03 +08:00 opera 也可以复现成功 |
91 lixen9 2024-07-10 14:52:24 +08:00 测试了下,获取的 cpu 信息不对,macos |
![]() | 93 pikko 2024-07-10 15:00:58 +08:00 @nziu #63 extension 有额外权限能理解(暂且不说有没有控制硬件权限许可),而楼主说的这个,是不装插件,打开谷歌官网就能跳出来的 runtime 对象,妥妥的后门了。 google exlusive 后门 |
![]() | 94 caqiko 2024-07-10 15:17:23 +08:00 ![]() 作为一个 Chrome Extension 开发者,我来解释一下: 1. Chromium 为浏览器扩展提供了很多 API ,其中包括 chrome.system.cpu 。这个 API 允许扩展访问 CPU 信息。 2. internal extensions:Google Chrome 自带了一些内部扩展( internal extensions ),如 Google Hangouts 和 PDF 预览功能等。这些扩展可以利用 Chrome 的各种 API 来实现其功能。 3. manifest.json:扩展的 manifest.json 文件是扩展的配置文件,其中定义了扩展的各种权限和行为。Google Hangouts 扩展在 manifest 中声明了相关的权限,以及在哪些页面(*.google.com )可以运行。这解释了为什么只有在*.google.com 页面可以获取。 4. background script:扩展的 background 脚本(如 trunk.js )是在后台运行的,可以持续监听和响应来自页面的消息。 5. message passing:扩展可以使用 chrome.runtime.sendMessage 和 chrome.runtime.onMessage 来实现消息传递。页面脚本 content-script 可以发送消息到 background script ,然后 background script 可以处理这些消息并返回响应。 综上所述,并不是只有 Google 有这个权限,所有的扩展都可以拿到这个功能。 ![]() |
96 sloknyyz 2024-07-10 15:24:20 +08:00 你说错了一点,没有进程信息,那是处理器核心负载信息。 |
![]() | 97 mizuhokaga 2024-07-10 15:24:56 +08:00 win11 edge 在 https://www.google.com/ 复现成功, 不过我用 Firefox |
![]() | 98 pikko 2024-07-10 15:27:30 +08:00 ![]() @caqiko #94 题主探讨的是访问谷歌网页就暴露一个 runtime 对象了,都不到安装插件那一步。且只有谷歌有。 也就是谷歌就能看你 cpu 来做数据收集,别的网站不行。 |
![]() | 99 poorcai 2024-07-10 15:28:03 +08:00 via Android 我已经在尝试着转向 firefox 了 |
![]() | 100 asdjgfr 2024-07-10 15:29:25 +08:00 厉害了,真能复现,看 chromium 源码应该是 11 年前加的,9 年前改成 google 白名单,在 62 版本就有了 |