lowCWE-308A07:2021

Sin MFA/2FA

Sin autenticación multifactor, una contraseña robada o adivinada es todo lo que se necesita para comprometer completamente una cuenta.

Cómo Funciona

MFA requiere un segundo factor (código TOTP, SMS, llave de hardware) además de la contraseña. Aunque un atacante tenga la contraseña de un usuario de una brecha, no puede iniciar sesión sin el segundo factor. Microsoft reportó en 2023 que MFA bloquea el 99.9% de los ataques de compromiso de cuentas.

Código Vulnerable
// MAL: autenticación de un solo factor
async function login(email: string, password: string) {
  const user = await verifyPassword(email, password);
  if (!user) throw new Error('Credenciales inválidas');
  return createSession(user); // un factor = comprometido si la contraseña se filtra
}
Código Seguro
// BIEN: requiere TOTP como segundo factor para cuentas sensibles
async function login(email: string, password: string, codigoTotp?: string) {
  const user = await verifyPassword(email, password);
  if (!user) throw new Error('Credenciales inválidas');
  if (user.mfaEnabled) {
    if (!codigoTotp || !verifyTOTP(user.totpSecret, codigoTotp))
      throw new Error('Código MFA requerido');
  }
  return createSession(user);
}

Ejemplo Real

El hackeo de Twitter de 2020 comprometió 130 cuentas de alto perfil (Obama, Musk, Biden). Las herramientas de administración interna de Twitter no tenían requisito de MFA. Una llamada de ingeniería social a un empleado dio a los atacantes control total.

Cómo Prevenirlo

  • Ofrece 2FA basado en TOTP (Google Authenticator, Authy) — es gratis de implementar con speakeasy u otplib
  • Requiere MFA para cuentas de admin y cuentas con acceso a datos sensibles
  • Ofrece WebAuthn/passkeys como alternativa resistente a phishing al TOTP
  • Muestra a los usuarios cuántas sesiones activas tienen y haz la configuración de 2FA fácil y visible en ajustes

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas