Standar · otpauth-migration

Apakah QR ekspor Google Authenticator aman untuk dipindai?

Hanya jika Anda yang membuatnya sendiri, di ponsel lama Anda sendiri, dengan ponsel baru Anda sendiri diarahkan ke layar. Siapa pun yang memotret QR itu — dengan alasan apa pun — mendapatkan akses permanen ke setiap kode 2FA untuk setiap akun dalam bundle.

Verifikasi bundle → Semua standar →

Apa itu

Google Authenticator dan beberapa aplikasi yang kompatibel (Aegis, Raivo OTP, 2FAS) memungkinkan Anda "mengekspor" akun 2FA yang tersimpan agar dapat dipindahkan ke perangkat baru. Ekspor berbentuk QR code dengan URI yang dimulai dengan otpauth-migration://. Di dalam URI tersebut adalah satu bundle protocol-buffer (skema MigrationPayload Google) yang membawa setiap akun sekaligus — penerbit, nama akun, seed rahasia, algoritma, jumlah digit, tipe (HOTP / TOTP), dan counter.

Formatnya awalnya tidak terdokumentasi, tetapi telah di-reverse-engineer dan kini menjadi format interchange de-facto untuk backup 2FA. Aplikasi autentikator pihak ketiga mengenali dan mengimpor QR yang sama.

Satu QR dapat berisi lusinan akun. QR ini secara visual tidak dapat dibedakan dari QR pengaturan TOTP biasa — tidak ada penanda visual yang memberi tahu pengamat biasa bahwa ini membawa seluruh bundle.

Mengapa satu QR bundle sangat berbahaya

QR pengaturan otpauth:// biasa berbahaya untuk dipindai jika Anda tidak memintanya, tetapi radius ledakannya adalah satu akun. Radius ledakan QR migrasi adalah setiap akun di autentikator Anda. Jika penyerang memotret layar yang menampilkan QR ini — di belakang Anda di kedai kopi, melalui kamera CCTV yang tidak Anda sadari, melalui jendela kaca bening — mereka pergi dengan kemampuan untuk melewati 2FA di setiap akun yang tercakup. Secara permanen. Sampai Anda merotasi setiap rahasia secara manual, yang sebagian besar layanan tidak membuatnya mudah.

Tidak ada kedaluwarsa pada rahasia dalam bundle. Tidak seperti token sesi (yang kedaluwarsa), tidak seperti QR passkey (yang hanya sekali pakai), seed dalam bundle migrasi berlaku sampai Anda menggantinya layanan demi layanan.

Inilah mengapa hasil pemindai kami pada setiap QR otpauth-migration:// dimulai dari likely_dangerous dan tetap di sana tanpa memandang konteks. Formatnya tidak masalah; model ancamannya adalah keberadaan format itu.

Apa yang sebenarnya ada di dalam (anatomi)

URI-nya terlihat seperti:

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

Isi base64, setelah didekode, adalah protocol-buffer MigrationPayload dengan kolom level atas berikut:

Setiap entri otp_parameters memiliki:

Apa yang ditampilkan pemindai kami, dan apa yang sengaja tidak ditampilkan

✓ Ditampilkan

Untuk setiap entri dalam bundle, hasil menampilkan penerbit (ACME, GitHub, AWS), nama akun (alice@acme.com), algoritma (SHA1), jumlah digit (6), dan tipe (TOTP). Pengungkapan hasil berbunyi "Hibah dalam bundle ini: ACME / alice@acme.com; GitHub / bob@github; AWS / root; ..." sehingga pengguna yang sedang dalam proses migrasi dapat mengaudit daftar sebelum mengimpor.

Versi skema, indeks batch, ukuran batch, dan ID batch juga ditampilkan — berguna ketika ekspor dipecah menjadi beberapa QR.

✗ Tidak pernah didekode

Byte secret mentah tidak pernah didekode ke dalam output hasil. Analisator kami membacanya hanya untuk memverifikasi setiap entri terbentuk dengan baik (secret ada + tidak kosong), kemudian membuang nilai sebelum findings dibangun.

Hal ini ditegaskan oleh suite pengujian — kami memberi makan analisator payload protobuf yang dibuat tangan yang berisi string canary (SECRET_SEED_1, SECRET_SEED_2) dan menegaskan string tersebut tidak pernah muncul dalam output hasil yang diserialisasi. Regresi di sana akan gagal di CI.

Kapan (dan bagaimana) menggunakannya

Kasus penggunaan yang sah: Anda meningkatkan dari satu ponsel ke ponsel lain. Ponsel LAMA menampilkan QR migrasi di layarnya selama sekitar 30 detik. Ponsel BARU dalam aplikasi autentikator diarahkan ke layar dan mengimpor. Tidak ada orang lain di ruangan. Anda menghapus ekspor dari ponsel lama setelah mengonfirmasi semua berhasil diimpor.

Permukaan bahaya adalah:

Jika Anda menduga QR migrasi telah terekspos

Perlakukan sebagai kebocoran kredensial di setiap akun dalam bundle. Langkah pemulihan, secara berurutan:

  1. Masuk ke setiap layanan yang terpengaruh dan rotasi rahasia 2FA. Sebagian besar layanan mengizinkan ini di bawah Akun → Keamanan → Autentikasi dua faktor → Nonaktifkan lalu daftarkan ulang.
  2. Untuk layanan yang tidak mengekspos rotasi (jarang tapi ada), hapus dan tambahkan ulang akun.
  3. Audit aktivitas masuk terkini di setiap akun yang terpengaruh.
  4. Hapus QR ekspor asli dari setiap perangkat + pustaka foto tersinkronisasi cloud yang mungkin memilikinya.

Penyerang yang memiliki bundle dapat menghasilkan kode 2FA yang valid selama bertahun-tahun sampai Anda merotasi. Jangan tunda.

Terkait

Verifikasi bundle Anda

Masukkan gambar QR ke pemindai kami, tempel URI otpauth-migration://, atau gunakan kamera. Hasilnya menampilkan setiap akun dalam bundle tanpa pernah mendekode rahasianya.

Buka pemindai →