Come estensione della risposta di Adam, vale la pena indicare dove si trovano le vulnerabilità.
A parte i problemi con l'intercettazione dei messaggi in rotta (non conosco una grande quantità di sistemi di routing telefonico interni, o quanto sia facile manipolarli), la grande differenza è che gli SMS / le chiamate sono tipicamente spinto al dispositivo e tende a ignorare molte restrizioni di accesso (la maggior parte dei messaggi SMS viene visualizzata come notifica su una schermata di blocco e non conosco molti telefoni che richiedono la password per rispondere).
Tuttavia, un'app potrebbe essere un sistema pull, l'individuo dovrebbe accedere al sistema operativo del telefono, aprire l'app e richiedere il codice. Ciò significa che le funzionalità di sicurezza del telefono rafforzano la sicurezza del prodotto.
Considerare lo scenario che il telefono di un dipendente viene rubato (non oltre il regno della possibilità) e che l'autore del reato è in grado di conoscere / indovinare / dedurre la password del dipendente. Una volta effettuato il controllo, viene effettuata la chiamata / gli SMS vengono inviati e facilmente accessibili senza toccare i controlli di accesso del telefono (o trasferendo la SIM, se è ciò che è necessario). Tuttavia, lo stesso autore non sarebbe in grado di accedere all'app e non sarebbe in grado di accedere.
C'è un'estensione di questo stesso problema relativo alla simultaneità. Se stai utilizzando un codice generato da un'app, questo può essere inserito contemporaneamente al nome utente e alla password, il che significa che tutti e 3 dovrebbero essere corretti, e nessun suggerimento sul campo sbagliato potrebbe essere fornito se una corrispondenza non è stato trovato.
Poiché le chiamate e gli SMS vengono inviati, il nome utente e la password devono essere verificati prima dell'autenticazione del secondo fattore, dando a un utente malintenzionato la certezza che le proprie credenziali sono state indovinate correttamente.