Durante uma análise do código-fonte do MagicMirror², uma plataforma open source utilizada para transformar um espelho semitransparente em um display inteligente, o time Yokai da Hakai Security identificou duas vulnerabilidades recentes de Server-Side Request Forgery (SSRF): CVE-2026-63642 e CVE-2026-63643.
As vulnerabilidades estão relacionadas a diferentes módulos do MagicMirror² e permitem que requisições controladas externamente sejam processadas pelo servidor. A CVE-2026-63642 afeta o módulo newsfeed e permite realizar requisições HTTP do lado do servidor por meio da funcionalidade de verificação de URLs. Já a CVE-2026-63643 afeta o módulo CALENDAR, permitindo que URLs controladas pelo atacante sejam utilizadas em requisições realizadas pelo próprio servidor.
O que é o Magic Mirror?
O Magic Mirror é uma aplicação de código aberto que transforma qualquer monitor ou TV em um espelho inteligente interativo. Com ele, você pode exibir informações úteis como previsão do tempo, manchetes de notícias, calendário e muito mais, tudo enquanto se olha no espelho. É muito usado para criar espelhos high-tech para banheiros, closets e até mesmo em ambientes comerciais e de varejo.
Link de referência: MagicMirror²

O que é SSRF?
SSRF (Server-Side Request Forgery) é uma vulnerabilidade que acontece quando uma aplicação permite que o usuário controle uma requisição feita pelo próprio servidor.
Normalmente, o servidor acessa apenas os recursos necessários para o funcionamento da aplicação. Porém, quando existe um SSRF, um atacante pode fazer com que esse servidor realize requisições para outros endereços.
Isso pode permitir o acesso a serviços internos, APIs administrativas ou recursos que não estão expostos diretamente à Internet.
Em resumo, o atacante utiliza o próprio servidor como intermediário para alcançar recursos que, de outra forma, não conseguiria acessar.
Para entender melhor o funcionamento e os impactos dessa vulnerabilidade, recomendamos a leitura do artigo do sobre SSRF, que apresenta uma explicação prática e exemplos de exploração.
Blind Server Side Request Forgery (SSRF) CVE-2026-63642
A função checkArticleUrl(), localizada em newsfeed/node_helper.js, realiza uma requisição HTTP utilizando o método HEAD para a URL fornecida, sem aplicar uma validação adequada ao destino informado.
O comportamento permite que uma URL controlada externamente seja processada pelo servidor do MagicMirror². Como a requisição utiliza o método HEAD, o conteúdo da resposta não é retornado.
Apesar de não expor diretamente o conteúdo do recurso acessado, esse comportamento pode ser utilizado para construir um cenário de SSRF cego (Blind SSRF). Diferenças nas respostas e no tempo de processamento das requisições podem fornecer informações sobre a existência ou disponibilidade de serviços acessíveis a partir do servidor.
Código analisado: defaultmodules/newsfeed/node_helper.js

Server Side Request Forgery (SSRF) Calendar .js CVE-2026-63643
O handler ADD_CALENDAR, localizado em calendar/node_helper.js, encaminha o payload recebido diretamente para o componente responsável por realizar o fetch do calendário, sem aplicar mecanismos adequados de validação ou restrição da URL de destino.
Esse comportamento cria uma superfície adicional para SSRF, já que o servidor pode realizar requisições para destinos definidos externamente.
Um ponto relevante é a diferença em relação ao endpoint /cors do próprio projeto. Nesse componente, já existem mecanismos de proteção destinados a restringir esse tipo de requisição. A ausência de controles equivalentes no handler ADD_CALENDAR demonstra uma inconsistência na implementação das diferentes funcionalidades que realizam requisições HTTP.
Código analisado: modules/calendar/node_helper.js

Explorando a vulnerabilidade Blind SSRF CVE-2026-63642
Para demonstrar a exploração da CVE-2026-63642, foi desenvolvido um Proof of Concept (PoC) que utiliza Socket.IO para se conectar ao namespace /newsfeed do MagicMirror² e enviar o evento CHECK_ARTICLE_URL.
O evento recebe uma URL controlada pelo usuário e é processado pela função checkArticleUrl(), localizada em newsfeed/node_helper.js. Essa função realiza uma requisição HTTP utilizando o método HEAD para a URL fornecida, sem realizar uma validação adequada do destino.
Dessa forma, o próprio servidor do MagicMirror² realiza a requisição em nome do atacante, caracterizando uma Blind Server-Side Request Forgery (Blind SSRF).
O exploit está disponível publicamente no repositório do GitHub da Hakai Security.

