Notícias
RELATÓRIO DE CIBERSEGURANÇA // SIFG22
INVESTIGAÇÃO E ACESSO A CONTAS

A equipa SifG22 mostrou-me uma falha no acesso às contas da Luxine

A partir da consola do navegador (F12) e com comandos, uma equipa amiga alterou a palavra-passe de uma conta através do painel de login. Por sorte não aconteceu nada: explico o que ocorreu, o que desativei e o que estou a reforçar.

🔒Acesso e contas fechados enquanto reforçamos a segurança
◆

A segurança digital é um daqueles aspetos do desenvolvimento que podem passar despercebidos até alguém demonstrar que existe um problema. Esta semana vivi-o de perto e quero contá-lo com total transparência.

Primeiro e mais importante, uma mensagem para quem tem uma conta na Luxine: lamentamos a preocupação que isto possa ter causado, mas por sorte não aconteceu nada grave. Quem o fez foi uma equipa amiga, a equipa SifG22, com uma intenção puramente preventiva, e não se divulgou nem se utilizou qualquer dado pessoal. Como medida de precaução, enquanto o resolvemos desativámos por completo o início de sessão, as contas e os comentários. Voltarão a estar disponíveis assim que terminarmos de reforçar a segurança.

O que aconteceu

A equipa SifG22, com quem tenho amizade, interveio na Luxine para me demonstrar que existia um risco que eu devia corrigir antes de poder dar origem a um problema maior. Não foi um ataque com má intenção: foi um aviso.

O método foi simples e, por isso mesmo, revelador. A partir da consola do navegador (a que se abre com F12) e com comandos, sondaram como o site se comportava por dentro. A partir daí conseguiram alterar a palavra-passe de uma conta usando o próprio painel de login. Nada mais: não foi preciso qualquer truque elaborado nem acesso a servidores externos, bastou o que qualquer pessoa tem no seu navegador.

Porque foi possível

A consola do navegador (F12) é uma ferramenta normal de desenvolvimento: qualquer visitante a tem. O problema não é que exista, mas sim confiar que o navegador se porte bem. Se uma operação sensível —como alterar uma palavra-passe— é decidida do lado do cliente, alguém pode manipular essas chamadas a partir da consola e contornar as verificações.

A lição é clara: as operações críticas têm de ser verificadas no servidor, nunca apenas na interface. Não basta ocultar botões ou validar no navegador; o backend deve verificar, em cada pedido, que quem o faz está autorizado a fazê-lo. Essa é a principal lição de toda esta experiência.

O que desativei enquanto o resolvo

Não quis disfarçar o sucedido nem deixá-lo correr. Preferi cortar pela raiz a superfície afetada e avisar o público. Neste momento:

  • Início de sessão e contas: desativados. As páginas de login e de conta estão temporariamente fora de serviço.
  • Comentários e moderação: desativados, porque a escrita de comentários dependia do sistema de contas.
  • Ligação ao Supabase: desligada tanto no frontend como no backend, para que não se possa ler nem escrever nada enquanto durar a revisão.
  • Rotas de administração: retiradas do serviço público.

Houve fuga de informação?

Esta pergunta tem de ser tratada com cuidado. O que se demonstrou foi que se podia alterar a palavra-passe de uma conta a partir do cliente, mas isso não permite por si só concluir que foram extraídos dados nem que se publicou informação. A equipa SifG22 tem amizade comigo e guardou as suas capturas como prova, sem divulgar nada.

Não quero apresentar como confirmada uma fuga que não foi comprovada. Por isso o passo seguinte é rever os registos e estabelecer o que pode ter ocorrido, antes de afirmar seja o que for.

O que estou a reforçar

A experiência deixa uma lista clara de trabalho, já em curso:

  • Verificação no servidor: que a alteração de palavra-passe e qualquer operação sensível sejam verificadas no backend, não no navegador.
  • Fluxo de acesso: refazer o login e a recuperação de palavra-passe para que não possam ser manipulados a partir do cliente.
  • Sessões: rever os registos de autenticação e encerrar qualquer sessão que possa estar comprometida.
  • Chaves e dados: rodar os segredos que convenham, evitar expô-los no frontend e rever as políticas de acesso no Supabase.

O que levo desta experiência

Às vezes, ter alguém de confiança a apontar uma falha é a melhor forma de descobrir que os teus sistemas precisam de mais atenção do que pensavas. Prefiro tê-lo sabido assim, de forma preventiva, do que tê-lo descoberto através de um incidente real.

A segurança de uma aplicação não se demonstra afirmando que está protegida, mas verificando que os seus controlos funcionam quando realmente importa —e do lado certo, o do servidor. Obrigado pela compreensão enquanto deixamos tudo em ordem.

RELATÓRIO SifG22 · 11-10-2026

Resumo do relatório de segurança

Síntese da divulgação responsável. Não se publicam palavras-passe, segredos nem dados pessoais.

  1. 01

    Falha na recuperação de palavra-passe

    O acesso à conta veio por uma falha no fluxo de recuperação de palavra-passe — sem tocar no código nem abrir o F12. O próprio sistema permitia tomar uma conta sem verificar bem a identidade.

  2. 02

    Chave secreta do Supabase (F12)

    À parte, com a consola do navegador (F12) , localizaram uma consola (F12) do Supabase exposta no frontend. Essa chave ignora as políticas RLS: é a parte mais grave do incidente.

  3. 03

    Resposta imediata

    Nada foi divulgado. A chave comprometida foi revogada e estão a gerar-se novas chaves secretas, além de reforçar a base de dados com SQL (RLS).

RecuperaçãoFalha no fluxo de palavra-passe → conta
Consola F12Localiza a service key no frontend
Service key expostaChave secreta do luxine Supabase (já rodada)

Achados documentados

CONTA
Recuperação de palavra-passe

O fluxo de recuperação permitia tomar uma conta sem uma verificação de identidade suficiente. Sem F12 nem alterações de código.

CHAVE
Service role key do Supabase

Uma chave secreta estava exposta no frontend e foi localizada com a consola (F12). Ignora as políticas RLS: acesso quase total à base de dados.

CONTA
luxine

Conta sobre a qual se demonstrou o acesso. Capturas à guarda da equipa SifG22, sem divulgação.

Medidas aplicadas

  • ✓ Início de sessão, contas e comentários desativados temporariamente.
  • ✓ Chave secreta comprometida revogada; a gerar novas API keys secret.
  • ✓ Base de dados reforçada com políticas RLS em SQL.
  • ◴ Chaves secretas movidas para fora do frontend, só no backend.
  • ◴ Fluxo de recuperação de palavra-passe a ser refeito com verificação de titularidade.
  • ◴ Revisão dos registos de autenticação e encerramento de sessões suspeitas.