Android Debug Bridge
Android Debug Bridge (comunemente abbreviato in adb) è uno strumento di programmazione utilizzato per il debug dei dispositivi basati su Android. Sul dispositivo Android viene eseguito un demone che si connette a un server installato sul PC host via USB o TCP, che a sua volta si connette al client utilizzato dall'utente finale tramite TCP. Reso disponibile come software open source da Google con licenza Apache dal 2007, adb mette a disposizione una shell e la funzionalità di backup dei dati. Il programma è disponibile per Windows, Linux e macOS. In passato è stato utilizzato in modo improprio da botnet e altri tipi di malware, per i quali sono state sviluppate contromisure come l'autenticazione RSA e la possibilità di definire una whitelist di dispositivi autorizzati. Caratteristiche![]() Le funzionalità di adb comprendono la copia di file dal computer host,[1] l'installazione di applicazioni, la visualizzazione dell'output di logcat, l'accesso a una shell Unix,[2] e il riavvio in modalità Qualcomm EDL.[3] Ad esempio, le applicazioni Android possono essere salvate tramite il comando Sono state rese disponibili alcune interfacce grafiche. L'Android Device Monitor, fornito all'interno di Android Studio, permette di ottenere informazioni dettagliate da un dispositivo Android.[6] Il metodo di Android per installare file APK su un dispositivo è stato utilizzato per installare manualmente applicazioni non ufficiali su Windows Subsystem for Android[7] e sulla macchina virtuale Android di Chrome OS.[8] Shizuku consente a un telefono Android di collegarsi al proprio ADB quando è connesso a una rete wireless. L'applicazione è disponibile gratuitamente su Google Play Store.[9] StoriaL'Android Software Development Kit (SDK) è stato rilasciato per la prima volta nel 2007.[10] Dal 2017, Google ha reso possibile scaricare adb separatamente dall'Android SDK.[11] Nel 2015, Microsoft ha rilasciato un emulatore Android in grado di connettersi al client adb.[12] Nel 2016, con Android Studio 2.0 si è registrato un miglioramento delle prestazioni di cinque volte nell'installazione delle applicazioni e nel trasferimento di file tramite adb.[13] Per semplificare l'uso di Android Things, nel 2017 è stato creato un wrapper attorno ai comandi adb manuali.[14] Con Android 11 nel 2020, Google ha introdotto le installazioni incrementali tramite adb.[15] Nel 2020, su macOS, l'integrazione di adb via Wi-Fi è stata incorporata in Android Studio.[16] Nel 2021, con Android 12, il comando ConfigurazioneComputer hostPer Windows, l'Android SDK contiene il binario adb.exe che può essere estratto e installato.[20] How-To Geek consiglia di aggiungere la cartella contenente i binari alla variabile d'ambiente PATH.[21] Su Ubuntu, adb può essere installato tramite il pacchetto Dispositivo AndroidIn Android 4.2.2 o versioni successive (livello API 17), viene mostrata una finestra di dialogo contenente l'impronta digitale RSA che l'utente deve accettare. Questa misura impedisce l'abuso del meccanismo di debug senza il consenso dell'utente.[25] A partire da Android 4.2, le opzioni sviluppatore sono nascoste per impostazione predefinita: per renderle visibili è necessario premere sette volte il numero di build nel menu Informazioni. In seguito è possibile abilitare l'opzione Debug USB.[26] Alcuni produttori di dispositivi Android utilizzano procedure diverse per abilitarlo. Ad esempio, Huawei richiede l'inserimento di un codice PIN prima di poter abilitare adb. Se il touchscreen di un dispositivo Android è rotto, è possibile collegare un mouse al dispositivo tramite USB On-The-Go e abilitare il debug USB.[27][28] ArchitetturaIl protocollo adb può essere trasmesso sia via USB sia via Wi-Fi su TCP. Si basa su un'architettura client-server e utilizza due protocolli diversi: uno tra client e server e un altro tra server e demone. Il demone adb, implementato in C, e si trova nello spazio utente di Android. La sua esecuzione fa uso del framework USB di Android, Protocollo client ↔ serverLa comunicazione tra client e server avviene tramite un socket TCP. Il server attende connessioni su una porta alla quale il client deve inviare una richiesta. La richiesta contiene un campo iniziale di 4 byte in ASCII e un payload. Il payload inizia con la parola host per indicare che deve essere inviato al server. Il server può quindi rispondere con OKAY o FAIL per indicare lo stato, combinato con un payload facoltativo e la relativa lunghezza.[29] Protocollo server ↔ demoneI messaggi inviati dal server sono costituiti da un'intestazione lunga 24 byte, contenente i seguenti campi:[29]
SicurezzaFino ad Android 2.2, Android era vulnerabile all'exploit RageAgainstTheCage. Il demone adb non controllava il valore di ritorno della chiamata di sistema setuid durante la riduzione dei privilegi. L'exploit crea numerosi processi fino a esaurire gli identificatori di processo disponibili. Quando il demone si blocca e si riavvia, non riesce a creare un nuovo processo con privilegi ridotti e continua a funzionare con i privilegi di root, fornendo così una shell root tramite adb.[30] Nel 2017 è stata scoperta una vulnerabilità di sicurezza che sfruttava ADB per prendere il controllo del modem integrato nel dispositivo. L'attacco richiedeva che adb fosse già abilitato e autorizzato, anche se erano disponibili alcune soluzioni alternative.[31] Diverse famiglie di malware come ADB.Miner, Ares, IPStorm, Fbot e Trinity, hanno eseguito scansioni su Internet alla ricerca di dispositivi con l'interfaccia adb esposta pubblicamente, installando su di essi malware.[32] Tuttavia, adb può anche essere utilizzato per rimuovere malware, avviando il dispositivo in modalità provvisoria ed eseguendo il comando Note
Voci correlateAltri progetti
Collegamenti esterni
|
Portal di Ensiklopedia Dunia