GoldenPass-ta-key:针对Goole浏览器密码管理器新攻击手段介绍

admin 2026-11-13 11:02:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Golden Pass-ta-key : 针对Goole 浏览器密码管理器新攻击手段介绍

原创

赛博57库
赛博57库

赛博57库

2026年11月12日 05:00
广东

去阅读

攻防技术 / 威胁情报 一次重注册,偷走全部 Passkey:Golden Pass-ta-key 红蓝对抗 全链路 · SDS 提取 · 凭据复用 · 主机检测 · 事件响应
本文怎么读 Golden Pass-ta-key  既是一个开源项目,也是指从\"内存里抓到 32 字节\" --> \"离线解密全部 Passkey --> 伪造 WebAuthn 断言 --> 完成账号接管的完整攻击链路。 本文第 00 节给结论与影响面;第 01 节拆 Passkey 的三层结构,解释 SDS 为什么必须存在;第 02 节对照 base、Silver、Golden 三级攻击;第 03 节是技术核心——3.4 秒内存窗口、三个 CBOR 模式、HKDF/AES-GCM 解密与断言伪造;第 04 节评估红队/APT 适用性;第 05 节给蓝队检测、狩猎与 72 小时处置;第 06~07 节收束到修复博弈与行动清单。赶时间可直接看第 00 节的表、第 04 节的决策矩阵和第 05 节的规则。
边界与授权 本文只做协议、内存结构、检测与处置层面的拆解,不提供可直接运行的完整 exp、内存扫描器源码或一键脚本。所有测试与命令仅限自有环境或书面授权的目标;文中不含真实受害者、真实凭据或可复用攻击基础设施。Passkey 仍是当前抗钓鱼能力最强的通用认证方式,本文讨论的是「同步与恢复层」的实现风险,不是否定 Passkey 本身。

0x00 · 先给结论:被偷的不是 Passkey,是「恢复权」

2026 年 8 月 3 日,Unit 42 披露了一组针对 Google Password Manager(GPM)同步 Passkey 的攻击,统称 Pass-ta-key。同年 10 月 18~19 日,研究者 0rcruxe 用两篇长文和一份 PoC,把最严重的 Golden Pass-ta-key 从「内存里抓到 32 字节」推进到「离线解密全部 Passkey、伪造 WebAuthn 断言、完成账号接管」的完整链路。

这项研究最容易被误读的地方,是把它当成「Passkey 被破解」。事实相反:WebAuthn 的椭圆曲线签名没有被攻破,TPM 没有被攻破,Chrome 沙箱也没有被逃逸。攻击利用的是一个架构事实——同步 Passkey 必须能在新设备上恢复,而恢复就意味着某个「根密钥」必须在某个时刻离开云端、进入客户端。

这个根密钥叫 SDS(Security Domain Secret,安全域密钥),32 字节,用来加密该 Google 账号下所有同步 Passkey 的私钥。正常设计里,SDS 在磁盘上只以 wrapped_security_domain_secrets 的密文形式存在,只有 Google 的云认证器(Cloud Authenticator)能解开。但在设备加入或重新加入安全域时,Chrome 会从 Google Trusted Vault 取回 SDS 明文,放进进程内存,用来构造发往云认证器的 CBOR 请求。

于是攻击链变成:

删除 passkey_enclave_state ↓ 诱导 Chrome 重新加入安全域 ↓ SDS 明文进入 Chrome 进程内存(约 3.4 秒) ↓ 按 CBOR 语义定位并取出 32 字节 SDS ↓ 读取 Sync Data\\LevelDB 中的 WebauthnCredentialSpecifics ↓ HKDF + AES-256-GCM 解密出 ECDSA P-256 私钥 ↓ 离线伪造 WebAuthn 断言,登录所有绑定 Passkey 的网站
问题 结论
密码学被攻破了吗 没有。攻击利用的是密钥生命周期与恢复流程
攻击者最终拿走什么 32 字节 SDS,以及本地同步 Passkey 的密文记录
影响范围 该 Google 账号下当前与未来的同步 Passkey
需要管理员权限吗 不需要,普通用户上下文即可
需要用户交互吗 需要受害者使用一次 Passkey,触发重新注册
能离线复用吗 能。拿到私钥后不再需要受害设备在线
SDS 能旋转吗 Unit 42 称当前实现无法旋转或吊销;截至本文截稿未见公开轮换接口
有在野利用吗 截至 2026-11-11,未见公开的、可核实的在野利用或 APT 归因报告

最值得注意的是最后两行。不能旋转意味着事件响应不是「改密码、撤会话」就能收尾;没有可核实的在野意味着现在写检测仍然来得及,但也意味着所有 APT 适用性判断都只能是能力评估,不能写成「某组织已经使用」。

0x01 · 把 Passkey 拆成三层:签名仪式、云认证器、同步层

1.1 第一层:WebAuthn 只保证「签名有效」

Passkey 登录时,网站(Relying Party,RP)下发一次性 challenge。认证器用私钥对两段数据签名:

signedData = authenticatorData || SHA256(clientDataJSON)

clientDataJSON 包含 type(webauthn.get / webauthn.create)、challenge、origin;authenticatorData 至少 37 字节:前 32 字节是 SHA256(rp_id),第 33 字节是 flags,后 4 字节是 signCount。flags 里有四个关键位:

位 值 含义
UP 0x01 用户在场
UV 0x04 用户已验证(生物识别或 PIN)
BE 0x08 凭据可备份
BS 0x10 凭据当前已备份

GPM 同步 Passkey 的典型 flags 是 0x1D = UP + UV + BE + BS。UV 是 RP 唯一能直接依赖的「用户确实解锁了设备」信号;BE/BS 则告诉 RP:这是一枚可同步、可恢复的凭据,不是只存在于某台设备上的硬件密钥。

1.2 第二层:云认证器 enclave.ua5v.com

Chrome 每次使用 GPM Passkey,都会和 enclave.ua5v.com 建立 WebSocket,使用 Noise_NK_P256_AESGCM_SHA256 通道。这个服务就是 Google 的云认证器,负责生成 Passkey 密钥、处理认证请求、在多台设备之间同步凭据。

设备第一次加入安全域时,Chrome 在本机生成一对 TPM 绑定的设备身份密钥(identity key)。Windows 上的做法很特殊:NCryptCreatePersistedKey 不指定 key name,让密钥成为临时密钥;再用 NCryptExportKey 导出为 NCRYPT_OPAQUE_KEY_BLOB,由 TPM 用驻留密钥加密后,存进 passkey_enclave_state 的 wrapped_identity_private_key。私钥不以明文落盘,但同一用户上下文下的进程,只要拿到这个 blob,就可以通过 CNG API 让 TPM 代为签名。

