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).
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.
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.
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.
---
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
---
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.
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.
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.
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.