Você foi hackeado por um plugin

Acabei de reconstruir um dos meus fóruns Discourse e, quando o carrego no navegador, a seguinte mensagem aparece em um pop-up:

Você foi hackeado por um plugin! por w3shi(Hackerone)-S.Lakshmi Vignesh(RCE-POC)

Nossa… O que está acontecendo? Um dos plugins que uso foi comprometido?

3 curtidas

Alguma chance de você ter usado o plugin migrate password? Ou outro plugin do repositório discoursehosting?

Parece que este fórum também foi afetado Am I hacked? or not - Forum Management - Suggestions - DxO Forum

2 curtidas

Sim, está na lista. E o único do discoursehosting.

Lembro que ele precisa estar ativo para permitir que usuários “antigos” façam login, correto?

Mas agora a questão é mais se a instalação foi comprometida ou se é apenas essa mensagem. O site está fora do ar no momento, por segurança.

Junto com esse plugin, aqui está a lista do que estou usando:

apenas remova qualquer coisa que se refira a discoursehosting

9 curtidas

Tradução do Google da postagem do fórum em francês:

Um pesquisador de pseudo-segurança recuperou um antigo repositório Git para um plugin usado pelo fórum e o sequestrou para simplesmente exibir esta mensagem.

O repositório em questão (GitHub - discoursehosting/discourse-migratepassword: Um toque de segurança) foi inspecionado e nenhum código malicioso está presente (é simplesmente uma prova de conceito).

Este repositório na verdade mudou seu URL (agora está disponível em GitHub - communiteq/discourse-migratepassword: Suporte para hashes de senha migrados) e o usuário simplesmente recriou o repositório discoursehosting/discourse-migratepassword, que anteriormente redirecionava para communiteq/discourse-migratepassword, para colocar código não relacionado lá. Estávamos usando o URL antigo, por isso fomos afetados.

Se isso for verdade, tudo bem… Mudei o URL do plugin para communiteq e estou reconstruindo no momento. Mas tenho que investigar isso mais a fundo (como não sou programador, não posso ter 100% de certeza).

5 curtidas

Resumo\n\nEsta é uma vulnerabilidade do Github em uma classe de exploit chamada "Repojacking".\n\nRecomendamos que todos verifiquem as URLs de seus plugins do Github e renomeiem cada instância de discoursehosting para communiteq\n\n\n## Contexto:\n\nTivemos que renomear nossa empresa de Discoursehosting para Communiteq em 2019.\nSe isso acontecer, o Github redireciona automaticamente as URLs para repositórios do github para seu novo local, até que alguém crie um repositório com o mesmo nome. Nesse momento, o novo repositório terá preferência.\n\nO Github costumava marcar tais repositórios como "aposentados" e proibia a criação de um repositório com o mesmo nome.\n\nUm exploit anterior é descrito aqui. Aparentemente, essa correção não é mais eficaz.\n\nRegistramos um relatório de abuso no Github e tentaremos derrubar este repositório com todos os meios disponíveis.

16 curtidas

Neste momento, o plugin comprometido apenas exibe uma mensagem e deixa um arquivo inofensivo em /tmp.
Portanto, nada de ruim aconteceu - ainda. É importante alterar a URL do seu plugin antes de reconstruir.

7 curtidas

Uau, isso pode facilmente enganar o usuário final, uma das principais desvantagens de não usar a hospedagem oficial do discourse.org.

Se qualquer uma das contas

angusmcleod (Angus McLeod) · GitHub ou merefield (Robert) · GitHub

deixasse de existir

então um primeiro sub-caminho seria exposto, então haveria um comando de clone no meu app.yml para uma reconstrução executar.

3 curtidas

Para mitigar o impacto potencial para usuários da instalação padrão, adicionamos código para detectar github.com/discoursehosting/ e abortar quaisquer reconstruções/atualizações.

O erro será algo como

---
ERRO: O arquivo de configuração containers/app.yml contém referências a uma organização comprometida do github: github.com/discoursehosting
Por favor, remova quaisquer referências a esta organização do seu arquivo de configuração.
Para mais informações, veja https://meta.discourse.org/t/374703/6
---
31 curtidas

Obrigado, David!

13 curtidas

Olá comunidade Discourse,

Quero pedir sinceras desculpas pela perturbação causada pelas minhas ações em relação ao repositório de plugins. Ao tentar destacar uma questão de segurança, cometi erros graves que violaram o código de conduta.

Daqui para frente, garantirei que minhas ações sigam as práticas de divulgação responsável e agradeço a oportunidade de aprender com isso.

Mais uma vez, sinto muito pela perturbação causada.

@w3shi

20 curtidas

Obrigado por suas desculpas.

A próxima coisa não tão responsável foi não ter entrado em contato comigo ou com a CDCK privadamente quando você desistiu do handle, porque nas últimas três horas, outra pessoa poderia ter visto sua postagem e registrado.

Recuperei o controle do antigo handle do Github. E obrigado por fazer a coisa certa eventualmente, e por apontar que o Github não protege mais redirecionamentos pela quinta vez (a última vez foi a quarta vez: “Esta descoberta marca a quarta vez que um método alternativo foi identificado para realizar Repojacking”)

Sugiro que você procure o Github e colete sua recompensa!

12 curtidas

Peço sinceras desculpas por todo o transtorno causado! E obrigado pela sua compreensão @RGJ !.

12 curtidas

Bem-vindo à comunidade e obrigado por consertar tudo.

9 curtidas

Você basicamente deve assumir que nada é seguro, o que também não funciona bem.

Há poucos dias veio à tona que um dos desenvolvedores por trás de algumas contas NPM de pacotes ESLint Prettier teve sua conta comprometida e publicou novas versões comprometidas de alguns pacotes populares:

Esses pacotes foram então referenciados em outros pacotes, pois muitos afirmam que você deve sempre atualizar para as versões mais recentes.

Depois que vi essa thread, sugeri um recurso para introduzir a validação de assinatura de plugins/componentes de tema ao atualizá-los: Plugin and theme component signing

Isso não impediria uma chave comprometida, mas pelo menos tornaria parte da cadeia de suprimentos mais confiável. No final, ainda é possível que bibliotecas de terceiros comprometidas sejam incluídas. Dependências adicionais não são realmente visíveis.

4 curtidas

Não tenho certeza se isso ainda funciona. Eu tinha um plugin apontando para a URL comprometida do github e a mensagem de erro durante a reconstrução apenas dizia que falhou ao puxar o repositório, com mais detalhes sobre uma versão de gem ou algo assim. (Não consigo colar as informações exatas, pois estão muito distantes no meu histórico de rolagem de todo o outro ruído durante as compilações subsequentes.)

Parece que a URL/repositório não existe mais, o que é bom (pelo menos até que outra pessoa o recrie), mas a mensagem de erro teria economizado muito tempo.

1 curtida

De fato, o @RGJ está de volta no controle da organização do github, então removemos a mensagem de erro temporária.

5 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.