另一把钥匙是 UV key,由 Windows Hello 的生物识别或 PIN 门控。云认证器并不拒绝用 identity key 签名的请求,它只是根据「哪把钥匙签的」决定断言里的 UV 位是 0 还是 1。换句话说,UV 的强制力不在云端,而在 RP 是否真的检查这一位。

1.3 第三层:Trusted Vault 与 SDS

SDS 不直接存在设备上。本地只有 wrapped_security_domain_secrets,是一个 protobuf map:

map<int32, bytes> wrapped_security_domain_secrets = 10;

map 的 key 是 SDS 版本,value 是云认证器包装后的 SDS,只有云认证器能用 Trusted Vault 管理的 wrapping key 解开。正常认证时,SDS 不需要出现在客户端:Chrome 把请求发给云认证器,云认证器在隔离环境里解密 Passkey、完成签名,再把断言返回。

问题出在「加入安全域」这一刻。Chrome 需要从 Trusted Vault 取回 SDS 明文,才能构造 keys/wrap 请求,把 SDS 重新包装后交给云认证器。Unit 42 的解释是:桌面端沿用了移动端的恢复模型——Android 和 iOS 上的 GPM 不依赖云认证器,必须拿到主密钥才能解密同步 Passkey;Chrome 虽然有能力做更隔离的设计,但实际走的是同一条「把 SDS 交给客户端」的路径。

1.4 本地的两个落点

组件 位置 保护方式 普通用户可读?
passkey_enclave_state %LocalAppData%\\Google\\Chrome\\User Data\\<Profile>\\passkey_enclave_state 无额外 ACL;含 TPM 包装的 identity key 与 wrapped SDS 可读、可删、可改
WebauthnCredentialSpecifics ...\\Sync Data\\LevelDB 私钥用 SDS 派生的 AES-256-GCM 密钥加密 可读密文
SDS 明文 仅 onboarding 时短暂存在于 Chrome 进程内存 依赖进程边界与云认证器协议 同用户进程可读

WebauthnCredentialSpecifics 是 protobuf 记录,字段包括 rp_id、user_name、user_display_name、credential_id、user_id(WebAuthn userHandle)和 encrypted。LevelDB 里的 key 以 webauthn_credential-dt- 开头;用 Google 的 dfindexeddb 解析 .ldb / .log,再用 Chromium 官方的 webauthn_credential_specifics.proto 反序列化,就能枚举出「这个用户在哪些网站用了 Passkey、用户名是什么、credential ID 是什么」。

这里有两个容易忽略的边界。第一,能读到这些记录,不等于能登录:记录里的私钥是密文,真正的门槛是 SDS;Golden 的全部技术价值,就在于把「读密文」变成「拿根密钥」。第二,Profile 目录可能是 Default,也可能是 Profile 1/2...;检测与取证时要按 User Data\\*\\... 枚举,不能只盯 Default。

▲ GPM 的三层结构:WebAuthn 仪式、云认证器、同步与恢复层。SDS 是唯一能解开同步 Passkey 的根密钥,正常只应在云认证器隔离环境内使用。

0x02 · 三级族谱:从「冒用设备」到「拿走总钥匙」

三级攻击的共同前提都是「恶意代码已经在受害者的 Windows 用户上下文里运行」,区别在于各自攻击了哪一个信任假设。

2.1 基础版:冒用设备身份

基础版不碰 SDS。恶意软件从 passkey_enclave_state 或 Chrome 内存里取出 wrapped_identity_private_key,用 CNG API 让 TPM 签名,然后自己完成与云认证器的握手,请求一枚针对目标 RP 的断言。云认证器看到的是「一台已注册的可信设备发来的合法请求」,于是返回断言;断言里的 UV 位是 0,因为签名用的是 identity key。

实战差异完全取决于 RP 是否检查 UV:GitHub 检查了,基础版登录失败;eBay 虽然把 userVerification 设成 required,但没有真正校验 UV 位,攻击成功,Unit 42 报告后已修复。

基础版每次认证都需要受害设备在场:恶意软件必须保持运行,TPM 必须可用。它适合「一次性拿下一个账号」,不适合长期驻留。

2.2 Silver:注册一把攻击者的 UV key

Silver 的目标是绕过 UV。它的做法不是偷 UV key,而是让云认证器接受一把攻击者控制的 UV key。

01  让现有 UV key 失效:删掉 passkey_enclave_state,或者用盗来的 identity key 代受害者发一条 device/forget。Chrome 下一次使用 Passkey 时,会认为设备尚未加入安全域,开始重新 onboarding。

02  在 uv_key_pending 窗口里注册自己的 key:Windows 上,onboarding 要等到第二次使用 Passkey 才真正完成。第一次使用时,Chrome 在后台加入安全域,同时提示用户输入 GPM recovery PIN;此时设备处于 uv_key_pending,Chrome 还没有创建并注册本机 UV key。攻击者在这个窗口里生成一对密钥,用盗来的 identity key 完成签名,向云认证器发送 device/add_uv_key,把自己的公钥注册成该设备的 UV key。

关键缺陷是:云认证器不校验新注册 UV key 的 attestation,不验证它是否来自安全硬件。于是云端设备记录变成:

devices[device_id] = { hw: identity_public_key, uv: attacker_controlled_uv_public_key }

从那以后,攻击者用自己持有的 UV 私钥签名,就能拿到 UV=1 的断言,而且不再需要受害设备在线。改密码、撤销会话通常无效;只有注销设备或重新注册设备,才可能把这把伪造 UV key 清掉——它挂在「设备」这个身份上,而不是「会话」上。

2.3 Golden:拿走 SDS

Golden 和 Silver 共用同一个触发动作:让设备重新加入安全域。区别在于 Golden 不等 UV key 窗口,而是盯着 SDS 进入内存的那几秒。

拿到 SDS 后,攻击者可以在本地解密 WebauthnCredentialSpecifics 里的全部私钥。每个私钥都是完整的 ECDSA P-256 私钥,签出来的断言和受害者本人在 Chrome 里签的没有区别:UV=1、BE=1、BS=1、签名有效、origin 正确。

