Como desabilitar 2FA de uma conta Mastodon pelo banco de dados

Descrição de situação que talvez seja bug do Mastodon (sistema de microblogging federado por ActivityPub) da comunidade Ayom ao tentar desabilitar o duplo fator de autenticação (2FA) de uma conta e de como foi possível contornar o erro, considerando que a necessidade pode vir a se repetir ou, também, eventualmente ajudar a administração de outros servidores.

Pela Web

Por algum motivo desconhecido, não foi possível à própria pessoa detentora da conta desativar o duplo fator de autenticação em https://ayom.media/settings/two_factor_authentication_methods

Tampouco houve sucesso na interface de administração na Web, https://ayom.media/admin/accounts — Nesse caso, após pesquisar pela conta e carregá-la, quando ela tem 2FA ativo, aparece botão com a opção de desativar. Porém, ao acioná-lo, ocorria erro, sem explicação.

Por linha de comando

Tentamos, então, fazer isso pela interface de linha de comando. Nossa estrutura utiliza Docker em modo Swarm. Alinhando o necessário nesse cenário com a documentação do comando de administração do Mastodon, executamos o seguinte, também sem sucesso. Considerando ayom_mastodon-web o nome do contêiner e nome.da.conta autoexplicativo:

docker exec -it $(docker ps -q --filter name=ayom_mastodon-web) tootctl accounts modify nome.da.conta --disable-2fa

Ocorreu erro, provavelmente o mesmo, porém visível agora, de quando a operação foi tentada pela Web.

Banco de dados

Fomos, então, pesquisar sobre o esquema do banco de dados do Mastodon, em PostgreSQL. No ambiente Docker Swarm da Ayom, ele está em execução como outro serviço, denominado mastodon-db, da pilha ayom, sendo mastodon o nome de usuário e mastodon_production o nome do banco de dados. O nome do contêiner é ayom_mastodon_db.

Cópia de salvaguarda

Elementar. Executamos, para isso, nosso script backup_mastodon-db.sh, que salva o arquivo, por padrão, em ~/bkp

Determinar a conta e zerar campos do 2FA

Abrir o programa psql já com a base em questão:

docker exec -it $(docker ps -q --filter name=ayom_mastodon-db) psql -U mastodon -d mastodon_production

Exemplo de como procurar pela conta que deseja alterar, para descobrir seu ID:

select id,username,domain from accounts where username='daltux'';

Após muito pesquisar, constatamos que os dados de 2FA ficam nos campos otp_required_for_login, otp_secret e otp_backup_codes da tabela users. Basta zerá-los, considerandooo o id descoberto no :

begin;
update users set
  otp_required_for_login = false,
  otp_secret = NULL,
  otp_backup_codes = NULL
where id = 10;
commit;

⚠️ Aviso de segurança da informação

Recomenda-se ter certo nível de certeza sobre quem solicitou a desativação de 2FA ser realmente a pessoa titular da conta, pois a "engenharia social" é a maneira mais esperada de atacantes tentarem contornar tal proteção.

1 points · 0 comments · view on lemmy.world

0 Comments

No comments yet.