Onko Google Authenticator -viennin QR-koodi turvallinen skannata?
Vain jos generoit sen itse omalla vanhalla puhelimellasi oman uuden puhelimesi tähdätessä näyttöön. Kuka tahansa muu, joka valokuvaa tuon QR-koodin mistä tahansa syystä, saa pysyvän pääsyn kaikkiin paketissa olevien tilien 2FA-koodeihin.
Google Authenticator ja useat yhteensopivat sovellukset (Aegis, Raivo OTP, 2FAS) antavat sinun "viedä" tallennetut 2FA-tilisi, jotta voit siirtää ne uuteen laitteeseen. Vienti tapahtuu QR-koodina, jonka URI alkaa otpauth-migration://. Tuon URI:n sisällä on yksi protokollapuskuripaketti (Googlen MigrationPayload-skeema), joka sisältää kerralla kaikki tilit – myöntäjä, tilin nimi, salainen seed, algoritmi, numeromäärä, tyyppi (HOTP / TOTP) ja laskuri.
Formaatti oli alunperin dokumentoimaton, mutta se on purettu käänteisesti ja on nyt de-facto-vaihtoformaatti 2FA-varmuuskopioille. Kolmannen osapuolen todentajasovellukset tunnistaja ja tuovaja saman QR-koodin.
Yksi QR-koodi voi sisältää kymmeniä tilejä. QR-koodi on visuaalisesti erottamaton normaalista TOTP-asetus-QR:sta – ei ole visuaalista merkkiä, joka kertoisi satunnaiselle tarkkailijalle, että se kantaa koko paketin.
Miksi yksi paketti-QR-koodi on erityisen vaarallinen
Tavallinen otpauth://-asetus-QR on vaarallinen skannata, jos et sitä pyytänyt – mutta vahinkoalue on yksi tili. Migraatio-QR:n vahinkoalue on kaikki autentikointisi tilit. Jos hyökkääjä valokuvaa tämän QR-koodin näyttävää näyttöä – olkasi yli kahvilassa, valvontakameran kautta jonka et huomannut, läpinäkyvän lasikuituikkunan läpi – he kävelevät pois kyvyllä ohittaa 2FA kaikilla sen kattamilla tileillä. Pysyvästi. Kunnes kierrätät jokaisen salaisuuden manuaalisesti – mitä useimmat palvelut eivät tee helpoksi.
Paketissa olevilla salaisuuksilla ei ole vanhentumispäivää. Toisin kuin istuntotokenilla (joka vanhenee), toisin kuin salasanaavain-QR:lla (joka on kertakäyttöinen), siirtopaketin seedit ovat voimassa, kunnes vaihdat ne palvelu kerrallaan.
Siksi skannerimme tulos kaikille otpauth-migration://-QR-koodeille alkaa likely_dangerous -luokituksesta ja pysyy siellä kontekstista riippumatta. Formaatti on kunnossa; uhkamalli on formaatin olemassaolo.
Base64-runko purettuna on MigrationPayload-protokollapuskuri näillä ylimmän tason kentillä:
otp_parameters – toistuva. Yksi merkintä tiliä kohden.
versio – skeemaversio.
batch_size – palojen kokonaismäärä, kun vienti on jaettu useaan QR-koodiin.
batch_index – tämän palan sijainti.
batch_id – yksilöllinen tunnus, joka yhdistää palat toisiinsa.
Jokaisella otp_parameters-merkinnällä on:
salaisuus – raa'at seed-tavut. Nämä ovat varsinainen avainmateriaali.
nimi – tilin tunniste (esim. alice@acme.com).
myöntäjä – palvelun nimi (esim. ACME, GitHub).
algoritmi – SHA1 / SHA256 / SHA512 / MD5.
numerot – 6 tai 8 numeroa koodia kohti.
tyyppi – TOTP (aikapohjainen) tai HOTP (laskuripohjainen).
laskuri – HOTP-merkintöjen nykyinen laskunarvo.
Mitä skannerimme näyttää ja mitä se tietoisesti jättää näyttämättä
✓ Näytetään
Jokaiselle paketin merkinnälle tulos näyttää myöntäjän (ACME, GitHub, AWS), tilin nimen (alice@acme.com), algoritmin (SHA1), numeromäärän (6) ja tyypin (TOTP). Tuloksen tiedote lukee "Tämän paketin myönnöt: ACME / alice@acme.com; GitHub / bob@github; AWS / root; …" jotta migraation keskellä oleva käyttäjä voi tarkistaa listan ennen tuontia.
Skeemaversio, eräindeksi, erän koko ja erän tunnus näytetään myös – hyödyllistä, kun vienti on jaettu useaan QR-koodiin.
✗ Ei koskaan pureta
Raa'at secret-tavut eivät koskaan pury tulostulokseen. Analysaattorimme lukee ne vain varmistaakseen, että jokainen merkintä on oikein muodostettu (salaisuus läsnä ja ei-tyhjä), ja hylkää arvon ennen kuin löydöt rakennetaan.
Tämä vahvistetaan testipaketilla – syötämme analysaattorille käsintehtyjä protobuf-payloadeja, jotka sisältävät canary-merkkijonoja (SECRET_SEED_1, SECRET_SEED_2), ja väitämme, että nämä merkkijonot eivät koskaan esiinny serialisoidussa tulostuloksessa. Regressio siellä epäonnistuu CI:ssä.
Milloin (ja miten) sitä käytetään
Laillinen käyttötapaus: olet siirtymässä uuteen puhelimeen. VANHA puhelin näyttää migraatio-QR-koodin näytöllään noin 30 sekunnin ajan. UUDEN puhelimen todentajasovellus tähtää näyttöön ja tuo. Kukaan muu ei ole huoneessa. Poistat viennin vanhalta puhelimelta varmistettuasi, että kaikki tuotiin.
Vaarapinnat ovat:
QR-koodin kuvakaappaukset. Pilvisynkronoituihin kuviin tallennettu kuvakaappaus asettaa QR-koodin kaikille kyseiseen tiliin synkronoituihin laitteisiin.
QR-koodin jakaminen chatin kautta. Edes lyhyesti – kuka tahansa chatiin pääsevä (nyt tai myöhemmin) voi poimia paketin.
QR-koodin julkaiseminen tukifoorumiketjussa. Tätä tapahtuu enemmän kuin luulee; ihmiset pyytävät apua ja julkaisevat vahingossa kuvan autentikointivientiä.
Julkiset julisteet / kyltit, jotka tunnistetaan virheellisesti asetus-QR-koodeiksi. Formaatti on visuaalisesti erottamaton yksittäisen tilin asetus-QR:sta.
Jos epäilet migraatio-QR-koodin paljastuneen
Käsittele tilannetta tunnistevuotona kaikilla paketin tileillä. Palautustoimenpiteet järjestyksessä:
Kirjaudu jokaiseen vaikuttuneeseen palveluun ja kierrätä 2FA-salaisuus. Useimmat palvelut sallivat sen kohdassa Tili → Turvallisuus → Kaksivaiheinen todennus → Poista käytöstä ja rekisteröidy uudelleen.
Palveluissa, jotka eivät tarjoa kierrättämistä (harvinainen, mutta olemassa), poista ja lisää tili uudelleen.
Tarkista viimeaikainen kirjautumistoiminta kaikilla vaikuttuneilla tileillä.
Poista alkuperäinen vienti-QR-koodi kaikista laitteista ja pilvisynkronoiduista valokuvakirjastoista, joissa se saattaa olla.
Hyökkääjä, jolla on paketti, voi tuottaa voimassa olevia 2FA-koodeja vuosia, kunnes kierrätät ne. Älä lykkää.