更严重的是「未来」:新建的同步 Passkey 仍然用同一个 SDS 加密。攻击者不需要再次入侵,只要 SDS 不变,受害者以后新增的 Passkey 也会被同一把钥匙解开。Unit 42 的结论是,Google 当前实现没有旋转或吊销 SDS 的接口;这意味着 Golden 的持久性不是「一次会话」,而是「这个安全域的生命周期」。

攻击 核心动作 关键前提 过 UV 需在线 持久性
base 用 identity key 签名,向云认证器要断言 代码执行 + 读 state 否(UV=0) 每次都要 低
Silver 强制重注册,device/add_uv_key 注册攻击者 UV key 代码执行 + 触发 onboarding 是(伪造 UV=1) 注册后不需要 中高
Golden 在重注册窗口提取 SDS,离线解密全部 Passkey 同上 + 捕获内存窗口 是(真实私钥) 不需要 最高

2.4 为什么叫「Golden」

这个名字借的是 Golden Ticket 的语义:攻击者拿到的不是某一次登录机会,而是一个能生成「合法身份」的根密钥。

维度 Golden Ticket(KRBTGT) Golden Pass-ta-key(SDS)
根密钥 KRBTGT 的密钥材料 32 字节 SDS
影响范围 域内所有依赖 Kerberos 的服务 该 Google 账号下所有同步 Passkey
能否旋转 可以重置 KRBTGT(通常两次) 公开资料未见旋转接口
使用方式 伪造 TGT,在线/离线使用 离线解密私钥,伪造 WebAuthn 断言
主要检测面 KDC 事件、票据异常、PAC 主机侧文件/内存;RP 侧几乎不可见

两者有一个重要差别:KRBTGT 的滥用通常发生在域内,检测者拥有 KDC 和终端的完整日志;SDS 的滥用发生在别人的浏览器和别人的账号之间,RP 只看到一次「合法的 Passkey 登录」。这决定了蓝队的重心必须前移到主机侧。

0x03 · Golden 全链路:3.4 秒里的三个瞬间

3.1 触发:删掉一个没有 ACL 保护的文件

passkey_enclave_state 是 Chrome 判断「本机是否已加入安全域」的本地状态,没有额外访问控制,普通用户进程可以删除。删除之后,Chrome 视角里的设备就「不在域内」了;下一次使用或创建 Passkey 时,Chrome 会重新走 onboarding:

01  从 Trusted Vault 取回 SDS 明文;

02  连接 enclave.ua5v.com;

03  构造 keys/wrap 请求,把 SDS 重新包装后交给云认证器;

04  用云认证器返回的结果更新 passkey_enclave_state,写入新的 wrapped_security_domain_secrets,并把 joined 置为 true。

Windows 上还要多一步:第一次使用 Passkey 时,Chrome 提示用户输入 GPM recovery PIN;真正的 UV key 创建和注册被推迟到第二次使用,以避免连续两个 PIN 提示。这个体验设计给攻击者留出了 uv_key_pending 窗口。注意:攻击者不需要知道 recovery PIN;它只需要用户完成这次提示,SDS 就会进入 Chrome 内存。

对攻击者来说,触发不是「完全自动」的:必须有用户使用一次 Passkey。这是 Golden 在 APT 场景里最重要的节奏约束——它可以等,但不能凭空产生一次 Passkey 操作。在授权红队作业中,常见做法是结合社工、会议邀请、内部系统登录诱导,或者长期潜伏,等用户自己触发。

3.2 时间线:SDS 只活 3.4 秒

0rcruxe 的 PoC 在带 TPM 的 Windows 机器上测得了完整时间线:

时间 事件
T+0 Chrome 与 enclave.ua5v.com 建立 TCP 连接
T+78ms SDS 第一次出现在堆/Windows 临时缓冲区
T+1109ms keys/wrap CBOR 请求中出现 SDS 明文,生命周期约 125ms
T+3062ms passkeys/assert (或 passkeys/create)中出现 SDS 明文,约 203ms
T+3.4s 内存中所有 SDS 副本释放
T+4.5~6.5s Chrome 用解密出的私钥签好断言,发给 RP

三个 CBOR 缓冲区加起来只暴露约 330ms,散布在约 2.2 秒的窗口里;加上堆上的临时副本,SDS 在进程内存里的总寿命约 3.4 秒。这解释了为什么攻击不是「随手 dump 一下内存」:盲目扫描会撞上大量高熵数据、Windows 堆填充模式和别的密钥,必须在正确的时间、正确的内存区域、按正确的结构去找。

3.3 定位:为什么不能靠熵,要靠 CBOR 语义

Chrome 进程里有 1100 多个 MEM_PRIVATE + PAGE_READWRITE 区域,里面混着 Windows 堆填充模式(0xCDCDCDCD、0xBAADF00D)、其他高熵密钥、随机数、TLS 会话材料、各种 protobuf/CBOR 缓冲区。仅靠 Shannon 熵、唯一字节比例、可打印字符比例,无法稳定区分 SDS 和别的 32 字节随机值。

PoC 的关键改进是:不找「像密钥的 32 字节」,而是找「包含 SDS 的 CBOR 结构」。扫描内存中的 CBOR 模式,命中后按结构解析出 secret / key 字段,再取紧随其后的 32 字节。这样误报率远低于随机搜索,也不需要预先知道 SDS 的值。

3.4 三个通用 CBOR 模式

三个模式分别对应 onboarding、认证、创建 Passkey,都以 81(单元素数组)开头,后接 a3 或 a5(3 或 5 个 key 的 map)。

模式一:keys/wrap(onboarding)

