Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
Tough-Cookie-v2.5.0-Patched — 已修补的 tough-cookie v2.5.0,修复了 CVE-2023-26136 原型污染漏洞,通过在 MemoryCookieStore 中使用 Object.create(null),包括漏洞利用演示和单元测试。 | Kitploit
工具/GitHubGitHub/dani33339/tough-cookie-v2.5.0-patched
静态分析漏洞分析代码分析漏洞利用Web安全学习与教育
GitHubdani33339/tough-cookie-v2.5.0-patched

Tough-Cookie-v2.5.0-Patched

已修补的 tough-cookie v2.5.0,修复了 CVE-2023-26136 原型污染漏洞,通过在 MemoryCookieStore 中使用 Object.create(null),包括漏洞利用演示和单元测试。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

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

Tough-Cookie v2.5.0 补丁 - 原型污染修复

概述

本仓库包含 tough-cookie 包 2.5.0 版本的补丁版本,以解决关键的 原型污染 漏洞(CVE-2023-26136)。该漏洞允许攻击者通过向 JavaScript 对象注入属性来操纵原型链。这可能导致意外行为、安全风险(如远程代码执行)以及依赖该包的应用程序中的兼容性问题。

漏洞描述

在 tough-cookie 包的 v4.1.3 之前的版本中,当使用 CookieJar 并设置 rejectPublicSuffixes=false 模式时,容易受到 原型污染 的攻击。该漏洞源于对 Cookie 的不正确处理,特别是当 cookie.domain 被设置为 __proto__ 时。这允许攻击者修改核心的 Object.prototype 对象,可能导致整个应用程序出现广泛的问题。

有关 CVE-2023-26136 的更多详细信息,请参阅:

  • NVD - CVE-2023-26136
  • Snyk - CVE-2023-26136 in Tough-Cookie
  • GitHub - Issue #282

原型污染的潜在风险

原型污染可能带来多种关键风险,包括:

  • 安全漏洞:通过修改基础的 Object.prototype,攻击者可以操纵对象的行为,可能提升权限、访问敏感数据或绕过应用程序的安全机制。

  • 拒绝服务 (DoS):污染原型链可能导致系统出现意外行为,引发崩溃、无限循环或资源耗尽,使应用程序对合法用户不可用。

  • 兼容性问题:更改 Object.prototype 可能导致与其他库或框架交互时出现错误和意外行为。依赖原型链的依赖项可能会损坏,导致集成问题或更新期间应用程序行为异常。

  • 意外的应用程序行为:原型污染可能导致程序行为不稳定,包括数据损坏、安全漏洞,并可能使应用程序面临进一步的利用。

关键修复

该补丁涉及修改 MemoryCookieStore 类,特别是 putCookie 方法,通过创建无原型对象来防止原型污染。关键更改包括:

  1. 使用 Object.create(null) 而非 {} 来创建无原型的对象。
  2. 修复了漏洞:Cookie 可以通过设置 cookie.domain = __proto__ 来污染原型链。
  3. 添加了测试以验证漏洞已被适当解决。

安装补丁版本

要安装补丁版本的 tough-cookie,请使用以下命令:

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

测试修复

本仓库包含一个单元测试,旨在验证原型污染漏洞已成功修复。

名为 prototype_pollution_test 的测试专门检查设置域为 __proto__ 的 Cookie 不再影响 JavaScript 原型链。这确保了原型污染被阻止,维护了应用程序的完整性。

要运行测试并确认修复,请执行以下命令:

npm test

漏洞利用演示

为了演示原始版本和补丁版本中漏洞的利用情况,请遵循以下步骤:

原始有漏洞版本

安装有漏洞的 tough-cookie 版本:

npm install [email protected] && node index.js

预期输出:

Polluted object: {
  Slonser: Cookie="Slonser=polluted; Domain=__proto__; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms",
  Auth: Cookie="Auth=Lol; Domain=google.com; Path=/notauth; hostOnly=false; aAge=5ms; cAge=5ms"
} EXPLOITED SUCCESSFULLY

这表明对象的原型已被污染,确认原始版本中存在漏洞。

补丁版本

 npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

预期输出:

EXPLOIT FAILED

这表明漏洞利用已被成功阻止,确认原型污染漏洞已修复。

方法及步骤

解决 tough-cookie v2.5.0 中 原型污染 漏洞的过程涉及几个有条理的步骤,以确保修复彻底有效。以下是我遵循的方法概述:

1. 了解漏洞

我首先研究了 原型污染(CVE-2023-26136)以了解其影响。该漏洞允许攻击者通过 cookie.domain 属性将属性注入原型链,可能导致远程代码执行等安全风险。

2. 研究现有修复

我查阅了围绕该漏洞的 GitHub 问题和讨论,包括 tough-cookie v4.1.3 中的修复方案,该方案使用 Object.create(null) 来防止原型污染。这帮助我确定了修复 v2.5.0 所需的更改。

3. 分析有漏洞和已补丁版本

我比较了 v2.5.0 和 v4.1.3,以了解差异并确定必要的更改。关键修改是使用无原型对象来防止利用。

4. 实施解决方案

我更新了 MemoryCookieStore 类,使用 Object.create(null) 替代 {},确保没有原型污染。

5. 测试解决方案

我编写了单元测试来验证修复,并创建了一个漏洞利用演示脚本(index.js)来展示补丁版本如何防止漏洞。

6. 记录修复

最后,我记录了修复内容,包括安装和测试说明,并打包了补丁版本(tough-cookie-2.5.0-PATCHED.tgz)以便轻松分发。

更改总结

从 v2.5.0 添加/编辑的文件

  • index.js:用于演示漏洞和修复的主脚本。
  • lib/memstore.js:修改后的 MemoryCookieStore 类,用于防止原型污染。
  • test/ietf_data/parser.json:更新以修改测试数据中的过期日期。
  • test/prototype_pollution_test.js:用于验证原型污染已修复的单元测试。
  • tough-cookie-2.5.0-PATCHED.tgz:tough-cookie 包的补丁版本。
下载工具