Has sido hackeado por un plugin

Acabo de reconstruir uno de mis foros de Discourse y, cuando lo cargo en el navegador, aparece el siguiente mensaje en una ventana emergente:

¡Has sido hackeado por un plugin! por w3shi(Hackerone)-S.Lakshmi Vignesh(RCE-POC)

Santo cielo… ¿Qué está pasando? ¿Uno de los plugins que uso fue comprometido?

3 Me gusta

¿Hay alguna posibilidad de que hayas utilizado el plugin migrate password? ¿O algún otro plugin del repositorio discoursehosting?

Parece que este foro también se vio afectado Am I hacked? or not - Forum Management - Suggestions - DxO Forum

2 Me gusta

Sí, está en la lista. Y es el único de discoursehosting.

Recuerdo que necesita estar activo para permitir que los usuarios “antiguos” inicien sesión, ¿correcto?

Pero ahora la pregunta es más si la instalación se vio comprometida o si solo muestra este mensaje. El sitio está caído en este momento por seguridad.

Junto con ese plugin, aquí está la lista de lo que estoy usando:

solo elimina cualquier referencia a discoursehosting

9 Me gusta

Traducción al español de la publicación del foro francés:

Un investigador de pseudo-seguridad recuperó un antiguo repositorio de Git para un plugin utilizado por el foro y lo secuestró para mostrar simplemente este mensaje.

El repositorio en cuestión (GitHub - discoursehosting/discourse-migratepassword: Un toque de seguridad) ha sido inspeccionado y no hay código malicioso presente (es simplemente una prueba de concepto).

Este repositorio había cambiado su URL (ahora está disponible en GitHub - communiteq/discourse-migratepassword: Soporte para hashes de contraseñas migrados) y el usuario simplemente recreó el repositorio discoursehosting/discourse-migratepassword, que anteriormente redirigía a communiteq/discourse-migratepassword, para colocar código no relacionado allí. Estábamos usando la URL antigua, por eso nos vimos afectados.

Si eso es cierto, está bien… Cambié la URL del plugin a communiteq y estoy reconstruyendo en este momento. Pero tengo que investigar más sobre esto (como no soy programador, no puedo estar 100% seguro).

5 Me gusta

Resumen

Esta es una vulnerabilidad de Github en una clase de exploit llamada “Repojacking”.

Recomendamos a todos que verifiquen las URL de sus plugins de Github y renombren cada instancia de discoursehosting a communiteq.

Antecedentes:

Tuvimos que renombrar nuestra empresa de Discoursehosting a Communiteq en 2019.
Si eso sucede, Github redirige automáticamente las URL de los repositorios de Github a su nueva ubicación, hasta que alguien cree un repositorio con el mismo nombre. En ese momento, el nuevo repositorio tendrá preferencia.

Github solía marcar dichos repositorios como “retirados” y prohibía la creación de un repositorio con el mismo nombre.

Un exploit anterior se describe aquí. Aparentemente, esa solución ya no es efectiva.

Hemos presentado un informe de abuso en Github e intentaremos eliminar este repositorio con todos los medios disponibles.

16 Me gusta

En este momento, el plugin comprometido solo muestra un mensaje y deja un archivo inofensivo en /tmp.
Así que no ha pasado nada malo, todavía. Es importante cambiar la URL de su plugin antes de reconstruir.

7 Me gusta

Vaya, puede pillar al usuario final fácilmente, una de las principales desventajas de no usar el alojamiento oficial de discourse.org.

Si alguna de las cuentas

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

dejara de existir

entonces se expondría una primera subruta, por lo que habría un comando clone en mi app.yml para que se ejecute una reconstrucción.

3 Me gusta

Para mitigar el posible impacto en los usuarios de la instalación estándar, hemos agregado código para detectar github.com/discoursehosting/ y abortar cualquier reconstrucción/actualización.

El error se verá algo así como

---
ERROR: El archivo de configuración containers/app.yml contiene referencias a una organización comprometida de github: github.com/discoursehosting
Por favor, elimine cualquier referencia a esta organización de su archivo de configuración.
Para más información, vea https://meta.discourse.org/t/374703/6
---
31 Me gusta

¡Gracias David!

13 Me gusta

Hola comunidad de Discourse,

Quiero disculparme sinceramente por la interrupción causada por mis acciones con respecto al repositorio de plugins. Al intentar resaltar un problema de seguridad, cometí graves errores que violaron el código de conducta.

En adelante, me aseguraré de que mis acciones se adhieran a las prácticas de divulgación responsable y agradezco la oportunidad de aprender de esto.

Nuevamente, lamento mucho la interrupción causada.

@w3shi

20 Me gusta

Gracias por tus disculpas.

Lo siguiente, no tan responsable, fue no contactarme a mí o a CDCK de forma privada cuando cediste el control del nombre de usuario, porque en las últimas tres horas, alguien más podría haber visto tu publicación y registrarlo.

Ahora he recuperado el control del antiguo nombre de usuario de Github. Y gracias por hacer lo correcto finalmente, y por señalar que Github ya no protege las redirecciones por quinta vez (la última vez fue la cuarta vez: “Este descubrimiento marca la cuarta vez que se identifica un método alternativo para realizar Repojacking”)

¡Te sugiero que te acerques a Github y cobres tu recompensa!

12 Me gusta

¡Me disculpo profundamente por todos los inconvenientes causados! Y gracias por tu comprensión @RGJ.

12 Me gusta

Bienvenido a la comunidad y gracias por arreglarlo todo.

9 Me gusta

Básicamente, deberías asumir que nada es seguro, lo cual tampoco funciona bien.

Hace apenas unos días se supo que una de las cuentas de NPM de uno de los desarrolladores de algunos paquetes de ESLint Prettier fue comprometida y publicaron nuevas versiones comprometidas de algunos paquetes populares:

Estos paquetes se referenciaron luego en otros paquetes, porque muchos afirman que siempre se debe actualizar a las últimas versiones.

Después de ver este hilo, sugerí una función para introducir la validación de firmas de plugins/componentes de temas al actualizarlos: Plugin and theme component signing

Eso no detendría una clave comprometida, pero al menos haría que una parte de la cadena de suministro fuera más confiable. Al final, todavía es posible que se incluyan bibliotecas de terceros comprometidas. Las dependencias adicionales no son realmente visibles.

4 Me gusta

No estoy seguro de que esto siga funcionando. Tenía un plugin apuntando a la URL comprometida de GitHub y el mensaje de error durante la reconstrucción solo decía que no se pudo extraer el repositorio, con más detalles sobre una versión de gema o algo así. (No puedo pegar la información exacta ya que está demasiado atrás en mi historial de desplazamiento por todo el ruido posterior durante las compilaciones posteriores).

Parece que la URL/repositorio ya no existe, lo cual es bueno (al menos hasta que alguien más lo recree), pero el mensaje de error habría ahorrado mucho tiempo.

1 me gusta

De hecho, @RGJ ahora está de vuelta en control de la organización de github, por lo que hemos eliminado el mensaje de error temporal.

5 Me gusta

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