Bots de spam enganando o filtro do Discourse ao editar

Some new spam bots appeared, which are intelligent enough to optimise for Discourse’s built-in spam filters. They first make a comment without any links, and later on they’ll edit and add the link. Discourse doesn’t catch them this way. For example the following revision:

I’ve experienced this too, the most insidious are burying links in punctuation with their edits. Instead of generating clicks from the victim site they seem mostly concerned with creating inlinks and are oblivious to the nofollow being applied to said links.

The other more worrying trend is wiki edits, unlike posts and post edits these don’t appear in the user activity, I can only tell that it has happened because they’ve received a wiki editor badge, without ever posting a wiki post.

Is this spam bot TL1 or TL0?

I don’t see a link in that post. I just see text. Can you show raw?

I deleted the user, and I don’t remember the TL.

The links were like the following:

 <a href="https://shareit.onl/">shareit</a>  <a href="https://mxplayer.pro/">MX player</a>

or

<a href="https://messenger.red/">https://messenger.red/</a>  <a href="https://kodi.software/download/">https://kodi.software/download/</a>

or

 <a href="https://viamichelin.onl/">viamichelin</a> <a href="https://putlocker.ooo/">putlocker</a>

(The end of three different posts from the same user)

TL is critical for diagnosis here, cause you can just disallow edits to TL0 which is fine, if the spam bot is smart enough to get to TL1 … well we have a diff problem.

It was able to comment 3 posts + add 6 links without triggering the spam system, I think it must have been TL1, but I might check it in a backup.

Honestly, these bots are really smart. They post a “thanks for your post” reply first. There is absolutely nothing suspicious about it, even their email address is similar to their user name. Only googling the email gives results on spam list, nothing else really.

They wait for you to approve the post. Only then they later activate their spam posting bits.

These are not bots, they are humans. There has been a vast increase in human spammers in the last 8 years.

That’s been my impression too. It’s borne out in a variant of the technique described in the OP that we’ve seen. In this case the spammer “replies” to a comment and uses the Discourse quote feature to copy some of the other person’s text into their message. Then they insert their link into the copied block, thus making it look like the other user did it. Not sure if this is supposed to spoof the system into thinking the link is from someone of a higher T level or what. Kinda stupid, really, but definitely seems like something that had to be done manually, not by a bot. In particular, they don’t just drop the URL into the quoted text either; they highlight some text and use the link tool, adding a further layer of disguise. We’ve seen a few of these over the last couple of months.

Acabei de notar que spammers têm publicado posts que parecem legítimos e, semanas depois, voltam para inserir links para coisas como [netflix grátis] e [notícias de tecnologia].

Existe alguma maneira de impedir a inserção de links em todas as edições de usuários com nível de confiança (TL) inferior a 3? Até mesmo bloquear a inserção de URLs em edições de qualquer pessoa com TL menor que 4 seria aceitável.

Ou alguém encontrou outra forma de evitar isso?

É possível fazer com que todas as edições de não administradores/não moderadores atualizem o post? Acho que seria bom ver cada edição. Os spammers humanos estão ficando mais sofisticados.

Edição: Estou analisando um post de um spammer e ele parece completamente legítimo e pertinente ao tópico. Não há nenhuma pista de que seja um spammer, exceto pelos links injetados.

A primeira etapa é restringir o intervalo de edição permitido em “tempo limite de edição de post” do padrão para algo como um dia. A menos que seus usuários precisem regularmente editar posts de semanas atrás, você pode fechar essa opção nas configurações do seu site em cerca de 15 segundos.

Vou alterar a configuração hoje à noite, mas espero que exista outra maneira, pois isso provavelmente irritaria alguns usuários. As pessoas tendem a ser mais cautelosas ao falar livremente se sabem que não podem voltar atrás e editar as coisas depois. (Eu não posto com tanta frequência em fóruns que bloqueiam a edição e, em geral, me sinto menos à vontade.)

Idealmente, gosto de janelas de edição ilimitadas, e cada edição atualiza o tópico.

Isso é complicado, pois o post #12 poderia ser editado em um tópico com 40 posts. Se bumparmos o tópico por causa disso, seria extremamente surpreendente vê-lo. Você teria que rolar por todos os posts.

Acho que uma alternativa aqui são ferramentas de moderação que listam todas as edições que ocorreram além de um certo limite. Mas isso introduziria muita sobrecarga extra aqui.

Outra alternativa poderia ser dar ao TL2 e superiores limites de tempo de edição mais longos.

Por quê? Voltar “semanas depois” para editar algo é altamente anômalo. E você pode deixar as coisas como wiki se quiser sinalizar que são especialmente editáveis. Existe um meio-termo legal de “alguns dias” que você pode testar primeiro.

Na verdade, vou reduzir um pouco o padrão dessa configuração agora, de 60 dias para 30 dias, já que o caso de uso de voltar muito depois para editar me parece cada vez mais absurdo.

Isso pode ser útil.

Por enquanto, alterei os níveis de confiança necessários para adicionar links e editar posts, e tornei um pouco mais difícil alcançar o NC1.

O último post de spam que vi não foi do usual spammer óbvio — era alguém totalmente integrado ao site, fazendo uma pergunta ponderada como um usuário comum.

Vou tentar encontrar o spam antigo consultando todas as edições feitas por usuários do NC0.

Se um post fosse marcado como não lido, não bastaria adicionar o ponto azul ao lado do post e rolar automaticamente até ele quando um usuário visitasse o tópico?

Às vezes, as pessoas sentem que podem ter dito algo que não queriam dizer e desejam removê-lo. Vivemos em um mundo onde tudo o que uma pessoa já disse pode acompanhá-la pelo resto da vida e pode levar a problemas. As pessoas não são as mesmas durante toda a vida, e elas podem não querer que seu eu antigo (ou apenas um momento de raiva) permaneça online para sempre. Eu tendo a não falar tão livremente online em lugares onde a edição é limitada.

Acabei de me lembrar de que existe um webhook de post para ‘quando há uma nova resposta, edição, exclusão ou recuperação’. Ainda não verifiquei, mas se conseguir extrair a ação (‘editada’) do cabeçalho, posso escrever um script para enviar esses eventos a um painel externo para revisão manual. Isso resolveria o problema no meu site.

Se passou do limite de 30 dias (ou 1 dia, dependendo da configuração), elas podem sinalizar para remoção.

Você pode achar o tópico irmão Human-driven copy-paste spam informativo, caso ainda não o esteja acompanhando.

Essa forma de spam só funciona porque é invisível para os moderadores e para a comunidade ativa. Essa é a única razão pela qual isso está acontecendo. Talvez todas as edições pudessem reativar o tópico na visualização de atividade mais recente — se o tópico já tiver sido lido, seria um link direto para aquela postagem editada. Isso resolveria completamente ambos os problemas (o spam e o conteúdo inicial inútil de copiar e colar) de uma só vez.

Ainda mais simples (embora não tão eficaz), sei que meus colegas moderadores e eu ficaríamos felizes em monitorar uma visualização especial que simplesmente exibisse postagens que foram editadas, ordenadas por seu horário de edição (e talvez opcionalmente filtradas por nível de confiança).

Acho que você está certo, @sam. Precisamos de duas configurações de site aqui: uma para TL0 e TL1, e outra para níveis de confiança mais altos. Você pode atribuir isso na próxima semana? Deve ser fácil.

Recomendo as seguintes configurações de janela de edição permitida:

  • TL0 e TL1 — 1 dia
  • todos os demais, a partir do TL2 — 30 dias (padrão atual)