Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2020-14292 — Dettagli di CVE-2020-14292 | Kitploit
Strumenti/GitHubGitHub/alwentiu/cve-2020-14292
Sicurezza AndroidSicurezza BluetoothAnalisi delle VulnerabilitàSicurezza WirelessSicurezza MobilePrivacy
GitHubalwentiu/cve-2020-14292

CVE-2020-14292

Dettagli di CVE-2020-14292

Vedi Repository
246 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2020-14292: Un problema di trasporto Bluetooth nell'app COVIDSafe

Autore: Alwen Tiu, The Australian National University

Ultimo aggiornamento: 2020-09-08

Riassunto

Nell'applicazione COVIDSafe fino alla versione 1.0.21 per Android, l'uso non sicuro dell'opzione di trasporto Bluetooth nella connessione GATT permette agli attaccanti di ingannare l'applicazione per stabilire una connessione tramite trasporto Bluetooth BR/EDR, rivelando l'indirizzo Bluetooth pubblico del telefono della vittima senza autorizzazione, bypassando la protezione di randomizzazione dell'indirizzo Bluetooth nel telefono dell'utente. Questo problema è tracciato con CVE-2020-14292.

Descrizione tecnica

La causa del problema è nella funzione startWork, dove viene creata una connessione GATT usando connectGatt, ma non è stata specificata alcuna opzione di trasporto.

root@kitploit:~
fun startWork(
    context: Context,
    gattCallback: StreetPassWorker.StreetPassGattCallback
) {
    gatt = device.connectGatt(context, false, gattCallback)
    if (gatt == null) {
       CentralLog.e(TAG, "Unable to connect to ${device.address}")
    }
}

Ciò farà sì che Android utilizzi l'opzione TRANSPORT_AUTO per il trasporto nell'avviare la connessione Bluetooth. Sembra che, nell'implementazione in Android, questo andrà in default a BR/EDR se il periferico a cui ci si connette è un dispositivo dual mode (che supporta sia BR/EDR che LE); ciò potrebbe essere dovuto alla seguente implementazione del client GATT in Android, vedere ad esempio, questo codice (frammento di codice rilevante incluso sotto):

root@kitploit:~
 // Determine transport
  if (transport_p != BT_TRANSPORT_AUTO) {
    transport = transport_p;
  } else {
    switch (device_type) {
      case BT_DEVICE_TYPE_BREDR:
        transport = BT_TRANSPORT_BR_EDR;
        break;

      case BT_DEVICE_TYPE_BLE:
        transport = BT_TRANSPORT_LE;
        break;

      case BT_DEVICE_TYPE_DUMO:
        if (transport_p == BT_TRANSPORT_LE)
          transport = BT_TRANSPORT_LE;
        else
          transport = BT_TRANSPORT_BR_EDR;
        break;
    }

Poiché la randomizzazione dell'indirizzo MAC non è supportata in BR/EDR, il centrale rivelerà il suo indirizzo identità al periferico.

Per lanciare un attacco, l'attaccante pubblicizza un server GATT su un dispositivo dual mode (BR/EDR + LE), utilizzando l'indirizzo pubblico (questa parte è importante, altrimenti il downgrade non avverrà e il centrale Android utilizzerà il trasporto LE). Ciò farà sì che l'app COVIDSafe utilizzi il trasporto BR/EDR, invece del trasporto LE, per connettersi al periferico, causando così la divulgazione dell'indirizzo pubblico del telefono. Questo funziona per tutti i telefoni e le versioni di Android testate.

Per Android 6 e versioni successive, la correzione è semplice: basta specificare esplicitamente l'opzione di trasporto.

root@kitploit:~
  gatt = device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)

Tuttavia, ciò non funziona per Android 5.1 (API Level 22), perché quel metodo non è esposto nell'API. In realtà è lì ma è nascosto. Quindi per Android 5.1, una possibile correzione prevede l'uso della reflection per chiamare quel metodo nascosto. Queste correzioni sono state implementate in COVIDSafe (Android) v1.0.48.

Tuttavia, la correzione per Android 5.1 potrebbe non funzionare al 100% delle volte; i miei test hanno indicato che c'era ancora una fuga di indirizzi identità. Ciò potrebbe essere dovuto al fallimento della tecnica di reflection in fase di esecuzione; saranno necessarie ulteriori indagini.

Implicazioni per la sicurezza e la privacy

Il possesso dell'indirizzo identità di un telefono permetterebbe a un attaccante di tracciare il telefono quando il suo Bluetooth è acceso e si trova nel raggio d'azione Bluetooth dell'attaccante. Alcune vulnerabilità legate al Bluetooth (ad esempio, CVE-2020-0022) si basano sulla conoscenza dell'indirizzo identità per montare ulteriori attacchi, quindi c'è la possibilità di concatenare questo attacco con altri. Vedi questo documento per alcune conseguenze del possesso dell'indirizzo identità da parte dell'attaccante.

Raccomandazione

Si raccomanda vivamente agli utenti della versione Android dell'app COVIDSafe di aggiornare l'app. Per chi utilizza Android 5, si consiglia di disattivare il Bluetooth quando ci si trova in una situazione in cui la funzionalità Bluetooth non è necessaria.

Cronologia della divulgazione

Questo problema è stato segnalato per la prima volta alla Australian Government Digital Transformation Agency il 2 giugno 2020. La prima correzione è stata rilasciata il 22 giugno 2020, per Android 6 e versioni successive. È stato confermato che funziona per Android 6 e versioni successive. Ma il problema riguardava ancora Android 5.1. La seconda correzione, rilasciata il 30 luglio 2020, ha risolto il problema rimanente con Android 5.1.

Ringraziamenti

Grazie a Jim Mussared per aver confermato questo problema in modo indipendente e per le varie discussioni relative a questo problema.

Scarica lo strumento