Notícias
Luxine

Reconstruímos as contas da Luxine: palavras-passe novas, verificação por e-mail e multiconta

Depois do aviso da SifG22, refiz de raiz o sistema de contas. Por segurança, reiniciámos todas as palavras-passe. Conto o que mudou, como recuperar o teu acesso e porque é que os painéis com aspeto de terminal eram uma pista do que vinha aí.

Reconstruímos as contas da Luxine: palavras-passe novas, verificação por e-mail e multiconta
Ler em
◆

Há dois dias contei a falha que a equipa SifG22 me demonstrou: o meu sistema de recuperação de palavra-passe deixava entrar numa conta alheia sem verificar de verdade quem a pedia. Fechei o acesso, as contas e os comentários, e prometi voltar com o sistema refeito.

Já está. E não foi um remendo: reconstruí a autenticação por inteiro.

Aviso importante antes de mais: reiniciámos as palavras-passe de todas as contas. Nenhuma palavra-passe anterior funciona. Abaixo explico exatamente como recuperar o teu acesso consoante o teu caso.

Primeiro: como voltas a entrar

Há duas situações, e dependem de teres ou não um e-mail de recuperação associado.

Se tinhas e-mail de recuperação

Podes fazê-lo sozinho, agora mesmo. Vai a Iniciar sessão → «Esqueci-me da palavra-passe» e segue os três passos. A quem está neste caso já enviámos um aviso para o e-mail.

Se não tinhas e-mail de recuperação

Precisas que te emita uma palavra-passe temporária, mas não tens de andar à minha procura: tenta o processo à mesma. Ao indicares o teu utilizador, se a conta existir e não tiver e-mail associado, chega-me um aviso automático e trato disso.

Podes também escrever para contactoluxine@gmail.com indicando o teu nome de utilizador, sobretudo se eu demorar. Ao entrares com a temporária, o site obriga-te de imediato a escolher uma palavra-passe própria.

É mais incómodo, e lamento. Mas a alternativa — dar acesso a quem simplesmente diz ser tu — é exatamente a falha que a SifG22 me apontou.

O que mudou, uma coisa de cada vez

Recuperar a palavra-passe já não é adivinhar um e-mail

Este era o buraco. Antes, bastava acertar no nome de utilizador e no e-mail de recuperação para o sistema deixar mudar a palavra-passe. O problema salta à vista assim que o dizemos em voz alta: o e-mail de alguém não é um segredo. Aparece num perfil, num comentário antigo, em qualquer lado.

Agora o e-mail já não é a prova, é só o destinatário. O processo tem três passos:

  1. Indicas o teu utilizador e o teu e-mail.
  2. Enviamos um código de 6 dígitos para esse e-mail. Se não fores tu, o código chega à caixa do dono real e tu ficas de fora.
  3. Só depois de verificares o código podes escolher a nova palavra-passe.

O código expira ao fim de 15 minutos, admite 5 tentativas e é queimado ao ser usado. E há um detalhe que importa: quando os dados não batem certo, o sistema responde exatamente igual a quando batem. Antes, uma mensagem diferente para «esse utilizador não existe» transformava o formulário numa ferramenta para descobrir que contas estavam registadas.

Além disso, o envio de e-mail agora funciona mesmo. No sistema anterior, o link de recuperação pura e simplesmente não chegava, mas o site dava o envio como bem-sucedido. Isso era mentir ao utilizador, e estava no meu código.

Aqui tens para carregar. No passo 2 há dois botões: um faz de dono da conta, o outro de alguém que só conhece o e-mail.

Palavras-passe temporárias que expiram

Para as contas sem e-mail, um administrador pode emitir uma palavra-passe temporária. Mas com regras estritas:

  • Expira (por omissão em 24 horas).
  • Quem entra com ela não pode usar o site até definir uma palavra-passe própria. Não é uma sugestão: qualquer página a que tente ir devolve-o ao ecrã de alteração.
  • Emiti-la destrói a palavra-passe anterior. Se a conta estava comprometida, a antiga deixa de servir nesse instante.
  • É mostrada uma única vez. Na base de dados fica apenas a sua impressão cifrada. Se se perder, não pode ser consultada: é preciso emitir outra.

