关键信息 漏洞详情 标题: JSON VNode Injection in Preact CVE ID: CVE-2026-22028 类别: HTML Injection via JSON Type Confusion 影响的版本: Preact 10.26.5 through 10.28.1 补丁版本: - 10.26.10 - 10.27.3 - 10.28.2 严重性: Medium 影响范围 受影响的应用: 使用受影响版本的Preact的应用程序,且满足以下条件: 1. 从用户可修改的数据源(如API、数据库、本地存储等)传递未修改、未验证的值直接到渲染树 2. 假设这些值是字符串,但数据源可能返回实际JavaScript对象而不是JSON字符串 3. 数据源: - 未能执行类型转换,并且将原始对象与字符串进行互换存储/返回 - 被劫持(如:被篡改的本地存储、文件系统或数据库) 技术细节 Preact包含JSON序列化保护,防止从任意JSON构建的虚拟DOM元素。但在Preact 10.26.5中引入的回归导致此保护被削弱。在假设JSON有效载荷中的值为字符串的应用中,如果未修改地传递给Preact作为子节点,特殊制作的JSON有效载荷可能导致被错误地处理为有效的VNode,从而导致HTML注入。 补丁和缓解措施 补丁版本 10.26.10 (针对10.26.x用户) 10.27.3 (针对10.27.x用户) 10.28.2 (针对10.28.x用户) 缓解措施 验证输入类型: 不接受任意对象作为API输入并将其盲目存储,强制在API边界上严格类型契约。 转换或验证网络数据: 不要假设从网络获得的字符串是字符串,始终转换为期望类型或在渲染前验证。 清理外部数据: 验证来自外部源(如API、存储、数据库)的数据与期望类型匹配,然后传递给Preact。 使用内容安全策略(CSP): 实施严格的CSP,防止内联脚本执行作为纵深防御措施。 时间线 2026-01-04: 初始漏洞报告收到 2026-01-05: 请求澄清关于网络/序列化边界 2026-01-06: 提供了展示现实世界可利用性的网络PoC 2026-01-06: 发布热修补丁(10.26.10, 10.27.3, 10.28.2) 建议 所有使用Preact 10.26.5至10.28.1的用户应尽快升级到适当的补丁版本,并审查其应用程序的正确输入验证和清理实践。