Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SealSecurityAssignment — Pesquisando sobre a vulnerabilidade CVE-2023-26136 | Kitploit
Ferramentas/GitHubGitHub/cucumberanorsncompany/sealsecurityassignment
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança WebAprendizado e Educação
GitHubcucumberanorsncompany/sealsecurityassignment

SealSecurityAssignment

Pesquisando sobre a vulnerabilidade CVE-2023-26136

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Ver Repositório
11há 2 anosAinda não revisado
Compartilhar

SealSecurityAssignment

Pesquisando sobre a vulnerabilidade CVE-2023-26136

Pesquisa sobre a Vulnerabilidade: CVE-2023-26136

Descrição:

As versões do pacote tough-cookie anteriores a 4.1.3 são vulneráveis a Prototype Pollution devido ao tratamento inadequado de Cookies ao usar CookieJar no modo rejectPublicSuffixes=false. Este problema decorre da forma como os objetos são inicializados.

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

Introdução:

O que é Prototype Pollution?

JavaScript tem o conceito de objetos, que é algo como dicionários. Um objeto pode conter um conjunto de variáveis de diferentes tipos (ex.: string, Boolean, int etc.), o nome da variável é uma chave, e seu valor é o valor, se continuarmos com a analogia de dicionários e objetos. Mais precisamente, o objeto é análogo à própria estrutura de dados do dicionário, e cada variável é análoga a um par chave-valor. Objetos também possuem a palavra-chave proto, que permite adicionar variáveis adicionais a um objeto através da modificação de seu protótipo. Prototype Pollution é um ataque no qual o atacante polui seu objeto, adicionando variáveis adicionais a ele, por meio da palavra-chave proto. A interação abaixo com o console do navegador demonstra o ataque.

image

Como podemos ver, temos dois usuários: admin1 e user1. O objeto admin1 possui uma variável Boolean: "isAdmin", que está definida como true. user1 não possui essa variável. Na linha 7, adicionamos a variável isAdmin ao protótipo do user1, e embora seja evidente na linha 10 que a variável não foi adicionada ao próprio objeto user1, o console responde positivamente, desta vez, quando verificamos o valor de user1.isAdmin. Isso ocorre porque user1 está herdando as propriedades de seu protótipo.

image

Também vale mencionar que o protótipo é um objeto por si só, que por sua vez herda propriedades e métodos de seu protótipo, criando assim uma cadeia de protótipos. A cadeia termina com um protótipo nulo, portanto uma abordagem razoável para prevenir a Prototype Pollution é fazer com que o objeto com o qual estamos trabalhando herde explicitamente de um protótipo nulo.

O que são cookies?

Cookies (frequentemente conhecidos como cookies de internet) são arquivos de texto com pequenos pedaços de dados — como um nome de usuário e senha — que são usados para identificar seu computador enquanto você usa uma rede. Cookies específicos são usados para identificar usuários específicos e melhorar sua experiência de navegação na web.

Cortesia da Kaspersky: https://www.kaspersky.com/resource-center/definitions/cookies

O que é CookieJar?

CookieJar é um objeto para armazenar cookies.

A Tarefa:

A vulnerabilidade:

De acordo com a descrição da vulnerabilidade, ela decorre da forma como o Tough-Cookie inicializa os Cookies. Como Cookies são objetos, eles são, pelo menos teoricamente, vulneráveis à Prototype Pollution.

Os Riscos:

Ao ser capaz de adulterar objetos e particularmente cookies, através do protótipo do objeto, o atacante pode potencialmente acessar dados não autorizados, executar código remoto, causar negação de serviço, sequestrar a sessão se o site depender de cookies para gerenciar a sessão, e extrair dados sensíveis dos próprios cookies.

O Patch:

O patch foi feito no arquivo: memstore.js. De acordo com o rastreamento do problema, bem como com o patch introduzido na versão 4.1.3, para corrigir a vulnerabilidade, precisamos armazenar os cookies em um mapa ou criar o objeto this.idx. Ao criar this.idx usando: this.idx = Object.create(null); em vez de this.idx = {}, praticamos minha sugestão sobre como prevenir Prototype Pollution na introdução, herdando de um protótipo nulo e cortando a cadeia de protótipos.

Testando a vulnerabilidade (index.js):

A Snyk publicou uma Prova de Conceito (PoC) para a vulnerabilidade discutida. Construí o index.js baseado nela. Envolvi em uma lógica try-catch para capturar exceções caso ocorressem, adicionei saída adicional para acompanhar o progresso dos testes e terminei com a saída necessária (ex.: "EXPLOITED SUCCESSFULLY" ou "EXPLOITED FAILED"). Ao executar o comando: npm install [email protected] && node index.js Obtemos a seguinte saída:

image

Ao executar o comando: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js Obtemos a seguinte saída:

image

Em ambos os cenários (executando com a versão publicada 2.5.0 e executando com minha versão corrigida), conseguimos configurar tanto o cookie normal quanto o cookie explorado, mas na versão corrigida, não conseguimos acessar o cookie explorado.

Resumo:

Nesta tarefa aprendi sobre o ataque de Prototype Pollution, aprendi sobre o objeto JavaScript e fui apresentado ao pacote Tough-Cookie.

Baixar ferramenta