Exploração da vulnerabilidade SSRF CVE-2026-63643
A CVE-2026-63643 está presente no módulo Calendar do MagicMirror² e pode ser explorada através da comunicação com o namespace /calendar utilizando Socket.IO. Para reproduzir a vulnerabilidade, a PoC estabelece a conexão com o servidor e envia o evento ADD_CALENDAR contendo a URL que será processada pela aplicação.
Após receber o evento, o MagicMirror² utiliza a URL fornecida para realizar uma requisição a partir do próprio servidor. Como não há uma validação adequada do destino, é possível direcionar essa requisição para recursos que não deveriam estar acessíveis externamente.
Além de demonstrar a execução da requisição pelo servidor, a PoC permite observar o conteúdo retornado pelo destino. Isso diferencia essa vulnerabilidade da CVE-2026-63642, classificada como Blind SSRF, pois neste caso a resposta obtida pelo servidor pode ser recuperada através do fluxo do módulo Calendar.
O exploit está disponível publicamente no repositório do GitHub da Hakai Security.

Divulgação Responsável
As duas vulnerabilidades foram identificadas pelo time de Research Yokai, da Hakai Security, durante a análise do código-fonte do MagicMirror² e posteriormente reportadas diretamente ao projeto por meio dos GitHub Security Advisories.
Após o período de análise e comunicação com o mantenedor, os problemas foram reconhecidos e publicados oficialmente nos advisories do projeto.
As vulnerabilidades receberam os identificadores CVE-2026-63642 e CVE-2026-63643, referentes, respectivamente, às falhas de Blind SSRF no módulo newsfeede SSRF no módulo calendar. Ambas afetam a versão 2.36.0 e foram corrigidas na versão 2.37.0 ou posterior.
- CVE-2026-63642: GitHub Security Advisory
- CVE-2026-63643: GitHub Security Advisory
Correções implementadas
As vulnerabilidades CVE-2026-63642 e CVE-2026-63643 foram corrigidas no commit 58c2a5e, posteriormente disponibilizado na versão 2.37.0 do MagicMirror².
A correção adicionou um novo mecanismo de controle de acesso para as conexões Socket.IO, fazendo com que elas também respeitem a configuração de ipWhitelist utilizada pelo servidor.
No arquivo js/ip_access_control.js, foi implementada a função socketIpAccessControl(), responsável por verificar o endereço IP durante o estabelecimento da conexão Socket.IO:
function socketIpAccessControl (whitelist) {
A função é utilizada em js/server.js através da opção allowRequest:
allowRequest: socketIpAccessControl(config.ipWhitelist),Com essa alteração, as conexões aos namespaces Socket.IO utilizados pelos módulos newsfeed e calendar passam a ser submetidas ao mesmo controle de acesso baseado em IP.
Essa mudança impede que clientes não autorizados acessem diretamente os namespaces utilizados para explorar as funcionalidades que deram origem às CVE-2026-63642 e CVE-2026-63643.
Os arquivos modificados na correção podem ser consultados abaixo:
Mitigação
A principal medida de mitigação para as vulnerabilidades CVE-2026-63642 e CVE-2026-63643 é atualizar o MagicMirror² para a versão 2.37.0 ou posterior, que já inclui as correções implementadas pelo projeto.
Para instalações que não possam ser atualizadas imediatamente, recomenda-se restringir o acesso à interface do MagicMirror² apenas a usuários e redes confiáveis, evitando sua exposição direta à Internet. Também é importante revisar a configuração de ipWhitelist e limitar o acesso aos serviços internos que podem ser alcançados pelo servidor.
Como as vulnerabilidades exploram funcionalidades disponibilizadas através do Socket.IO, restringir o acesso ao servidor reduz a possibilidade de que um usuário não autorizado alcance os namespaces utilizados pelos módulos newsfeed e calendar.
Referências:
Onde praticar?
O Hacking Club é uma plataforma de treinamento voltada para o desenvolvimento de profissionais de cibersegurança. O laboratório Lumen simula um cenário baseado nas vulnerabilidades CVE-2026-63643, CVE-2026-63642, abordada neste artigo e pode ser utilizado para consolidar, na prática, os conhecimentos apresentados.