← Notas
2026.03.286 min

Por qué tu MFA por SMS es una trampa (y qué hacer al respecto)

Si tu autenticación en dos pasos depende de un mensaje al celular, ya tenés un problema. Te explico por qué y qué poner en su lugar.

MFAhardeningaccount-takeover

Cuando reviso cuentas de founders y traders, el patrón se repite: activaron 2FA porque "les dijeron que había que activarlo", pero lo hicieron por SMS. Sienten que están protegidos. No lo están.

El SMS como segundo factor tiene un problema estructural que no se arregla con un PIN más largo ni cambiando de compañía telefónica. El mensaje viaja por una red que no fue diseñada para autenticar a nadie, y la "cuenta" sobre la que se apoya (tu número) es transferible con una llamada al call center.

Cómo funciona un SIM swap en la práctica

No es ciencia ficción. Es una operación de ingeniería social con un guion muy pulido. Te cuento un caso real que vi el año pasado, con detalles alterados.

El atacante ya tenía: nombre completo, DNI, fecha de nacimiento, últimos cuatro dígitos de una tarjeta y el domicilio fiscal viejo. Todo eso estaba en leaks públicos y en el padrón. No hizo falta hackear nada — lo compró por USD 12 en un canal de Telegram.

Con esa data, llamó a la operadora diciendo que se le rompió el chip. La persona del call center le pidió "verificación de identidad", que resultó ser exactamente esos datos que el atacante ya tenía. Le activaron un eSIM nuevo a nombre de la víctima en un dispositivo del atacante.

El celular de la víctima se quedó sin señal (eso siempre pasa, es la señal más clara y la mayoría la ignora pensando "ya vuelve"). Durante los 20 minutos siguientes, el atacante:

  • Entró al Gmail con "olvidé mi contraseña" y el SMS de recuperación llegó a su teléfono.
  • Con el Gmail adentro, rotó el password del exchange principal y pidió retiro a una wallet que controlaba.
  • Encontró el password manager en el mismo Gmail (sync), bajó el vault, probó master password filtrada en un leak viejo. Entró.
  • Se conectó al Discord del founder y mandó mensajes pidiendo "ayuda urgente" a 3 contactos con plata.

Cuando la víctima entendió que no era un problema de antena, ya era tarde. La firma del exchange había salido a blockchain.

Por qué el SMS no tiene arreglo

No importa la calidad de la operadora. El protocolo SS7 que enruta SMS a nivel global es de los 80s y tiene agujeros de diseño conocidos. Pero el problema más común no es técnico: es que el call center es el eslabón débil, y no podés endurecerlo desde afuera.

Incluso si tu operadora es seria, los SMS llegan al dispositivo en claro. Un malware en el celular o un backup de iMessage mal configurado los expone. Y si tenés el WhatsApp con backup en Google Drive sin cifrado, peor.

La jerarquía que sí funciona

No hay un único "mejor". Hay un orden.

1. Passkeys (lo mejor cuando está disponible). Son el reemplazo moderno de password + 2FA. La clave privada vive en tu dispositivo, nunca sale de ahí. No hay código que te puedan robar. iCloud Keychain, 1Password, Bitwarden y Google Password Manager ya las soportan. El sitio tiene que soportarlas también — cada vez más lo hacen.

2. Llave de seguridad de hardware (el estándar de oro para cuentas críticas). Una YubiKey 5 (USB-C + NFC, USD 55) o una Token2 (más barata, funcional). Bien configurada, tu cuenta es inaccesible sin el físico. Esto es lo que uso personalmente y lo que recomiendo para email principal, exchanges, GitHub y cualquier cuenta con plata o código crítico detrás.

3. Authenticator app (TOTP). 1Password, Aegis (Android, open source), Raivo (iOS). Mucho mejor que SMS, pero todavía con algunas superficies de ataque — básicamente el phishing en tiempo real. Si alguien te arma un sitio falso convincente y te pide el código, se lo das, y lo usa en los 30 segundos que dura.

4. SMS. Última opción. Mejor que nada, peor que todo lo anterior. Si es el único factor disponible, está bien como transición — pero ponete una alarma para migrar.

Lo que realmente hago yo (y los clientes con plata encima)

El stack que uso personalmente:

  • Passkey donde el sitio la soporta bien (Apple, Google, GitHub, algunos exchanges).
  • YubiKey 5C NFC como factor principal donde no hay passkey. Una en el llavero, otra de backup en caja fuerte.
  • YubiKey 5 Nano (la chiquita) conectada permanente a la laptop de trabajo, para operaciones rápidas.
  • 1Password para passwords + TOTP para los sitios que no soportan FIDO2. Master password de 24+ caracteres, solo memorizada.
  • Número virtual aparte (no el personal) en las cuentas que exigen SMS y no se puede evitar.

El costo total es ~USD 150 en fierro y USD 5/mes de password manager. Recuperar una cuenta comprometida cuesta 10-100x más fácil.

Checklist: qué hacer esta semana

  • [ ] Listá tus cuentas críticas: email principal, email de recovery, banco, exchange, password manager, registrar de dominios, cloud (AWS/GCP), GitHub, redes.
  • [ ] Para cada una, verificá qué 2FA tenés hoy. Si hay SMS, marcalo.
  • [ ] Comprá dos YubiKey 5 (nunca una sola — si se pierde la única, te quedás afuera). La segunda vive guardada.
  • [ ] Empezá por el email principal. Activá la llave, desactivá el SMS, verificá que el código de recovery lo guardaste offline.
  • [ ] Seguí con banco y exchange. Si el banco no permite hardware key (en Argentina muchos no), al menos pasá a TOTP.
  • [ ] Instalá 1Password o Bitwarden. Master password larga, passkey encima donde puedas.
  • [ ] Los códigos de recovery de cada servicio: imprimilos, guardalos físicamente. Nunca en la nube sin cifrar.
  • [ ] Si tenés seed phrase de cripto con recovery a un email con SMS, ese email es el verdadero punto débil — no la seed.

Si terminás esta lista y te quedan dudas, tenés una conversación pendiente. No con nosotros necesariamente — con alguien. El costo de ignorar esto no se paga el día que activás el 2FA. Se paga el día que alguien decide que vale la pena robarte.