Tabnews - Problemas de segurança?
Olá, venho por meio deste post relatar uma possível vulnerabilidade no mecanismo de tabcoins/tabcashs. Sou estudante de S.I e hoje pela manhã realizei alguns testes na plataforma e obtive os seguintes resultados:
Premissas
Sobre os comentários:
- Após comentar sucessivamente, a plataforma me permitiu realizar 6 comentários consecutivos antes de realizar um bloqueio.
- De acordo com os testes o bloqueio durou em média 20-30 minutos, porém, mesmo a conta sendo bloqueada várias vezes o tempo do banimento não aumentou.
- Terminado o bloqueio, experimentei usar intervalos de tempo de 60s entre cada comentário e a plataforma me permitiu comentar até 14 vezes antes de um nova punição ser aplicada.
- Não há captchas ou verificações de segurança ao comentar.
Sobre as postagens:
- Consegui realizar até 10 postagens consecutivas antes do bloqueio, porém ao definir espaços de tempo entre as postagens, a plataforma me permitiu criar mais de 10 postagens por conta antes de bloquear novamente.
- Aparentemente o tempo de bloqueio da plataforma para postagens e comentários é igual, ou seja, não há uma penalização de tempo maior para um segundo bloqueio.
- Não há captchas ou verificações de segurança ao postar.
Criação de contas
- Aparentemente a plataforma permite criar diversas contas apenas utilizando emails e senhas diferentes, o que torna o processo de criação de "contas zumbies" muito fácil.
Problema
Farm de Tabcoins
- Criei um post com uma conta aleatória (Conta 1)
- Comentei no post da conta 1 com uma conta secundária (Conta 2)
- Apaguei o post (Conta 1)
Resultado
- A conta 1 teve: 0 coins e 0 cashs
- A conta 2 teve: 2 coins e 0 cashs
Após repetir o procedimento 9 vezes:
- A conta 1 teve: 0 coins e 0 cashs
- A conta 2 teve: 16 coins e 0 cashs
Conclusões do teste:
- Como não há um mecanismo de segurança no processo de criação das contas, eu poderia facilmente criar 11 contas zumbies.
- Com uma das 11 contas criadas, eu poderia fazer um post automático com ela dentro da plataforma.
- Com restante das contas, eu poderia comentar através de cada uma delas e cada uma receberia 2 tabcoins.
- Após isso, eu poderia excluir o post e realizar o processo por mais 9 vezes (com base no experimento acima).
- Até a conta que está gerando os posts ser bloqueada novamente, eu teria o seguinte resultado com base no experimento: a. 10 contas com 16 coins cada, totalizando 160 moedas. b. Como o bloqueio dura em média 20 minutos: Em 1h eu teria 480 coins distribídos em 10 contas.
O que é possível fazer com esses tabcoins?
Boicote
Com esse farm de 480 tabcoins obtidos em aproximadamente 1h, eu poderia facilmente boicotar alguém com 240 downvotes em uma publicação.
Anúncios
Como o objetivo dos tabcashs é para futuramente anunciar produtos/serviços, ao farmar 480 tabcoins eu poderia criar um post fantasma na minha conta principal e fazer com que as "contas zumbies" façam um upvote nela, convertendo 2 coins em 1 tabcash para conta zumbie, ou seja, se um conta zumbie tem 16 coins, seria possível obter até 8 tabcashs. Algumas coisas que eu não cheguei a testar mais a fundo sobre isso é:
- Não cheguei a ver quantos upvotes é possível por post, porém é possível dar mais de um por publicação.
- Não prestei atenção se um post ao receber upvote, ele também receve tabcashs, mas acredito que sim. Em resumo, é possível fazer uma espécie de "lavangem de tabcoins" para tabcashs.
Possíveis soluções
- Incorporar um captcha na publicação de postagens.
- Atribuir verificadores de indentidade ao realizar comentários.
- Captchas na criação de contas.
- Aumentar o tempo dos bloqueios para contas que foram penalizadas dentro do mesmo dia.
- Banir contas que tiverem muitos bloqueios dentro de um curto período de tempo.
- Restringir um limite de upvotes/downvotes por publicação ou comentário.
Considerações finais
Como podemos ver, o sistema atual permite a criação de farms de coins e cashs mesmo realizando o processo todo manualmente, porém, vamos supor que tudo isso fosse feito por um script? Eu poderia automaziar todo o processo, desde a criação de contas até a etapa de conversão de coins para chashs.
O objetivo deste post é informar e alertar algumas possíveis vulnerabilidades com o intuito de melhorar a plataforma e consequentemente o ambiente entre todos os membros da comunidade.
Contas utilizadas durante o teste: MRX, ROBOT e RYZEN.
Deseja realizar testes? Saiba mais em: Clique aqui Para relatar uma vulnerabilidade, acesse: Contato
lucaswilliams
excelente teste meu caro! Tudo isto faz parte do amadurecimento da plataforma, então muito obrigado por fazer esta publicação e reportar seus resultados 🤝 Eu alterei levemente a formatação da sua publicação, pois para alguns itens não era possível de ler sem a quebra de linha.
Em paralelo, eu recebi os alertas de 429
e muito obrigado por destacar as contas. Acabei de fazer o Nuke delas e os saldos devem ser revertidos 🤝
Com certeza ao longo do caminho iremos melhorar a segurança contra estes tipos de abuso e não deixe de continuar a deixar esse espaço aqui mais seguro, onde a cada passo que dermos nesse sentiro, iremos reportar aqui 💪
Em paralelo, sugiro fazer este tipo de teste no Ambiente de Homologação, como apontado por GabrielSozinho nesta publicação para não criar ruído no ambiente que todo mundo está usando para valer. O Ambiente de Homologação é uma cópia exata do de Produção, porém com outro banco de dados. Fora isso, ele é muito mais devagar, mas você irá conseguir realizar qualquer tipo de teste.
Abração meu caro e seja muito bem vindo ao TabNews 🤝
Quero aqui também colocar meu ponto de vista sobre a questão.
Acredito que todos concordam que segurança é mais do que importante, é importantíssimo, fundamental.
Contudo, nada nessa vida sai de graça, e, segurança tem preço alto.
Quando falo em preço, não me refiro a dinheiro, mas a situações que devem ser cuidadosamente analisadas, antes de simplesmente sair "travando tudo".
Certa vez ouvi uma frase que gostei muito: "Burocracia não é segurança", e eu nunca mais esqueci disso.
Vou sitar dois fatores que acho que devem ser pensados com calma.
#Segurança mal aplicada, pode nos afastar da cultura principal do projeto.
Copiando as palavras do próprio Filipe, o objetivo do tabnews é "um pedacinho diferente de internet".
Como vamos ter um pedaço diferente, fazendo igual ao que já tem?
Não estou defendendo segurança 0, repito. Defendo sim, segurança com inteligência e cuidado, sem tirar a liberdade dos usuários.
O segundo ponto: Acessibilidade e segurança, se não forem bem combinadas, resulta em exclusão de uma menoria.
Quando você insere captcha, por exemplo, se esse sistema de captchas não funcionar bem com leitor de telas, você vai perder pessoas com deficiência usuárias de leitor de telas, que, vendo-se na dependência de um alguém para ter de ajudar a logar, criar conta ou publicar algo, vai desistir.
Alguém levantará a questão: "As redes estão aí, e tem captcha, e não tem pessoa com deficiência entrando"? Sim, tem. Por isso, é interessante pesquisar que tipo de sistema as redes mais populares estão usando e como elas aplicam isso. Sou um pouco ignorante com o mundo web, então não sei dizer exatamente como eles implementam, mas, é bom sempre pegar no que está dando certo.
O google, por exemplo, tem um sistema de captcha muito bom e acessível.
Mas, sinceramente... eu ainda acho que, se tiver uma outra forma de adicionar segurança sem captcha, seria melhor, rs.
A autenticação de dois fatores é um outro problema ignorado pelas grandes redes.
Eu sou cego. Graças a Deus, tive a oportunidade de aprender alguma coisa sobre tecnologia. Não tenho nenhuma dificuldade em pegar meu telefone e ler um sms que me chega com um código e digitar no meu computador. Mas, acreditem, eu não sou maioria entre meus colegas. Não, não é pretenção, não sou ninguém tão importante e gênio, mas, falo de uma realidade que vivo.
Agora, uma das ideias colocadas aqui e que apoio sem ressalvas é a denúncia de postagens e até um controle razoável de postagens por minuto.
Bom, desculpe se disse algo demais ou ofendi alguém, mas, senti vontade de trazer também minha maneira de enxergar o tema.
Ótima análise, e bons pontos a serem considerados. Como já foi dito nos comentários incorporar um captcha, embora efetivo, prejudicaria a usabilidade e dificultaria o uso da API pela comunidade.
Como o Deschamps já mencionou nos comentários, ele foi notificado do grande número de requisições, além de você ter sido bloqueado algumas vezes, sendo assim já existem mecanismos de proteção que podem e vão ser aprimorados.
Minhas sugestões:
- Registrar o id do usuário e o texto digitado quando houver um bloqueio temporário ou um 429. Permitindo uma revisão dos administradores para identificar bots e spams.
- Aumentar o tempo de bloqueio para bloqueios consecutivos, assim, se um usuário for boqueado repetidas vezes o bloqueio não seria de apenas 20 minutos sempre (Também sugerido pelo autor do post);
- Adicionar bloqueios longos, como forma de disciplinar usuários, com bloqueios de 1 dia até 1 semana, por exemplo. Podendo ser aplicada automatica ou manualmente através da ferramenta proposta no item 1;
- Adicionar um banimente permanente, em casos identificados como spam ou bot. Podendo ser aplicada automatica ou manualmente através da ferramenta proposta no item 1 (Também sugerido pelo autor do post).
Acredito que com essas proteções nos comentário e novos posts, a distribuição de tabcoins estaria mais protegida, tornando desnecessário, em um primeiro momento, uma limitação de upvotes e downvotes.
Primeiro, parabens pelo esforço que você fez pela comunidade... Sobre suas sugestōes, captcha pra comentar é complicado hein, cai matar a usabilidade antes mesmo de lançar a plataforma.
Por sorte temos uma gigante pensando em como resolver esses mesmos problemas com bots - o twitter... Quem sabe eles venham com uma solução interessante.
Será que, como o modelo vai envolver valor monetário, não faz sentido requisitar validação de identidade para poder postar/comentar?
que observação fantástica eu me cadastrei ontem também achei muito fácil a criança da conta mais não tive tempo de navegar pof toda a plataforma.
Acho que dava pra fazer um sistema que quando o usuario começa a criar contas zumbis desenfreado, a API começa a exigir o consumidor a fazer operações intensivas do nivel de minerar bitcoin e retornar o resultado pra API pra ela aprovar o request. e a cada novo request ele aumenta a intensidade.
Sou advogado e venho acompanhando algumas decisões judicias em que empresas, inclusive do governo, são condenadas por falta/falha de segurança nos sites, principalmente na hora de formalizar o cadastro.
Um dos casos é pela falta de informar a porta lógica de origem e assim não conseguem provar quem efetuou a fraude.
Outra coisa que indago é a foto segurando um documento. Essa foto vai estar armazenada em algum lugar, certo? Quem consegue provar que essa foto não pode ser usada indevidamente para efetuar outros cadastros?
Tenho várias dúvidas e se puderem me ajudar fico agradecido.
Ótimo relato, futuras mudanças poderão reduzir possiveis spams e farms de tabcoins, com o crescimento do tabnews esse tipo de comportamento pode se tornar recorrente.
A implementação de captcha para postagens ficaria algo muito massivo e chato, adoro o tabnews por conta de sua simplicidade.
Acho que isso também não seja um problema ( não cheguei a testar, por isso digo que acho que não seja ) pois um dos pre-requisitos para a criação de contas seria a ativação de sua conta em seu email.
Mesmo assim, seria interessante um tipo de captcha no registro para evitar scripts automatizados de criação de contas.
Ótimo review lucas! \O/
Esse tipo de vunerabilidade é muito comum em redes sociais, principalmente Instagram e Facebook, e ainda é um problema para eles, mas eles tem uma maneira bem criativa e que ajuda na detecção de bot, fazem isso observando qual é o comportamento do usuário dentro da plataforma, como por exemplo a velocidade de digitação, ou a posição do mouse, o que despertar a duvida de "esse comportamento é humanamente possivel?", se ele for muito "certeiro" e rapido abre se um alerta, ao repetir isso algumas vezes ele bloqueia e não aceita ao iterações feitas anteriormente, como uma penalidade
nossa quando eu vejo esses tipos de postagens meus olhos brilham, otimas observações as suas. Quando mais seguro tiver esse ambiente mais pessoas vão querer fazer parte do processo ainda sou iniciante na área e quero muito poder debater e ajudar a resolver esses tipos de problema.
Contribuição sensacional!!! Valeu
Estive pensando sobre a maneira mais simples de resolver esses problemas.
Um sistema de denúncia de spam.
Se um post receber um número X de denúncias além do saldo de up/down votes, o post é apagado e o usuário fica banido por um tempo.
Se um mesmo usuário for banido 3 vezes dentro de um determinado período, a conta é suspensa por um período muito maior ou para sempre e, o mais importante, os upvotes retirados, prejudicando a conta principal do usuário, que estaria recebendo os upvotes das contas de spam.
Acredito que a segurança deve ser mais pensada agora que lançamos, mas não deve ser bruta para não espantar as pessoas, por exemplo, se a pessoa quiser comentar e precisar passar por um captcha antes, vai ser uma experiência negativa que pode afetar a permanência dela no site. Então o correto seria definir um total de comentários consecutivos antes de necessitar do captcha, assim como no login. No cadastro é bem possível a utilização de captchas, não vejo problemas, mas acho que isso não impede a criação do que você chama de "contas zumbis", precisaria pedir algo que é único a cada usuário, no caso temos o e-mail, mas ele pode ser gerado facilmente com aqueles e-mails temporários, o mais viável que eu consigo pensar é perguntar o número de celular da pessoa para validar, uma pessoa tem geralmente um único número, e como é um número de celular, não chega a ser uma pergunta pessoal como RG ou CPF, o que também espantaria usuários.
Excelente postagem! Trabalho com marketing para startups, entrei na plataforma após ver o vídeo no youtube, fiquei interessado na parte de anúncios futuros. Logo percebi que era possível fazer um farm de cash devido à simplicidade atual da plataforma e se soubesse programar estaria nesse momento fazendo isso.
Se eu, um marketeiro safado pensei nisso logo que vi o vídeo e me cadastrei facilmente, outros já podem estar executando...
E de certa forma é "fácil" ter postagens diferentes para talvez dificultar a identificação do bot, a pessoa pode pegar postagens de outros foruns e deixar num repositório, junto de comentários das próprias postagens.
É possível? Não sei, eu sou um marketeiro safado, vocês são os devs. O que me dizem?
Muito interessante ver a propria comunidade ja engajada em criar soluçoes de problemas que seriam uma dor de cabeça no futuro.
Esta questão pode ser resolvida de algumas formas, mas como se trata de segurança, o ideal é que seja discutida com a equipe de dev internamente, uma vez que expondo as soluções aqui um atacante teria muitas ferramentas para tentar de outras formas.
A recomendação que eu fiz no meu post mais cedo talvez ajude a resolver este problema usando blockchain, tornaria inviável a criação de um bot para tal.
Creio que se implementasse autenticação de dois fatores com número de celular antes de poder receber as tabcoins ou para poder liberar o uso delas na plataforma dificultaria o uso indevido de contas fantasmas para gerar tabcoins.
Ahh, então foi você hahah. Eu vi as postagens da conta e exclui todas elas um pouco depois, assim o saldo delas ficou negativo. Eu comentei em duas delas (mrx
e robot
) dizendo para você realizar testes no ambiente de homologação. Depois fiquei monitorando por um tempo pra ver se ainda era publicado alguma coisa.
Creio que deveria ter dado nuke
logo na conta, para dificultar esse tipo de coisa, ainda mais porque as contas nunca haviam postado nada com valor concreto.
Muito bom trabalho!
Acho que seria pertinente abrir uma issue no projeto com esse estudo, as discussões que estão ocorrendo nos comentários seriam melhores aproveitadas no github.
Muito interessante ver pontos de segunrança da qual sou capaz de analisar também, muito bom o relatorio de modo geral, montarei relatorios como esse.
Que visão fantástica, como descobriu sobre esses aspectos?
Duas alternativas para mitigar esse comportamento seria o de incorporar um elemento de controlo que actuasse sobre custo ou tempo. Isto é, se o atacante tivesse que aguardar um determinado tempo para fazer publicações ou actuar na aplicação, ele teria que distribuir em complexidade e tempo o método de ataque, aumentando exponencialmente o tempo de execução desde, enquanto aumentaria a probabilidade de ter escrutínio social com downvotes). Ou em alternativa um custo por operação que torne execução do ataque excessivamente caro e então proibitivo.
Muito interessante esse posto! Não sabia de algumas coisas que foram faladas.
Creio que o garimpo ja está rolando solto aqui, afinal qual sentido desse tipo de publicação => "Elon Musk compartilha foto de... " ????
Ótimos pontos logo que fiz o cadastro achei muito simples também, mas como será OpenSoure acredito que a comunidade estará sempre atenta e tentando melhorar. Eu serei um deles ☝️