81 a3 63 63 6d 64 69 6b 65 79 73 2f 77 72 61 70 63 6b 65 79 58 20 [SDS 32 bytes] 67 70 75 72 70 6f 73 65 76 73 65 63 75 72 69 74 79 20 64 6f 6d 61 69 6e 20 73 65 63 72 65 74
{\"cmd\": \"keys/wrap\", \"key\": \"<SDS>\", \"purpose\": \"security domain secret\"}

模式二:passkeys/assert(使用 Passkey)

81 a5 63 63 6d 64 6f 70 61 73 73 6b 65 79 73 2f 61 73 73 65 72 74 66 73 65 63 72 65 74 58 20 [SDS 32 bytes] 67 72 65 71 75 65 73 74 a1 64 72 70 49 64
{\"cmd\": \"passkeys/assert\", \"secret\": \"<SDS>\", \"request\": {\"rpId\": \"<domain>\"}}

模式三:passkeys/create(创建 Passkey)

81 a5 63 63 6d 64 6f 70 61 73 73 6b 65 79 73 2f 63 72 65 61 74 65 66 73 65 63 72 65 74 58 20 [SDS 32 bytes] 67 72 65 71 75 65 73 74 a3 62 72 70 a2 62 69 64
{\"cmd\": \"passkeys/create\", \"secret\": \"<SDS>\", \"request\": {\"rp\": {\"id\": \"<domain>\", \"name\": \"<domain>\"}}}

58 20 是「32 字节的 byte string」,紧跟其后的 32 字节就是 SDS;63 / 67 / 6f 是 CBOR 的 text 长度标记,a1 / a3 / a5 是 map 的元素个数。攻击者不需要理解整个协议,只要认出这三个「语义骨架」,就能在 125~203ms 的窗口里把 SDS 抠出来。

3.5 离线解密:HKDF 与 AES-GCM 的参数

拿到 SDS 之后,解密链是纯本地的:

01  取记录:用 dfindexeddb 解析 Sync Data\\LevelDB,过滤 webauthn_credential-dt- 前缀,按 webauthn_credential_specifics.proto 反序列化。

02  派生密钥:对 SDS 做 HKDF-SHA256,salt 为空,info 为固定字符串 KeychainApplicationKey:gmscore_module:com.google.android.gms.fido,输出 32 字节 AES-256 密钥。

03  解密:AES-256-GCM,nonce 12 字节,AAD 为 WebauthnCredentialSpecifics.Encrypted。

04  解析明文:encrypted blob 的布局是 nonce(12) || ciphertext(175) || tag(16),共 203 字节;175 字节明文是 protobuf Encrypted 消息,其中 private_key 字段是 138 字节的 PKCS#8 ECDSA P-256 私钥。

05  导出:私钥可转 DER 或 PEM,PEM 可直接喂给 Passkey Injector 之类的工具。

SDS 不是直接当 AES key 用,而是先经 HKDF 派生;被加密的也不只是裸私钥,而是带 protobuf 包装的 Encrypted 消息。这两个细节决定了「拿到 SDS 之后还要写对代码」——但对有 Chromium 源码的防守方来说,这也意味着可以写检测/取证工具。

▲ SDS 的密码链路:SDS → HKDF-SHA256 → AES-256-GCM → protobuf Encrypted → PKCS#8 私钥 → WebAuthn 断言。

3.6 伪造断言:UV=1 是怎么来的

有了私钥,伪造断言就是标准的 WebAuthn 签名:

01  构造 clientDataJSON:

{\"type\":\"webauthn.get\",\"challenge\":\"<RP 下发的 challenge>\",\"origin\":\"https://<rp_id>\",\"crossOrigin\":false}

01  构造 authenticatorData:

SHA256(rp_id) || 0x1D || signCount(4 bytes, big-endian)

01  计算 signedData = authenticatorData || SHA256(clientDataJSON);

02  用 ECDSA P-256 + SHA-256 签名,得到 DER 编码的签名;

03  把 credentialId、authenticatorData、signature、userHandle、clientDataJSON 全部 base64url 编码,组装成断言 JSON。

这里的 0x1D 是重点:它告诉 RP「用户在场、用户已验证、凭据可备份、凭据已备份」。因为签名用的是真实的受害者私钥,这个 UV=1 不是伪造的标志位,而是「用一把真实 Passkey 私钥签出来的、语义上完全合法的断言」。RP 没有任何密码学理由拒绝它。

最后一步是把断言注入浏览器的 WebAuthn 流程。SpecterOps 的 Passkey Injector 基于 Edge WebView2 构造浏览器,拦截 navigator.credentials.get(),把预先算好的断言注入回去。它需要一个 .passkey 文件,包含 credentialId、PEM 私钥、relyingParty、url、userHandle、username。这套工具在 Black Hat USA 2026 的「Pass the Passkey Family of Attacks」中公开,说明「提取」和「复用」两半都已经工具化。

▲ 3.4 秒窗口里的三个 CBOR 瞬间:keys/wrap 约 125ms,passkeys/assert 约 203ms;语义定位比熵扫描可靠。

3.7 为什么 TPM 挡不住

TPM 保护的是设备身份私钥,以及 UV key 的使用条件。它确保「设备私钥不能直接导出」「UV key 的使用要经过 Windows Hello」。这些保护在 Golden 面前都没有失效——攻击者根本没有从 TPM 里导出任何东西。

攻击利用的是:Chrome 合法地启动恢复流程;Google 合法地把 SDS 交给 Chrome;SDS 在普通进程地址空间里变成明文;同用户的恶意进程读取这段内存。问题发生在 TPM 的安全边界之外。用一句不太严谨但很直观的话说:TPM 守住了一把钥匙,但应用程序在使用另一把更重要的钥匙时,把它放到了桌面上。

版本与披露边界 0rcruxe 的 PoC 在 Chrome Stable 156、Beta 156、Dev 158、Canary 158 上验证;作者认为这是架构问题,因此「所有版本受影响」。这是研究者的判断,不等于 Google 已公开确认所有版本。日志泄漏路径(chrome://device-log 中的 SDS 明文)已被 Google 修复,并分配了 CVE-2025-12910;但内存暴露路径在 2026-10 的 PoC 中仍然可用,第二次报告(issuetracker 464305542)没有拿到 CVE。Google 的公开立场是「本地恶意软件已意味着设备被攻陷」,属于 threat model 之外;但 Chrome 同时在做 App-Bound Encryption 防浏览器凭据窃取,这种「一边防本地恶意软件、一边说本地恶意软件不在模型内」的不一致,正是争议所在。

0x04 · 红队/APT 适用性:高价值,但前提很窄

4.1 前提清单

类型 条件 不满足会怎样
硬前提 Windows 10/11 + TPM 2.0 没有 TPM,identity key 机制不成立
硬前提 Chrome + GPM 同步 Passkey 已启用 关闭同步或不用 GPM,SDS 不存在
硬前提 至少一枚同步 Passkey 没有可解密的记录,攻击无收益
硬前提 以受害者用户身份执行代码 需要读 Profile、打开 chrome.exe 进程
硬前提 用户使用一次 Passkey 不触发 onboarding,SDS 不进内存
软前提 Chrome 正在运行、Profile 未锁 影响内存扫描与 LevelDB 读取
软前提 目标账号有高价值 SaaS 决定「值不值得等」
软前提 主机遥测薄弱 决定「会不会被抓」

最容易被低估的是「用户使用一次 Passkey」。很多红队项目拿到主机权限后习惯「全自动收集」,但 Golden 不是全自动的:它需要一个业务动作。这更适合长周期驻留的 APT,而不是追求「一小时内出结果」的红队冲刺。

4.2 在 kill chain 里的位置

按 ATT&CK 映射,Golden 主要落在三个点:Credential Access / T1555.003(从浏览器凭据存储获取凭据)、Use Alternate Authentication Material / T1550(用窃取的私钥伪造认证材料)、Account Manipulation / T1098.005(Silver 更典型:向云端注册攻击者控制的设备/密钥)。

初始访问(钓鱼/暴露面) → 用户态 implant → 发现:读取 Sync Data\\LevelDB,枚举 rp_id / user_name → 凭据访问:删 state,等用户用一次 Passkey → 提取:扫 Chrome 内存拿 SDS → 离线:解密私钥,导出 .passkey → 横向:登录 GitHub / 云控制台 / 交易所等绑定 Passkey 的账号 → 持久化:SDS 覆盖未来 Passkey;Silver 还可留下攻击者 UV key

这里的「横向」不是传统的 SMB/WMI 横向,而是向云身份横向。对红队来说,这往往比拿一台内网主机更值钱:一个 GitHub 组织 owner 的 Passkey,可能直接通向代码仓库、CI/CD 和云资源。

4.3 相对优势:为什么它比 LSASS/cookie/钓鱼更划算

路径 管理员 需实时在线 过 UV 复用性与噪声
LSASS dump 通常需要 是 不适用 中;噪声高
Cookie 窃取 否 会话有效期内 可能被 App-Bound Encryption 拦 低~中;噪声中
钓鱼/实时中继 否 是(用户在场) 取决于实现 低;噪声中
Golden Pass-ta-key 否 否(提取后可离线) 是(真实私钥) 高(当前+未来);噪声低~中

核心优势是「把一次性的会话凭据,升级成长期的身份根密钥」。Cookie 会过期,密码会轮换,会话会被撤销;SDS 不会。对于以「长期访问高价值 SaaS」为目标的 APT,这种属性非常有吸引力。

4.4 OPSEC 与暴露面

步骤 主机痕迹 网络痕迹 账号痕迹 检测难度
枚举 LevelDB 文件读(需 SACL/EDR 文件遥测) 无 无 中
删除 state 文件删除(Sysmon 23/26) 无 无 低
触发 onboarding Chrome 连 enclave;GPM recovery PIN 提示 DNS/TCP 到 enclave.ua5v.com 设备注册(Google 侧) 中
扫描内存 打开 chrome.exe 句柄 + 读内存(EDR) 无 无 中~高
外带 LevelDB 压缩/上传 C2 流量 无 中
离线复用 无(攻击者环境) 攻击者 IP 到 RP 新 IP/设备/地理 高(RP 侧几乎不可见)

最响的一步是「删除 state」和「打开 chrome.exe 读内存」。这两步在 Sysmon 10/23/26 里都能留下事件;如果目标有成熟的 EDR,攻击者需要额外的规避(注入、白利用、降低扫描频率),成本会显著上升。

4.5 三类使用者:APT、红队、黑产

APT(能力评估,不是已发生)

适合的目标画像:使用个人 Google 账号 + GPM 同步 Passkey 的开发者、运维、管理员;账号绑定 GitHub、云控制台、代码托管、加密货币交易所。APT 的优势是「长驻留 + 等得起」:可以等用户某天使用一次 Passkey,再触发 onboarding。低噪声、无 LSASS、无管理员,符合长期潜伏的偏好。

但 APT 的适用性有三个硬边界:GPM 是消费者同步体系,不是企业 Entra ID / Windows Hello for Business 的设备绑定凭据;需要用户触发,不是零点击;没有公开的、可核实的在野样本,把它写成「某 APT 已使用」是不严谨的。

红队

适合 assume-breach 场景:已经拿到用户态权限,目标是「证明能绕过 MFA 拿到 SaaS」。使用前应确认:授权范围包含凭据访问与账号接管;允许触发用户交互(GPM recovery PIN 会打扰用户);与蓝队约定检测对抗的边界;数据最小化,测试结束清理 .passkey 与解密出的私钥;报告中区分「能力证明」与「真实凭据泄露」。

黑产 / 初始访问经纪

Unit 42 明确写到,Golden 让 Passkey 变得「可以被共享或出售」。这改变了凭据市场的商品结构:过去卖的是密码、cookie、会话令牌;现在可以卖「某个账号的 Passkey 私钥 + SDS」。

但这里有一个市场信任问题:SDS 可以被复制、且不能旋转。卖家即使把 SDS 和 LevelDB 卖给买家,自己仍然保留一份,未来还能继续解密该账号新增的 Passkey;买家无法验证「卖家是否删除了副本」。这不是技术漏洞,而是根密钥不可旋转带来的经济后果。对防守方来说,「Passkey 泄露」不能按「一次性泄露」定价,而要按「长期根密钥泄露」处置。

推断边界 上述黑产分析是基于 Unit 42 的「可共享/出售」判断做的推演;截至本文截稿,没有公开的 Passkey 交易样本、报价或中间人案例。文章不把推演写成事实。

4.6 决策矩阵:什么时候用,什么时候不用

场景 建议 理由
目标用 GPM 同步 Passkey,RP 只要求 UV 但不校验 基础版即可 成本最低,不需要 SDS
目标 RP 严格校验 UV,但可接受一次重注册打扰 Silver 注册攻击者 UV key,后续跨设备
目标高价值、需要离线/未来访问、可长期等待 Golden 一次 SDS,覆盖当前与未来
目标使用硬件安全密钥 / device-bound Passkey 不适用 没有 SDS,私钥不出设备
目标关闭 GPM 同步 / 不用 Chrome 不适用 没有 SDS 与 LevelDB 记录
目标 EDR 成熟、禁止用户交互 谨慎/放弃 删 state、读内存、PIN 提示都可能暴露
授权范围不含凭据访问 禁止 合规红线

4.7 它不做什么

•  不破解 WebAuthn:签名仍然有效,RP 的密码学验证仍然通过;

•  不破解 TPM:不导出设备私钥,只利用合法签名能力;

•  不等于硬件密钥失守:FIDO2 硬件密钥、device-bound Passkey 没有 SDS;

•  不是所有 Passkey 提供商:研究聚焦 GPM + Chrome + Windows + TPM;其他云同步实现可能有类似模型,但没有公开验证;

•  不是零点击:需要用户使用一次 Passkey;

•  不是远程-only:初始阶段需要主机上的用户态代码;

•  不是永久无解:如果 Google 改变客户端架构、引入 SDS 轮换或 attestation,攻击面会变化。

这套链路的适用范围是 GPM 同步 Passkey。Bitwarden、1Password、KeePassXC 等第三方管理器的同步 Passkey 有各自的加密与解锁模型,不能直接套用;Windows Hello / Entra ID 的 device-bound 凭据没有 SDS。SpecterOps 的注入工具可以复用任何来源的私钥,但「取私钥」这一步因管理器而异。

0x05 · 蓝队对抗:检测模型检测三个攻击瞬间,与三层检测与抵制防线

5.1 检测模型:把攻击拆成三个瞬间

Golden 的检测不应该从「找恶意文件」开始,而应该从「找三个瞬间」开始:

01  准备:非 Chrome 进程读取 Sync Data\\LevelDB,枚举 Passkey;

02  触发:passkey_enclave_state 被非 Chrome 进程删除/重建,随后 Chrome 连接 enclave.ua5v.com;

03  提取/外带:非 Chrome 进程打开 chrome.exe 并请求内存读权限;或 LevelDB 被复制、压缩、上传。

单个信号都可能有正常解释;两到三个信号在 10 分钟内同时出现,才是高置信度的 Golden 线索。

▲ 红队 kill chain 与蓝队检测面的对应关系:准备、触发、提取/外带三段,每段都依赖不同的遥测。

5.2 遥测矩阵

信号 遥测 字段 前提与缺口
删除 state Sysmon 23/26 TargetFilename 、Image 需开文件删除审计;注入 Chrome 后由 chrome.exe 删除则绕过
重建 state Sysmon 11 TargetFilename 、Image 常见;正常重注册也会发生
读 chrome 内存 Sysmon 10 / EDR SourceImage 、GrantedAccess 需开进程访问审计;Sysmon 只记句柄,不记每次读
读 LevelDB SACL 4656/4663 / EDR ProcessName 、ObjectName、AccessMask 需定向 SACL;默认不开文件系统审计
连 enclave Sysmon 22/3 QueryName 、DestinationIp 需开网络/DNS 审计;正常 Passkey 也会连
用户提示 服务台/举报 GPM recovery PIN 异常 依赖人;不及时、易漏
账号异常 IdP/RP 日志 新 IP/ASN/设备、时间 依赖 RP 日志;Golden 可能模仿正常登录

5.3 规则:三条 Sigma、一条 SPL、一条 KQL

规则一:非浏览器进程以内存读权限打开 chrome.exe

title: 非浏览器进程以内存读权限打开 chrome.exe id: 7b3c1f9a-2d4e-4a6b-9c8d-1e2f3a4b5c6d status: experimental description: 检测非浏览器进程打开 chrome.exe 并请求内存读权限,符合 Pass-ta-key 家族提取 identity key / SDS 的行为。 logsource: category: process_access product: windows detection: selection: TargetImage|endswith: '\\chrome.exe' GrantedAccess: - '0x1010' - '0x1410' - '0x1038' - '0x0410' - '0x1F0FFF' filter_browser: SourceImage|endswith: - '\\chrome.exe' - '\\msedge.exe' condition: selection and not filter_browser falsepositives: - EDR/AV 自身 - 调试器、辅助功能工具 - 备份/迁移软件 level: high tags: - attack.t1555.003 - attack.t1550

GrantedAccess 的值在不同 EDR 里可能被归一化,部署前先用一周基线确认本环境 Chrome 的正常访问者。0x1010 是 PROCESS_QUERY_LIMITED_INFORMATION + PROCESS_VM_READ,0x1410 再多一个 PROCESS_QUERY_INFORMATION,0x1F0FFF 是全权限;恶意工具可能用其中任意一个。

规则二:非 Chrome 进程删除 passkey\_enclave\_state

title: 非 Chrome 进程删除 passkey_enclave_state id: 4d6b8e2f-73a1-4c5d-8e9f-1b3c5d7e9f2a status: experimental description: 检测 Silver/Golden Pass-ta-key 强制重新注册前的状态文件删除。 logsource: category: file_delete product: windows detection: selection: TargetFilename|endswith: '\\passkey_enclave_state' filter_chrome: Image|endswith: '\\chrome.exe' condition: selection and not filter_chrome falsepositives: - 备份/同步软件触碰 Chrome Profile - 用户手动清理/迁移 Profile level: high tags: - attack.t1555.003 - attack.t1098.005

这条规则的关键不是「删除」本身——Chrome 自己也会在重注册时删除/重建——而是「非 chrome.exe 删除」。如果攻击者注入 Chrome 后借 chrome.exe 之手删除,这条会失效,需要靠规则一和网络关联补位。

规则三:非 Chrome 进程读取 Sync Data LevelDB(需 SACL)

title: 非 Chrome 进程读取 Chrome Sync Data LevelDB id: 9a1d3c5e-6f7b-4a2c-8d1e-3b5c7a9d1f2e status: experimental description: 通过 4663 对象访问审计检测 Passkey 枚举(Stage Zero)。 logsource: product: windows service: security detection: selection: EventID: 4663 ObjectName|contains: '\\Sync Data\\LevelDB' AccessMask: '0x1' filter_chrome: ProcessName|endswith: '\\chrome.exe' condition: selection and not filter_chrome falsepositives: - 备份软件、取证工具、Profile 迁移 level: medium tags: - attack.t1555.003

这条规则需要只对 LevelDB 目录配置 SACL(ReadData/ListDirectory),不要全局开启文件系统审计,否则噪声会淹没信号。

SPL:三信号关联狩猎

index=sysmon earliest=-10m@m (EventCode=10 OR EventCode=22 OR EventCode=23 OR EventCode=26) | eval sig=case( EventCode=10 AND like(TargetImage,\"%\\\\chrome.exe\") AND NOT like(SourceImage,\"%\\\\chrome.exe\"), \"mem_access\", (EventCode=23 OR EventCode=26) AND like(TargetFilename,\"%\\\\passkey_enclave_state\"), \"state_delete\", EventCode=22 AND lower(QueryName)==\"enclave.ua5v.com\", \"enclave_dns\") | where isnotnull(sig) | stats dc(sig) as sig_count values(sig) as sigs by Computer | where sig_count>=2

KQL:Sentinel / Sysmon 版本

Event | where Source == \"Microsoft-Windows-Sysmon\" | where EventID in (10, 22, 23, 26) | extend TargetImage = tostring(EventData.TargetImage), SourceImage = tostring(EventData.SourceImage), TargetFilename = tostring(EventData.TargetFilename), QueryName = tolower(tostring(EventData.QueryName)) | extend Sig = case( EventID == 10 and TargetImage endswith @\"\\chrome.exe\" and SourceImage !endswith @\"\\chrome.exe\", \"mem_access\", EventID in (23, 26) and TargetFilename endswith @\"\\passkey_enclave_state\", \"state_delete\", EventID == 22 and QueryName == \"enclave.ua5v.com\", \"enclave_dns\", \"\") | where Sig != \"\" | summarize SigCount=dcount(Sig), Sigs=make_set(Sig) by Computer, bin(TimeGenerated, 10m) | where SigCount >= 2

如果使用 Defender XDR 原生 DeviceEvents,字段名和 ActionType 会因传感器版本不同;先用 DeviceEvents | distinct ActionType 校准,再映射逻辑,不要直接照抄表名。

5.4 误报与基线

误报主要来自四类:EDR/AV 自身(打开 Chrome 进程做扫描)、调试器/辅助功能工具、备份/迁移软件(读取 Profile、复制 LevelDB、触碰 state)、正常重注册(换机、重置 GPM、Chrome 更新后重新加入安全域)。

降噪思路:

01  按签名/哈希白名单,不要按路径白名单(Program Files 里也可能有被利用的二进制);

02  用 2-of-3 关联,不要单信号告警;

03  先 shadow mode 跑 1~2 周,记录基线,再升级为告警;

04  区分「谁删的」:chrome.exe 删除 state 是正常流程,非 chrome.exe 删除才是信号;

05  把用户举报纳入流程:GPM recovery PIN 异常提示是低成本、高价值的信号。

5.5 72 小时处置

0~2 小时:保全

# 先抓内存,再重启/隔离(重启会丢 SDS 窗口与进程证据) procdump64.exe -accepteula -ma <chrome_pid> chrome.dmp # 保存状态文件与 LevelDB $p = \"$env:LOCALAPPDATA\\Google\\Chrome\\User Data\\Default\" Copy-Item \"$p\\passkey_enclave_state\" .\\evidence\\ -ErrorAction SilentlyContinue Copy-Item \"$p\\Sync Data\\LevelDB\" .\\evidence\\LevelDB -Recurse

同时记录 Chrome 版本、Profile 路径、GPM 账号、EDR 时间线、用户是否看到 recovery PIN 提示。

2~24 小时:定损

•  用 dfindexeddb + webauthn_credential_specifics.proto 解析 LevelDB,列出 rp_id、user_name、credential_id;

•  假设该账号下所有同步 Passkey 都已泄露,不要只处理「最近登录过」的几个;

•  通知对应 RP/身份团队,删除或吊销相关 credential;

•  撤销会话、刷新令牌、检查 OAuth 授权与新增设备;

•  监控异常登录:新 ASN、新地理、短时间多 RP 连续登录。

24~72 小时:重置

•  与 Google/企业管理员确认安全域重置能力;仅删除单个 Passkey 不够,因为 SDS 仍能解密后续新建的 Passkey;

•  高价值账号改用硬件安全密钥或 device-bound Passkey,重新注册;

•  复盘:state 删除时间、enclave 连接时间、chrome 内存访问时间、LevelDB 读取时间,拼成完整时间线;

•  更新检测规则与白名单,补上本次暴露的遥测缺口。

优先级 动作 证据/备注
P0 内存镜像、state/LevelDB 保全 SDS 窗口短,先保全再重启
P0 假设全部 Passkey 泄露 SDS 覆盖当前+未来
P1 RP 侧删除 credential、撤销会话 与身份团队/RP 协同
P1 监控新设备注册、异常地理/ASN Golden 的登录可能「看起来正常」
P2 安全域重置、硬件密钥重注册 需 Google/管理员配合
P2 检测规则与遥测补盲 把本次事件转成规则

5.6 架构缓解:把「根密钥」从客户端拿走

个人用户

•  高价值账号(邮箱、代码托管、云、交易所)优先用硬件安全密钥,或至少使用 device-bound 的平台认证器;

•  正常使用中突然要求输入 GPM recovery PIN、重新注册设备,要提高警惕;

•  保持 Chrome/Windows 更新,但不要把更新当成 Golden 的解药——它修的是日志,不是架构。

企业身份管理员

•  盘点哪些员工在用 GPM 同步 Passkey 访问企业 SaaS;对高权限组,要求硬件密钥/device-bound;

•  对特权账号,考虑关闭 GPM 同步(SyncDisabled、PasswordManagerEnabled 是钝器,会影响体验,需分组试点);

•  把「异常重注册」「新设备注册」纳入身份监控;

•  做一次桌面演练:如果某个开发者的 GitHub Passkey 被离线复制,现有检测能不能在 24 小时内发现?

RP / 身份开发者

•  userVerification = required 并真正校验 UV 位;这能挡住基础版,但挡不住 Golden;

•  注册时要求 attestation,按 AAGUID 允许列表限制高保障账号的认证器类型;

•  把 BE=1 的同步 Passkey 视为「较低保障」,对敏感操作做 step-up(硬件密钥/人工复核);

•  不要依赖 signCount:同步 Passkey 常见常量计数,Unit 42 也指出跨设备一致计数很难实现;

•  记录设备指纹、地理、ASN、登录节奏,用行为风控补密码学看不到的缺口。

5.7 检测边界:RP 侧为什么基本看不见

Golden 的断言在 RP 看来是:签名有效、rpIdHash 正确、origin 正确、UV=1、BE=1、BS=1、signCount 可能是常量。它和受害者本人在 Chrome 里登录没有可区分的密码学特征。RP 能用的只剩行为信号:新 IP、新 ASN、异常时间、短时间多账号、登录后的敏感操作。这些信号有价值,但不能承诺「RP 能检测 Golden」。

真正可靠的拦截点在主机侧:谁读了 LevelDB?谁删了 state?谁在 Chrome 连 enclave 的同一时间打开了 chrome.exe 的内存?谁把 LevelDB 打包上传了?如果这些遥测都没有,防守方只剩「用户举报 + 账号行为风控」,这是不够的。

0x06 · 修复博弈:日志脱敏不是修复

•  2025 年 7 月,研究者报告 SDS 出现在 Chrome 日志中;Google 24 小时内修复,并分配 CVE-2025-12910。

•  2025 年 11 月,Unit 42 的研究者报告「同一个泄漏、另一个字段」;Google 再次修复,但拒绝分配 CVE,理由是「本地物理攻击不在 threat model 内」。

•  据 0rcruxe 的梳理,同一讨论串里,一位 Google 工程师先用 threat model 关闭报告,另一位工程师随即表示「这是疏忽,SDS 很敏感,我们应该把它从日志里拿掉」,然后 24 小时内打了补丁;2025 年 12 月,Google 又回到第一份报告,补充「这不在 threat model 内,不应被归类为漏洞」。

这段历史说明:补丁和 CVE 是两件事。Google 修了日志,但没有改变「SDS 会进入客户端内存」的架构;只要 Chrome 还需要在本地构造 keys/wrap、passkeys/assert、passkeys/create 请求,SDS 就必须以明文形式存在于某个进程内存里。这不是实现疏忽,而是「客户端要使用密钥,密钥就必须在客户端可用」的密码学约束。

Unit 42 的架构建议是:让云认证器代表客户端完成加解密,不把根密钥交给客户端;对新增 UV/identity key 做 attestation 校验;加固恢复与重注册流程;限制本地 Passkey 数据访问;改进异常 Passkey 使用检测(包括协调化的 signCount)。第 1 条是根治,其余是缓解。

对使用云同步 Passkey 的其他厂商来说,Unit 42 的模型分析同样适用:只要「跨设备可恢复」意味着「某个根密钥必须在某个时刻交给客户端」,同类风险就存在。但具体实现是否可被同样利用,需要单独验证,本文不点名未验证的厂商。

接下来值得关注的信号:Google 是否引入 SDS 轮换/吊销,或把加解密完全移回云端;Chrome 是否对 passkey_enclave_state 加 ACL、对内存中的 SDS 做隔离/加密;是否有新的 CVE 或 VRP 报告把「内存暴露」正式纳入漏洞;是否有 APT/黑产样本开始集成 SDS 提取模块;RP 侧是否开始普遍校验 UV、attestation 和 BE/BS。

0x07 · 收尾:四张清单

个人用户

•  高价值账号改用硬件安全密钥;不要把「用了 Passkey」当成「中了木马也安全」;

•  遇到意外的 GPM recovery PIN/重新注册提示,先停下来排查;

•  保持更新,但知道更新不等于架构修复。

企业身份管理员

•  盘点 GPM 同步 Passkey 的使用面,区分高权限/普通员工;

•  高权限组改用 device-bound/硬件密钥,必要时关闭 GPM 同步;

•  把「异常重注册 + 新设备注册 + 异常地理」做成关联告警;

•  做一次「Passkey 被离线复制」的桌面演练。

红队

•  先核对前提,不要在不满足 TPM/GPM/用户触发的目标上浪费时间;

•  把「用户使用一次 Passkey」写进作业计划,不要假设全自动;

•  授权、协调、数据最小化、清理、报告,一个都不能少;

•  不要把 Golden 当成「通用 MFA 绕过」;它只对 GPM 同步 Passkey 成立。

RP / 身份开发者

•  强制并校验 UV;

•  注册时做 attestation,高保障账号限制认证器类型;

•  对 BE=1 的同步凭据做风险降级与 step-up;

•  不要依赖 signCount 检测克隆;

•  记录设备/地理/ASN,用行为风控补位。

最后用一句话收束:

说明

密码学没有输。输的是密钥生命周期:当「可恢复」被实现成「可交出」,Golden 就不会因为一次日志脱敏而消失。

参考

•  Unit 42, Pass the Passkey: A Novel Attack Surface in Passwordless Authentication, 2026-08-03. https://unit42.paloaltonetworks.com/passwordless-authentication-security-risks/

•  0rcruxe, Pass-ta-key Golden Attack: Extracting the Security Domain Secret from Chrome process memory, 2026-10-18. https://0rcruxe.github.io/posts/pass-ta-key-golden-attack-sds-extraction/

•  0rcruxe, Pass-ta-key Golden Attack: Decrypting GPM Passkeys and Forging WebAuthn Assertions for Account Takeover, 2026-10-19. https://0rcruxe.github.io/posts/pass-ta-key-golden-attack-decrypting-gpm-passkeys/

•  PoC: https://github.com/0rcruxe/pass-ta-key

•  SpecterOps, Pass-the-Passkey Family of Attacks: https://github.com/SpecterOps/pass-the-passkey

•  Chromium enclave_manager.cc: https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/webauthn/enclave\_manager.cc

•  Chromium webauthn_credential_specifics.proto: https://chromium.googlesource.com/chromium/src/+/main/components/sync/protocol/webauthn\_credential\_specifics.proto

•  W3C, Web Authentication Level 2: https://www.w3.org/TR/webauthn-2/

•  SecurityWeek, New Attack Methods Enable Malware to Hijack Passkey-Protected Accounts, 2026-08-05. https://www.securityweek.com/new-attack-methods-enable-malware-to-hijack-passkey-protected-accounts/

•  BleepingComputer, New Pass-ta-key attacks let malware hijack Google-synced passkeys, 2026-08-03. https://www.bleepingcomputer.com/news/security/new-pass-ta-key-attacks-let-malware-hijack-google-synced-passkeys/

•  KZero, Pass-ta-key: The Passkey Cryptography Held. The Sync Layer Didn’t., 2026-08-04. https://kzero.com/blog/pass-ta-key-passkey-sync-risk-what-msps-should-do/

•  Andrea Fortuna, How Pass-ta-key attacks steal passkeys instead of passwords, 2026-08-10. https://andreafortuna.org/2026/08/10/pass-ta-key-passkey-forensics/

•  CVE-2025-12910: https://issues.chromium.org/issues/434977743

•  Google issue tracker 464305542: https://issuetracker.google.com/issues/464305542

TPCTF2026|倒计时3天! 网络安全文章

TPCTF2026|倒计时3天!

首届CCF网络安全智能挑战赛TPCTF2026启动,设智能体和人机协同赛道,探索AI时代网络安全攻防新范式,面向全国高校师生和企业团队,报名截止至2026年11月15日。
评论:0   参与:  0