Dado que bcrypt genera un salt aleatorio por contraseña y que la base de datos Github no se vio comprometida, ¿cómo fue posible un ataque "remoto" de fuerza bruta y cuánto tiempo duró ese proceso?
Aquí se confunden dos ataques diferentes. Brute forzando los hashes de contraseñas significa que el atacante tiene un registro de la tabla de la base de datos que contiene los hashes de contraseñas y, si están correctamente salados y con hash, la fuerza bruta requiere mucho tiempo.
En este caso, github fue atacado al adivinar las contraseñas en la página de inicio de sesión, por lo que no importa cómo se saquen las contraseñas o las hash o nada. Solo importa si el usuario en cuestión usó una contraseña fácil. Github dice "nosotros, de manera agresiva, los intentos de inicio de sesión con límite", lo que significa que bloquea una cuenta después de que x intenta durante un período de tiempo determinado. El atacante tenía recursos (40,000 direcciones IP únicas para adivinar), muchas cuentas para elegir y un largo período de tiempo para que pudieran seguir adivinando y esperando que el bloqueo expirara. Incluso con todos esos recursos, su bot no puede adivinar lo suficientemente rápido como para irrumpir en cuentas con nada más que contraseñas simples y muertas.
Es realmente genial que github publique un historial de seguridad en enlace para que su cuenta vea la actividad de la cuenta (inicios de sesión fallidos, inicios de sesión, etc.)