E a parte que mais me importa deixar clara: eu não vejo as vossas palavras-passe. Nem a temporária depois de fechada a janela, nem — sobretudo — a que escolhem a seguir. A única coisa registada é a data em que a mudaram. Não é uma promessa: tecnicamente não existe em lado nenhum onde eu a possa ler.

É este o aspeto que tem por dentro. Executa os comandos e compara o que o sistema antigo respondia com o que responde o atual:

Várias contas no mesmo navegador

Isto não é segurança, é comodidade, mas aproveitei para o fazer bem. Agora podes ter várias contas abertas ao mesmo tempo e alternar entre elas a partir do menu de utilizador sem reescrever a palavra-passe, como no correio.

Cada conta guarda a sua própria sessão em separado, e todas continuam a expirar à hora exata. Ter várias abertas não prolonga o acesso de nenhuma.

As sessões agora podem mesmo ser cortadas

Antes, uma sessão iniciada continuava válida até expirar, acontecesse o que acontecesse. Agora ficam registadas e são cortadas quando devem: ao mudares a palavra-passe fecham-se todas as outras sessões da tua conta. Se alguém tinha entrado com a tua palavra-passe antiga, é expulso no ato.

Transferir o teu histórico para outra conta

Se tinhas contas repetidas ou queres consolidar, podes mover os teus comentários para outra conta tua. Exige a tua palavra-passe e escrever uma frase de confirmação, para não acontecer por acidente. Fica registado: eu vejo que a transferência ocorreu, entre que contas e quando. Nunca qualquer palavra-passe.

Sobre os painéis com aspeto de terminal

Vários me perguntaram nestes dias: porque é que os painéis internos têm aquele ar de consola, com os $ comandos e o verde sobre preto?

A resposta curta: sim, era uma pista.

Quando comecei a refazer isto, a primeira coisa que mudou não foi o código de segurança mas a interface de administração. Não por capricho estético. Um painel que parece um terminal obriga-te a tratar cada ação como aquilo que é: um comando com consequências, não um botão bonito que carregas sem pensar. $ ban, $ chmod, $ passwd -t. Quando o ecrã to escreve assim, pensas duas vezes antes de carregar.

E há algo mais prático. Ao redesenhá-los, tive de enumerar, uma a uma, todas as ações que um administrador podia executar. Esse inventário foi o que me fez ver quais não pediam confirmação, quais não ficavam registadas em lado nenhum e quais — as mais graves — não exigiam reescrever a minha palavra-passe. Hoje, mudar um cargo ou emitir uma temporária pede a minha palavra-passe de administrador de cada vez, mesmo com a sessão aberta.

Por isso, quando viram aparecer esses painéis, o que estavam a ver era o princípio deste trabalho. A reconstrução já estava em curso.

O que não resolvi

Prefiro dizê-lo a que o descubram vocês.

  • As contas sem e-mail dependem de mim. O aviso automático faz com que eu saiba, mas não resolve o fundo da questão: não há forma de verificar que alguém é quem diz ser sem um canal verificado, por isso essa comprovação continuo a fazê-la à mão. Se eu demorar a responder, essas pessoas esperam. A única solução real é associarem um e-mail de recuperação assim que entrarem.
  • O limite de tentativas vive na memória do servidor. Na prática trava a força bruta a partir de um IP, mas um atacante distribuído por várias instâncias conseguiria mais tentativas do que o limite nominal. Está identificado e vou movê-lo para um armazenamento partilhado.
  • Isto não passou por uma auditoria externa. Corrigi o que a SifG22 encontrou e o que eu próprio vi ao rever. Isso não é o mesmo que dizer que não ficou nada.

Se encontrares alguma coisa

A forma como a SifG22 fez isto — avisar-me em privado, demonstrá-lo sem divulgar qualquer dado — é exatamente a correta. Se encontrares algo estranho, escreve para contactoluxine@gmail.com antes de o contares por aí. Vou agradecer, mesmo que seja uma banalidade.

Obrigado pela paciência nestes dias. E obrigado à SifG22: um aviso de um amigo custa muito menos do que a alternativa.

INVESTIGAÇÃO RECENTE (COMENTÁRIOS)

COMENTÁRIOS
Identifica-te para comentarEntra na tua conta ou regista-te na página de acesso oficial para comentar e teorizar.

A CARREGAR BASE DE DADOS...
Voltar
Índice