支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:736

73.6%
一、 漏洞 CVE-2026-22787 基础信息
漏洞信息
                                        # html2pdf.js 跨站脚本漏洞

## 概述
html2pdf.js 在将文本内容转换为 PDF 时存在跨站脚本(XSS)漏洞,该漏洞存在于 0.14.0 之前的版本中。

## 影响版本
0.14.0 之前的版本

## 细节
当 html2pdf.js 接收文本内容作为输入而非 DOM 元素时,未对文本进行充分的消毒处理,直接将其插入 DOM 中,导致恶意脚本可被执行。

## 影响
攻击者可利用该漏洞在客户端浏览器中注入并执行恶意脚本,威胁页面数据的机密性、完整性和可用性。
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
html2pdf.js has a cross-site scripting vulnerability
来源:美国国家漏洞数据库 NVD
漏洞描述信息
html2pdf.js converts any webpage or element into a printable PDF entirely client-side. Prior to 0.14.0, html2pdf.js contains a cross-site scripting (XSS) vulnerability when given a text source rather than an element. This text is not sufficiently sanitized before being attached to the DOM, allowing malicious scripts to be run on the client browser and risking the confidentiality, integrity, and availability of the page's data. This vulnerability has been fixed in html2pdf.js@0.14.0.
来源:美国国家漏洞数据库 NVD
CVSS信息
N/A
来源:美国国家漏洞数据库 NVD
漏洞类别
在Web页面生成时对输入的转义处理不恰当(跨站脚本)
来源:美国国家漏洞数据库 NVD
漏洞标题
html2pdf.js 跨站脚本漏洞
来源:中国国家信息安全漏洞库 CNNVD
漏洞描述信息
html2pdf.js是Erik Koopmans个人开发者的一个将html转换为pdf的软件。 html2pdf.js 0.14.0之前版本存在跨站脚本漏洞,该漏洞源于文本源未充分清理,可能导致跨站脚本攻击。
来源:中国国家信息安全漏洞库 CNNVD
CVSS信息
N/A
来源:中国国家信息安全漏洞库 CNNVD
漏洞类别
跨站脚本
来源:中国国家信息安全漏洞库 CNNVD
二、漏洞 CVE-2026-22787 的公开POC
#POC 描述源链接神龙链接
三、漏洞 CVE-2026-22787 的情报信息
  • 标题: feat: Sanitize text sources by eKoopmans · Pull Request #877 · eKoopmans/html2pdf.js · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ### 关键信息
    
    **漏洞类型**:
    - **高危XSS(Xross Site Scripting)**
    
    **漏洞描述**:
    - 当使用用户提交的文本作为来源时,`html2pdf.js` 存在一个严重的跨站脚本漏洞。这些文本来源现在已使用`dompurify`进行清理。
    
    **修复措施**:
    - 使用`dompurify`来净化文本输入。
    
    **相关Commit与测试**:
    - 添加文本源 `vdiff` 和demo
    - 使用 `dompurify` 来净化文本输入
    - 添加 `textSource vdiff` 测试到空白文件
    
    **版本更新**:
    - 此PR包含在`0.14.0`版本中
    - 发布在:
      - GitHub 发布页
      - npm 包 (`@latest dist-tag`)
    
    **其他信息**:
    - 关闭了相关问题 `#865`
    - 更新了与PR `877` 和 `878` 相关的 `vdiff goldens`
                                            
    feat: Sanitize text sources by eKoopmans · Pull Request #877 · eKoopmans/html2pdf.js · GitHub
  • 标题: Cross-Site Scripting · Issue #865 · eKoopmans/html2pdf.js -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ## 漏洞关键信息
    
    ### 漏洞概述
    - **类型**: Cross-Site Scripting (XSS)
    - **受影响库**: html2pdf.js
    - **根源**: 未对用户输入进行清洗,直接赋值给 `innerHTML` 属性
    
    ### 受影响组件
    - **文件**: `src/worker.js`
    - **行号**: 71
    - **链接**: [html2pdf.js/src/worker.js#L71](https://github.com/eKoopmans/html2pdf.js/blob/main/src/worker.js#L71)
    
    ### 漏洞代码
    ```javascript
    case 'string': return this.set({ src: createElement('div', {innerHTML: src}) });
    ```
    
    ### 攻击向量
    1. 攻击者提供包含JavaScript有效载荷的恶意HTML字符串
    2. html2pdf.js将此字符串分配给`innerHTML`属性
    3. 元素被添加到DOM中
    4. 浏览器执行JavaScript代码
    5. XSS有效载荷在受害者的浏览器上下文中运行
    
    ### 部分缓解措施
    - `src/utils.js`文件中的部分缓解措施会移除`<script>`标签,但无法保护以下攻击向量:
        - 事件处理程序(如 `onerror`, `onclick`, `onload` 等)
        - 带嵌入脚本的SVG
        - 包含JavaScript URL的`<iframe>`
        - 其他HTML注入向量
    
    ### 概念验证
    - **PoC 1**: 基本XSS(Alert)
        - **Payload**: `<img src=x onerror="alert(document.cookie)">`
        - **结果**: 在PDF生成过程开始时出现警报对话框,确认XSS执行
    
    ### 技术分析
    - **代码流程**:
        1. 输入接收
        2. 字符串处理
        3. DOM注入
        4. XSS执行
    
    ### 当前缓解措施失败原因
    - `<script>`标签移除操作发生在`innerHTML`赋值之后,此时事件处理器已经注册。
    
    ### 浏览器行为
    - 现代浏览器会在包含事件处理程序的HTML设置`innerHTML`时执行JavaScript
    
    ### 修复建议
    - 采用`DOMPurify`库进行用户输入清洗示例:
    ```javascript
    const DOMPurify = require('dompurify');
    const sanitizedHTML = DOMPurify.sanitize(userInput);
    html2pdf().from(sanitizedHTML).save();
    ```
    
    ### 修复版本
    - 此问题已在版本0.14.0中解决
    ```
    
    以上信息是关于html2pdf.js库的XSS漏洞的关键内容,包括问题根源、受影响组件、概念验证、技术分析、失败的缓解措施和修复建议。
                                            
    Cross-Site Scripting · Issue #865 · eKoopmans/html2pdf.js
  • 标题: Release v0.14.0 · eKoopmans/html2pdf.js · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            从这个 GitHub 项目 `html2pdf.js` 的截图中,可以获取到以下关于漏洞的关键信息:
    
    - **版本信息**:
      - 最新版本: `v0.14.0`
      - 发布日期: 2026年1月12日
      
    - **漏洞修复**:
      - 特性: 说明该版本新增了 Sanitize text sources 的功能,这个特性可能修复了对文本源的清理问题,关联的变更请求编号为 `#877` 和提交哈希为 `988826e`。这可能意味着在之前的版本中存在文本注入或跨站脚本(XSS)等安全问题,新版本对此进行了处理以增强安全性。
    
    - **项目维护状态**:
      - 项目期间发布以来,主分支上有6次提交,这表明项目还在积极维护中,开发者在修复问题及更新特性。
    
    - **资产**:
      - 本次发布包含源代码的 zip 和 tar.gz 压缩包,这可以用于用户下载源码,校验是否存在问题代码或进一步审计代码确保没有未修复的漏洞。
    
    这些关键信息对于评估此版本安全性非常重要,但需要注意的是,截图显示的发布日期是 fictional 的(2026年1月12日),当前还需要确认实际发布状态和安全公告。
                                            
    Release v0.14.0 · eKoopmans/html2pdf.js · GitHub
  • 标题: Cross-site scripting vulnerability · Advisory · eKoopmans/html2pdf.js · GitHub -- 🔗来源链接

    标签:x_refsource_CONFIRM

    神龙速读:
                                            ### 关键漏洞信息
    
    - **漏洞类型**: 跨站脚本(XSS)漏洞
    - **严重程度**: 高(CVSS v4 Base Score: 8.7/10)
    - **影响版本**: < 0.14.0
    - **修复版本**: 0.14.0
    - **CVE ID**: CVE-2026-22787
    - **相关弱点**: CWE-79
    
    #### 描述与影响
    
    **描述**: 当给定一个文本源而不是元素时,html2pdf.js 包含一个跨站脚本(XSS)漏洞。在附加到 DOM 之前,此文本没有进行充分的净化,允许恶意脚本在客户端浏览器上运行,风险页面数据的机密性、完整性和可用性。
    
    **示例攻击向量**:
    ```javascript
    import html2pdf from 'html2pdf.js/src/index.js';
    const maliciousHTML = '<img src=x onerror="alert(document.cookie)">';
    html2pdf(maliciousHTML);
    // or html2pdf().from(maliciousHTML);
    ```
    
    #### 修复与补丁
    
    **修复措施**: 此漏洞在 html2pdf.js@0.14.0 中得到了修复,通过使用 DOMPurify 来净化文本源。此版本中没有其他破坏性更改。
    
    **临时解决方法**: 使用早期版本的 html2pdf.js 的用户必须在将其用作 html2pdf.js 中的源之前,安全地净化任何文本。
    
    #### 引用
    
    - **初始报告**: #865
    - **修复**: #877, v0.14.0
    - **CVE-2026-22787**: [https://nvd.nist.gov/vuln/detail/CVE-2026-22787](https://nvd.nist.gov/vuln/detail/CVE-2026-22787)
    
    #### 额外信息
    
    - **发布者**: eKoopmans
    - **发布日期**: 上周
    - **漏洞编号**: GHSA-w8x4-x68c-m6fc
                                            
    Cross-site scripting vulnerability · Advisory · eKoopmans/html2pdf.js · GitHub
  • 标题: feat: Sanitize text sources (#877) · eKoopmans/html2pdf.js@988826e · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ### 关键漏洞信息总结
    
    **1. 漏洞修复描述**
    - **修复主题**: Sanitize text sources (#877)
    - 已通过安全性检查,且由eKoopmans与github-actions[bot]共同提交验证。
    
    **2. 修复细节**
    - **新增依赖项:** dompurify(`^3.3.1`),一个常用的用于清理和验证HTML内容的安全库,防止XSS等攻击。
    - **代码调整点:** 
        - `src/utils.js`: 将原本可能不安全的`innerHTML`调用替换为DOMPurify.sanitize()方法进行清理后使用。
        - `test/util/test-harness.js`: 
            - 增加了对来自`this.textSource`的文本源的处理逻辑,确保其安全性。
            - 修改了`testHarness`类,以处理新的`text-source`参数。
    
    **3. 安全实践**
    - **DOMPurify引入:** 调用了dompurify对所有可能涉及渲染的HTML内容进行清洗,防止注入类的安全问题。
    - **测试用例扩展:** 测试脚本中增加了对`text-source`特性的支持,以确保先前未测试到的代码路径也能够被覆盖。
                                            
    feat: Sanitize text sources (#877) · eKoopmans/html2pdf.js@988826e · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2026-22787
四、漏洞 CVE-2026-22787 的评论
匿名用户
2026-01-15 06:08:15

Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.


发表评论