1. Account di test backdoor.
Gli ingegneri spesso includono meccanismi di backdoor e test di conti in hardware a scopo di debug, con misure di sicurezza banali o non messe in atto per proteggerli. Sfortunatamente, un gran numero di dispositivi arriva sul mercato senza che questi meccanismi e account siano disabilitati, consentendo agli aggressori di ottenere l'accesso illegittimo al dispositivo.
2. Protocolli di gestione della rete non protetti.
Molti dispositivi implementano SNMP o UPnP per la gestione remota, ma non riescono a implementare livelli di sicurezza di base. Le apparecchiature per ufficio, l'hardware di rete, i sistemi di controllo industriale, ecc. Spesso perdono dati sensibili (come la tabella di routing) tramite SNMP e possono fornire varie funzioni di controllo tramite UPnP. Molti dispositivi abilitati UPnP implementano le funzioni standard di gestione dell'interfaccia di rete, che consentono a un utente malintenzionato di disabilitare un'interfaccia di rete. Ulteriori funzioni possono consentire a un utente malintenzionato di danneggiare in modo permanente il dispositivo o causare gravi problemi di funzionalità.
3. Overflow del buffer.
Le implementazioni hardware sono notoriamente negative per non controllare le dimensioni del buffer di destinazione e possono consentire il completo danneggiamento dello stato della memoria. Ciò può comportare l'esecuzione di codice, ma più comunemente si traduce semplicemente in una condizione di negazione del servizio, in cui il dispositivo deve essere hard-reset prima che possa essere riutilizzato.
4. Intero overflow / underflow.
Si verificano quando un input intero senza segno viene trattato come firmato, oppure un tipo intero più grande viene lanciato direttamente su un tipo intero più piccolo. Entrambi questi problemi possono causare casi in cui un valore non rientra nell'intervallo previsto, il che può causare il superamento dei controlli dell'intervallo dell'array e del buffer di lunghezza nonostante il buffer di input sia troppo grande. Questi possono anche risultare in condizioni di lettura-dove-dove, dove un indice di array negativo porta a operazioni di memoria che accedono a regioni di memoria precedenti.
5. Controlli sanitari insufficienti.
I valori di input nelle implementazioni hardware sono generalmente considerati con una strong integrità, quindi i controlli di integrità spesso non vengono eseguiti. Ciò potrebbe consentire a un utente malintenzionato di fornire un valore imprevisto e modificare il comportamento del dispositivo. Un esempio comune di questo è quando viene utilizzato un set di bit-flag e vengono impostati bit in conflitto.
6. Segreti condivisi e codificati incorporati nella memoria non volatile.
I progettisti dell'hardware a volte sono delusi dal fatto che, poiché qualcosa è memorizzato in un chip EEPROM su una scheda, i dati al suo interno non possono / non possono essere letti da qualcuno che desidera interferire con il dispositivo. È comune trovare chiavi crittografiche codificate e altre credenziali memorizzate nel firmware di un dispositivo. Questi potrebbero essere usati per compromettere il dispositivo o le sue comunicazioni e sono spesso gli stessi su tutti i dispositivi dello stesso modello.
7. Crypto di scarsa qualità, autoprogettato o mancante.
Spesso è complicato implementare algoritmi crittografici adeguati nei sistemi embedded, specialmente quando si lavora con meno microcontrollori e microprocessori widesrpead. Le implementazioni di riferimento assumono spesso architetture simil-x86 o ARM, che aumentano il fattore lavoro. Gli ingegneri di solito non hanno le conoscenze e l'esperienza per implementare correttamente la crittografia. Di conseguenza, gli algoritmi crittografici presenti nei sistemi embedded tendono a essere implementati in modo inadeguato o sono progetti di brew casalinghi con gravi difetti di sicurezza. Molti sistemi mancano completamente di qualsiasi forma di hashing su password e altre credenziali. Questo tipo di dati può essere in genere estratto dalla memoria non volatile utilizzando strumenti disponibili in commercio.
8. Mancanza di strong integrità e controllo dell'autenticità sugli aggiornamenti del firmware.
L'integrità del firmware del dispositivo viene spesso controllata tramite un hash CRC32 o MD5, ma raramente viene autenticata tramite qualsiasi mezzo strong. Molti produttori si affidano all'oscurità come misura di sicurezza. Mentre il costo del reverse engineering del firmware di un dispositivo può essere considerevole, sta diventando meno con l'avvento di architetture a microprocessore comuni (ad esempio ARM) in sistemi embedded. Una volta che un utente malintenzionato ottiene la possibilità di caricare un'immagine del firmware, potrebbe sovvertire completamente il sistema.
9. Vari difetti di applicazione web nei pannelli di controllo.
Molti dei difetti delle applicazioni Web di Top 10 OWASP sono fastidiosamente comuni nei pannelli di controllo Web per dispositivi incorporati. CSRF, XSS e la funzionalità di furto di sessione sono presenti nell'elenco delle vulnerabilità comuni, sebbene SQLi sia meno comune a causa del numero relativamente basso di sistemi che implementano un database relazionale completo.
10. Servizi di rete associati in modo errato.
Molti servizi di rete su dispositivi embedded sono configurati per il collegamento a 0.0.0.0, anziché direttamente a un indirizzo IP LAN. Ciò potrebbe consentire a un utente malintenzionato di comunicare con il dispositivo dall'esterno della LAN. La corretta configurazione della segregazione e del firewall può aiutare a mitigarlo, ma è ancora un problema.