Nachtrag: zur SMS TAN Erzeugung für die Luca App

Vollständiger Prozess beschrieben.

Wichtig: Dieser Blogpost ist ein Nachtrag zu Game Over!. Wenn ihr über eine Suchmaschine hierher gekommen seid, weil ihr keine TAN bekommen habt, oder Luca umgehen wollt, lest bitte hier weiter.

Die Telefonnummer Validierung lässt sich vollständig außerhalb der Luca App, auf der Kommandozeile, mittels curl durchführen. Um eine TAN anzufragen, kann folgender Befehl verwendet werden:

curl -X curl -X POST -H "Content-Type: application/json"  -d '{"phone":"+49XXXXXXXX"}' https://app.luca-app.de/api/v3/sms/request

Zurückgegeben wird ein JSON Codeblock mit einer challenge ID (hier mit ‘X’ unkenntlich gemacht):

{"challengeId":"205XX020-eXXe-4XXa-aXXc-6faeXX3a184b"}

Die Challenge ID muss zusammen mit der TAN bestätigt werden. Hierzu stehen zwei weitere Endpunkte zur Verfügung:

curl -v  -X curl -X POST -H "Content-Type: application/json"  -d '{"tan":"64XX55","challengeId":"d9XXb7d2-6XX1-4XXc-aXXa-4bdebXXa43c9"}' https://app.luca-app.de/api/v3/sms/verify

Es wird lediglich der HTTP Statuscode 204 - No Content , bzw., bei falscher TAN/ID Kombination 403 - Forbidden zurück geliefert.

curl -v  -X curl -X POST -H "Content-Type: application/json"  -d '{"tan":"64XX55","challengeIds":["d90XX7d2-6XX1-4XXc-aXXa-4bdebXXa43c9"]}' https://app.luca-app.de/api/v3/sms/verify/bulk
Zusätzlich zum Statuscode wird noch die akzeptierte challenge ID als JSON Objekt im Body übertragen.

Anmerkungen

  • Der SMS Versand ist weder zuverlässig noch gibt es Echtzeitgarantien (dies ist eine Eigenschaft des Mobilfunknetzes, kein Fehler in Luca). Insbesondere ist nicht garantiert, dass SMS in Sendereihenfolge ankommen. Hierdurch erklärt sich, warum es zwei Endpunkte zur TAN Bestätigung gibt: sobald eine challenge erfolgreich bestätigt wurde, ist klar, das auf andere challenges für die benutzte Telefonnummer nicht mehr gewartet werden muss (Resourcenfreigabe).
  • Die Bestätigung für eine Challenge kann beliebig oft (erfolgreich) wiederholt werden.
  • Der Versand an ausländische Mobilfunknummern ist möglich. Die Validierung ob +49 findet nur clientseitig statt (Anfängerfehler!)
  • Es scheint ein serverseitiges Rate Limit zu geben, bei dem eine Telefonnummer nach dem TAN Versand für eine Zeit lang gesperrt wird. Dies wird dem Client allerdings nicht mitgeteilt (er erhält in jedem Fall eine challenge ID). Falls dem so ist, handelt es sich eher um eine Maßnahme gegen “nächtlichen Telefonterror”, nicht um einen Versuch, zu verhindern, dass sich mehrere Nutzer unter derselben (free SMS) Telefonnummer registrieren.
  • Es kann nicht überprüft werden, ob eine Telefonnummer mehrfach zur Registrierung verwendet wird, da ein Nutzer, der sein Telefon verliert oder die App neu installiert, sich jederzeit neu registrieren können muss.
  • Der eigentliche SMS Versand wird von Auftragsunternehmen durchgeführt, die jederzeit ausgewechselt werden können. Einige Reviews auf Google Play beschweren sich darüber, nach der Luca Registrierung Phishing SMS erhalten zu haben.
  • Aus der Serverantwort des /api/v3/sms/verify Endpoints ergibt sich bereits, dass in die nachfolgenden Schritte (Benutzerregistrierung) keine Information aus dem TAN Verfahren einfließt.

Das SMS TAN Verfahren wird als (zentrales) Sicherheitsfeature beworben, das es dem Nutzer unmöglich machen soll, an Luca teilzunehmen, ohne nicht wenigstens eine gültige Telefonnummer anzugeben. Dieses Versprechen ist allerdings nicht einhaltbar, da der Server nicht sicherstellen kann, dass er mit der offiziellen Luca App kommuniziert, in einem Nachbau die Telefonnummer Validierung als optional angenommen werden kann und dementsprechend nicht implementiert werden muss.

Luca verhindert nicht das Problem, dass in Gästelisten Falschangaben gemacht werden, sondern verschärft es sogar noch!