Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tough-cookie-2.5.0-cve-2023-26136-fix — 针对 tough-cookie 2.5.0 中 CVE-2023-26136 的安全补丁 - 具有向后兼容性的原型污染漏洞修复 | Kitploit
工具/GitHubGitHub/uriyahav/tough-cookie-2.5.0-cve-2023-26136-fix
静态分析漏洞分析代码分析Web安全论文与研究学习与教育
GitHuburiyahav/tough-cookie-2.5.0-cve-2023-26136-fix

tough-cookie-2.5.0-cve-2023-26136-fix

针对 tough-cookie 2.5.0 中 CVE-2023-26136 的安全补丁 - 具有向后兼容性的原型污染漏洞修复

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
81年前尚未审核

CVE-2023-26136 针对 tough-cookie 2.5.0 的修复

任务概述

本项目针对 CVE-2023-26136 进行修复,这是 tough-cookie 4.1.3 之前版本中的一个关键原型污染漏洞。该漏洞影响 Penguin Software Inc. 的 Web 应用程序,该应用程序使用 [email protected] 进行 cookie 处理。

漏洞描述

CVE-2023-26136 是一个原型污染漏洞,当 CookieJar 与 rejectPublicSuffixes=false 一起使用时触发。问题源于 MemoryCookieStore 类中不正确的对象初始化,允许攻击者通过恶意构造的 cookie 域名向 Object.prototype 注入属性。

技术细节

漏洞存在于 lib/memstore.js 中,其中 cookies 使用普通 JavaScript 对象 ({}) 存储。由于这些对象继承自 Object.prototype,攻击者可以通过设置包含 __proto__、constructor 或 prototype 等域名的 cookies 来利用这一点,从而导致原型污染。

解决方案

补丁实现

修复方法是将 MemoryCookieStore 类中所有 {} 替换为 Object.create(null):

// 修复前(易受攻击)
this.idx = {};

// 修复后(安全)
this.idx = Object.create(null);

此更改通过创建没有原型链的对象来防止原型污染,从而有效地将 cookie 存储与意外继承隔离开来。

修改的文件

  • lib/memstore.js:更新对象初始化以使用 Object.create(null)

项目结构

├── README.md                    # 此文件
├── changes.diff                 # Git 兼容的 diff 文件
├── test-cve-2023-26136.js      # 针对该修复的单元测试
├── tough-cookie/
│   ├── index.js                 # 利用演示
│   ├── Original v2.5.0/         # 原始易受攻击版本
│   ├── v2.5.0-PATCHED/          # 已修补版本
│   │   └── tough-cookie-2.5.0.tgz  # 打包版本
│   └── package.json
└── mission.txt                  # 原始任务要求

安装与测试

1. 打包版本 (.tgz)

已修补版本位于 tough-cookie/v2.5.0-PATCHED/tough-cookie-2.5.0.tgz。

安装命令:

npm install ./tough-cookie/v2.5.0-PATCHED/tough-cookie-2.5.0.tgz

2. 测试套件执行

原始 tough-cookie 测试套件应能通过。运行测试命令:

cd tough-cookie/v2.5.0-PATCHED
npm install
npm test

注意:原始 tough-cookie 2.5.0 在此发行版中不包含测试目录,但修补版本保持与原始 API 的完全兼容。

3. 针对漏洞修复的单元测试

运行自定义单元测试以验证修复:

node test-cve-2023-26136.js

预期输出:

Testing CVE-2023-26136 fix...
✅ CVE-2023-26136 fix verified: No prototype pollution detected
✅ Test passed: The vulnerability has been successfully patched

4. 利用演示

该项目在 tough-cookie/index.js 中包含了一个利用演示:

cd tough-cookie
node index.js

这将测试原始易受攻击版本和修补版本,显示:

  • 原始版本显示 EXPLOITED SUCCESSFULLY
  • 修补版本显示 EXPLOIT FAILED

变更文档

changes.diff

changes.diff 文件包含一个 git 兼容的 diff,可通过以下命令应用:

git apply changes.diff

此 diff 仅包含修复漏洞所需的更改,无任何意外修改。

利用细节

利用方法如下:

  1. 创建一个 CookieJar,设置 rejectPublicSuffixes: false
  2. 设置一个恶意 cookie,域名为 __proto__
  3. 这会污染 Object.prototype 链
  4. 新对象会继承被污染的属性

潜在危害:

  • 应用程序行为操纵
  • 安全绕过
  • 拒绝服务
  • 数据损坏

Node.js 兼容性

✅ 已在 Node.js 20 (LTS) 上测试并验证

仓库信息

GitHub 仓库:Forked tough-cookie repository

Git 标签:v2.5.0-patched-cve-2023-26136-fix

CI/CD 经验

使用的持续集成工具:

  1. GitHub Actions - 专家级

    • 自动化测试与部署
    • 安全扫描与依赖管理
    • 多平台测试
  2. Jenkins - 高级

    • 流水线开发与维护
    • Docker 容器化
    • 与多种工具集成
  3. Travis CI - 中级

    • 构建自动化
    • 测试执行
    • 部署工作流
  4. CircleCI - 中级

    • CI/CD 流水线配置
    • Docker 支持
    • 并行任务执行
  5. GitLab CI/CD - 高级

    • 流水线开发
    • Kubernetes 部署
    • 安全扫描集成

其他工具:

  • Docker - 专家级(容器化与编排)
  • Kubernetes - 高级(部署与扩展)
  • SonarQube - 中级(代码质量分析)
  • Snyk - 中级(安全漏洞扫描)

参考

  • CVE-2023-26136 - NVD
  • tough-cookie GitHub 仓库
  • 原型污染安全指南

许可证

本项目在添加安全修复的同时,保持原始 tough-cookie 许可证 (BSD-3-Clause)。


注意:这是一个专注于安全的补丁,在消除 CVE-2023-26136 漏洞的同时保持完全向后兼容性。

下载工具