Standarder · otpauth-migration

Er Google Authenticator-eksport-QR-koden sikker at scanne?

Kun hvis du selv genererede den på din egen gamle telefon med din egen nye telefon rettet mod skærmen. Enhver andre, der fotograferer den QR-kode af en hvilken som helst grund, opnår permanent adgang til alle 2FA-koder for alle konti i bundle'n.

Verificér en bundle → Alle standarder →

Hvad det er

Google Authenticator og adskillige kompatible apps (Aegis, Raivo OTP, 2FAS) lader dig "eksportere" dine lagrede 2FA-konti, så du kan flytte dem til en ny enhed. Eksporten tager form af en QR-kode med en URI, der begynder med otpauth-migration://. Inden i den URI er en enkelt protocol-buffer-bundle (Googles MigrationPayload-skema), der på én gang indeholder alle konti – udsteder, kontonavn, hemmelig seed, algoritme, ciferantal, type (HOTP / TOTP) og tæller.

Formatet var oprindeligt udokumenteret, men er blevet omvendt konstrueret og er nu de-facto-udvekslingsformatet for 2FA-sikkerhedskopier. Tredjeparts-autentifikatorapps genkender og importerer den samme QR-kode.

Én QR-kode kan indeholde snesevis af konti. QR-koden er visuelt uadskilleligt fra en normal TOTP-opsætnings-QR – der er ingen visuel markering, der fortæller en tilfældig observatør, at den bærer hele bundle'n.

Hvorfor en enkelt bundle QR-kode er enestående farlig

En almindelig otpauth://-opsætnings-QR er farlig at scanne, hvis du ikke bad om den – men skadeomfanget er én konto. Migrations-QR-kodens skadeomfang er alle konti i din autentifikator. Hvis en angriber fotograferer skærmen, der viser denne QR-kode – over skulderen i en café, via et overvågningskamera du ikke bemærkede, igennem en klar glasrude – går de derfra med muligheden for at omgå 2FA på alle de konti, den dækkede. Permanent. Indtil du roterer hver hemmelighed manuelt – noget de fleste tjenester ikke gør let.

Der er ingen udløbsdato på hemmeligheder i bundle'n. I modsætning til et sessionstoken (der udløber), i modsætning til en adgangsnøgle-QR (der er engangsbrug), er seeds i en migrations-bundle gyldige, indtil du erstatter dem tjeneste for tjeneste.

Det er grunden til, at vores scanners resultat for enhver otpauth-migration:// QR-kode starter ved likely_dangerous og forbliver der uanset kontekst. Formatet er fint; trusselmodellen er formatets eksistens.

Hvad der faktisk er indeni (anatomi)

URI'en ser sådan ud:

otpauth-migration://offline?data=<urlsafe-base64-encoded-protobuf>

Base64-kroppen, når afkodet, er en MigrationPayload protocol-buffer med disse felter på øverste niveau:

Hvert otp_parameters-indlæg har:

Hvad vores scanner viser, og hvad den bevidst ikke gør

✓ Vises

For hvert indlæg i bundle'n viser resultatet udstederen (ACME, GitHub, AWS), kontonavnet (alice@acme.com), algoritmen (SHA1), cifrantallet (6) og typen (TOTP). Resultats-oplysningen lyder "Grants i denne bundle: ACME / alice@acme.com; GitHub / bob@github; AWS / root; …", så en bruger, der ER midt i en migration, kan gennemgå listen inden import.

Skemaversion, batch-indeks, batch-størrelse og batch-ID vises også – nyttigt, når en eksport er opdelt på tværs af flere QR-koder.

✗ Afkodes aldrig

De rå secret-bytes afkodes aldrig til verdiktoutputtet. Vores analysator læser dem kun for at verificere, at hvert indlæg er velformet (hemmelighed til stede og ikke-tom), og kasserer derefter værdien inden findings bygges.

Dette hævdes af testsuiten – vi fodrer analysatoren med håndlavede protobuf-payloads indeholdende canary-strenge (SECRET_SEED_1, SECRET_SEED_2) og påstår, at disse strenge aldrig optræder i det serialiserede verdiktoutput. En regression der fejler CI.

Hvornår (og hvordan) man bruger den

Legitimt brugstilfælde: du opgraderer fra én telefon til en anden. Den GAMLE telefon viser migrations-QR-koden på sin skærm i ca. 30 sekunder. Den NYE telefons autentifikatorapp retter sig mod skærmen og importerer. Ingen andre er i rummet. Du sletter eksporten fra den gamle telefon, efter at du har bekræftet, at alt blev importeret.

Fareoverfladerne er:

Hvis du mistænker, at en migrations-QR-kode er blevet afsløret

Behandl det som et legitimationslæk på tværs af alle konti i bundle'n. Genoprettelsestrinene i rækkefølge:

  1. Log ind på hver berørt tjeneste og roter 2FA-hemmeligheden. De fleste tjenester lader dig gøre dette under Konto → Sikkerhed → To-faktor-autentificering → Deaktiver, og tilmeld dig igen.
  2. For tjenester, der ikke udsætter rotation (sjælden, men eksisterer), fjern og tilføj kontoen igen.
  3. Gennemgå nylig login-aktivitet på alle berørte konti.
  4. Slet den originale eksport-QR-kode fra alle enheder og skysynkroniserede fotobiblioteker, der måske har den.

En angriber med bundle'n kan generere gyldige 2FA-koder i årevis, indtil du roterer. Udsæt det ikke.

Relateret

Verificér din bundle

Slip QR-billedet ind i vores scanner, indsæt otpauth-migration://-URI'en, eller brug kameraet. Resultatet viser alle konti i bundle'n uden nogensinde at afkode hemmelighederne.

Åbn scanner →