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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ronmadar/open-source-seal-security
Статический анализАнализ уязвимостейАнализ КодаБезопасность Цепочки ПоставокОбучение и Образование
GitHubronmadar/open-source-seal-security

Open-Source-Seal-Security

Исправление использования пакета с открытым исходным кодом tough-cookie 2.5.0 - CVE-2023-26136,

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
172 лет назадЕщё не проверено
Поделиться

ПРОЕКТ SEAL SECURITY : Задача для инженера Open Source

Создание новой версии пакета tough-cookie V2.5.0 для исправления критической уязвимости CVE-2023-26136, проект написан на Node.js V20

Версии пакета tough-cookie до 4.1.3 уязвимы к Prototype Pollution из-за неправильной обработки Cookies при использовании CookieJar в режиме rejectPublicSuffixes=false. Проблема возникает из-за способа инициализации объектов.

https://nvd.nist.gov/vuln/detail/CVE-2023-26136

Prototype Pollution — это уязвимость, затрагивающая JavaScript. Prototype Pollution относится к возможности внедрения свойств в существующие прототипы конструкций JavaScript, такие как объекты. JavaScript позволяет изменять все атрибуты Object, включая такие магические атрибуты, как proto, constructor и prototype. Злоумышленник манипулирует этими атрибутами, чтобы перезаписать или загрязнить прототип объекта базового объекта приложения JavaScript, внедряя другие значения. Свойства Object.prototype затем наследуются всеми объектами JavaScript через цепочку прототипов. Когда это происходит, это приводит либо к отказу в обслуживании из-за возникновения исключений JavaScript, либо к подмене исходного кода приложения для принудительного выполнения пути кода, внедрённого злоумышленником, что приводит к удалённому выполнению кода

Существует два основных способа загрязнения прототипов:

  • Небезопасное рекурсивное объединение объектов
  • Определение свойства по пути

важное примечание: https://github.com/salesforce/tough-cookie/issues/282

https://security.snyk.io/package/npm/tough-cookie/2.5.0

=> Чтобы исправить уязвимость в классе MemoryCookieStore, необходимо изменить метод putCookie для предотвращения загрязнения прототипа, когда cookie.domain установлен в proto.

https://github.com/salesforce/tough-cookie/pull/283

a. Измените tough_cookie_2.5.0\node_modules\tough-cookie\lib\memstore.js

Все случаи создания нового объекта в memstore.js были изменены с {} (он же Object.create(Object.prototype)) на Object.create(null). Таким образом, мы используем экземпляры объектов, у которых нет свойства прототипа, которое может быть загрязнено.

  • Пример: console.log(a = Object.create(null)); в объекте a — нет свойств (или proto)

b. Создан новый файл /node_modules/tough-cookie/lib/test-unit.js используется на ванильном JS; для него в папке tests есть файл cookie_jar_test.js «Issue #282 — Prototype pollution»

Команда: node test-unit.js

c. Создан новый файл /node_modules/tough-cookie/lib/testVerifyVulnerable.js проверяет, что уязвимое поведение было исправлено.

Команда: node testVerifyVulnerable.js

  1. change.diff: https://github.com/ronmadar/Open-Source-Seal-Security/blob/cf768f1932f087c30ebec7fe60c3fca323b4e54b/change.diff

a. Обычный пакет tough-cookie V 2.5.0

Команда: npm install [email protected] && node index.js

b. Сжатый пакет tough-cookie V 2.5.0 в формате tgz с изменениями

Команда: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

c.

  • Уязвимость: Уязвимость возникает из-за прямого изменения Object. prototype путём добавления нового свойства newProperty. Это означает, что каждый объект в среде JavaScript унаследует это свойство, что может привести к непреднамеренному изменению их поведения.

Потенциальный ущерб —

  • Prototype Pollution: Добавляя свойства непосредственно в Object.prototype, существует риск загрязнения всей цепочки прототипов. Это может привести к неожиданному поведению во всём приложении, так как любой объект, проходящий по цепочке прототипов, может быть затронут.

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

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

  1. Ссылка на ваш форкнутый репозиторий GitHub tough-cookie 2.5.0 https://github.com/ronmadar/tough-cookie

Как установить этот проект

  1. клонируйте этот проект
Скачать инструмент