Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Tough-Cookie-v2.5.0-Patched — Патч для tough-cookie v2.5.0, исправляющий уязвимость прототипного загрязнения CVE-2023-26136 с помощью Object.create(null) в MemoryCookieStore, включая демонстрацию эксплойта и модульные тесты. | Kitploit
Инструменты/GitHubGitHub/dani33339/tough-cookie-v2.5.0-patched
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияВеб-безопасностьОбучение и Образование
GitHubdani33339/tough-cookie-v2.5.0-patched

Tough-Cookie-v2.5.0-Patched

Патч для tough-cookie v2.5.0, исправляющий уязвимость прототипного загрязнения CVE-2023-26136 с помощью Object.create(null) в MemoryCookieStore, включая демонстрацию эксплойта и модульные тесты.

Репозиторий
51 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Tough-Cookie v2.5.0 с патчем — исправление Prototype Pollution

Обзор

Этот репозиторий содержит пропатченную версию пакета tough-cookie версии 2.5.0, предназначенную для устранения критической уязвимости Prototype Pollution (CVE-2023-26136). Уязвимость позволяет злоумышленникам манипулировать цепочкой прототипов, внедряя свойства в объекты JavaScript. Это может привести к непредвиденному поведению, угрозам безопасности, таким как удалённое выполнение кода, а также к проблемам совместимости в приложениях, использующих этот пакет.

Описание уязвимости

Версии пакета tough-cookie до v4.1.3 уязвимы к Prototype Pollution при использовании CookieJar с режимом rejectPublicSuffixes=false. Уязвимость возникает из-за некорректной обработки cookie-файлов, в частности когда cookie.domain установлен в __proto__. Это позволяет злоумышленникам изменять базовый объект , что может вызвать масштабные проблемы во всём приложении.

Object.prototype

Более подробную информацию о CVE-2023-26136 можно найти здесь:

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

Потенциальные риски Prototype Pollution

Загрязнение прототипа может привести к нескольким критическим рискам, в том числе:

  • Уязвимости безопасности: изменяя базовый Object.prototype, злоумышленники могут манипулировать поведением объектов, потенциально повышая привилегии, получая доступ к конфиденциальным данным или обходя механизмы безопасности приложения.

  • Отказ в обслуживании (DoS): загрязнение цепочки прототипов может вызвать непредвиденное поведение системы, приводящее к сбоям, бесконечным циклам или исчерпанию ресурсов, что делает приложение недоступным для легитимных пользователей.

  • Проблемы совместимости: изменение Object.prototype может вызывать ошибки и непредвиденное поведение при взаимодействии с другими библиотеками или фреймворками. Зависимости, которые полагаются на цепочки прототипов, могут выходить из строя, что приводит к проблемам интеграции или некорректному поведению приложения при обновлениях.

  • Непредвиденное поведение приложения: загрязнение прототипа может приводить к нестабильной работе программы, включая повреждение данных, нарушения безопасности и потенциально делая приложение уязвимым для дальнейших эксплойтов.

Ключевые исправления

Патч заключается в модификации класса MemoryCookieStore, в частности метода putCookie, для предотвращения загрязнения прототипа за счёт создания объектов без прототипа. Основные изменения включают:

  1. Использование Object.create(null) вместо {} для создания объектов без прототипа.
  2. Исправление уязвимости, при которой cookie-файлы могли устанавливаться с cookie.domain = __proto__.
  3. Добавление тестов для проверки того, что уязвимость корректно устранена.

Установка пропатченной версии

Чтобы установить пропатченную версию tough-cookie, выполните следующую команду:

root@kitploit:~
npm install ./tough-cookie-2.5.0-PATCHED.tgz

Проверка исправления

Этот репозиторий включает модульный тест, предназначенный для проверки того, что уязвимость Prototype Pollution успешно устранена.

Тест с именем prototype_pollution_test специально проверяет, что установка cookie-файлов с доменом __proto__ больше не влияет на цепочку прототипов JavaScript. Это гарантирует предотвращение загрязнения прототипа и сохранение целостности приложения.

Чтобы запустить тесты и подтвердить исправление, выполните следующую команду:

root@kitploit:~
npm test

Демонстрация эксплойта

Чтобы продемонстрировать эксплойт как в оригинальной, так и в пропатченной версии, выполните следующие шаги:

Оригинальная уязвимая версия

Установите уязвимую версию tough-cookie:

root@kitploit:~
npm install [email protected] && node index.js

Ожидаемый вывод:

root@kitploit:~
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

Это указывает на то, что прототип объекта был загрязнён, что подтверждает наличие уязвимости в оригинальной версии.

Пропатченная версия

root@kitploit:~
 npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

Ожидаемый вывод:

root@kitploit:~
EXPLOIT FAILED

Это показывает, что эксплойт был успешно заблокирован, что подтверждает устранение уязвимости Prototype Pollution.

Подход и предпринятые шаги

Процесс устранения уязвимости Prototype Pollution в tough-cookie v2.5.0 включал несколько методичных шагов, чтобы гарантировать полноту и эффективность исправления. Ниже представлен обзор подхода, которого я придерживался:

1. Понимание уязвимости

Я начал с изучения Prototype Pollution (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.
Скачать инструмент