Codici a barre come vettore di attacco?

30

Stavo guardando un video defcon un paio di settimane fa, quando un ragazzo stava dimostrando come i lettori di codici a barre fossero generalmente abbastanza facili da hackerare. Ha continuato a dire cose come con la maggior parte dei sistemi l'input non è sterilizzato (sembra simile all'iniezione SQL) e che molti di essi erano configurabili da codici a barre facilmente ottenuti dal produttore. In combinazione con il fatto che una macchina può essere rapidamente configurata per leggere tutti i tipi di codici a barre, compresi quelli in grado di memorizzare oltre 1000 caratteri, i codici a barre rappresentano una vulnerabilità? E come si potrebbe prevenire questo?

Finora le possibili vulnerabilità che posso vedere sono SQL injection e buffer overflow.

    
posta Jake Wickham 25.11.2016 - 14:51
fonte

4 risposte

44

Sì, gli scanner di codici a barre presentano una potenziale vulnerabilità. Devi prevenire gli attacchi da questo vettore nello stesso modo in cui prevedi attacchi da qualsiasi vettore di input, come una connessione di rete o una tastiera.

  1. Convalida gli input nell'app, non nello scanner. Non fare affidamento sulla configurazione dello scanner per fornire solo codici a barre UPC-A a 12 cifre. Come ogni sviluppatore di app Web acquisisce rapidamente, fidarsi del client per eseguire la sanitizzazione dell'input è un enorme buco di sicurezza. Utilizzare i controlli della lunghezza nell'app per garantire che gli overflow del buffer non possano essere sfruttati. Esegui verifiche dei valori in white-listing per assicurarti di non avere caratteri fuori limite (ad esempio, se ti aspetti che l'utente esegua la scansione solo del codice a barre UPC-A o EAN-13 del prodotto, devi lanciare un'eccezione se l'input rileva valori non numerici.)

  2. Codice difensivo. Proprio come con un'app Web, devi fare scelte di codifica sicure come SQL parametrizzato. Dovresti già farlo per proteggerti dagli attacchi di SQL injection inseriti dalla tastiera; i codici a barre non sono niente di speciale qui.

  3. Indurisci i tuoi dispositivi. La maggior parte degli scanner di codici a barre viene inizialmente configurata scansionando una serie di codici a barre forniti dal produttore speciale (la documentazione dello scanner descriverà questi simboli.) Leggi la documentazione degli scanner per trovare il modo di configurare gli scanner dal computer host tramite la connessione dati. Una volta che è possibile configurare gli scanner dal computer, farlo. Tra gli elementi di configurazione da impostare, è necessario disabilitare la capacità dello scanner di leggere i codici a barre di configurazione.

risposta data 25.11.2016 - 15:22
fonte
16

Molti scanner di codici a barre sono trattati dal sistema operativo come un tipo di tastiera. Questo dà loro esattamente la stessa superficie d'attacco di qualcuno che digita le informazioni del codice a barre sulla tastiera. Come esempio estremo, uno scanner di codici a barre che comprende PDF 417 in modalità byte o codice binario QR potrebbe comandare al computer di uscire dal programma corrente, avviare Internet Explorer, scaricare un programma dal sito Web della scelta dell'attaccante ed eseguire quel programma.

    
risposta data 25.11.2016 - 21:27
fonte
2

Il codice a barre è solo una rappresentazione dell'input.

i codici a barre sono vulnerabili? potrebbero essere scritti come sono gli input di una vulnerabilità? . Di per sé no, ma è un vettore di attacco.

I codici a barre normalmente codificano dati numerici, di stringa o binari. Oltre a come questi dati possono essere utilizzati per lo sfruttamento a diversi livelli (si menziona l'overflow del buffer, ma sale la catena del software - i codici a barre possono includere URL interpretati dal sistema operativo / browser e successivamente dal software sul lato server), considera anche l'analisi dei codici a barre, che potrebbe contenere accessi fuori limite, overflow ecc.

La prevenzione? Come sempre, la validazione dell'input è un risanamento.

    
risposta data 25.11.2016 - 15:03
fonte
0

Senza la convalida dell'input tutto è un possibile vettore di attacco. Ho persino sentito parlare di un SQLI che usa le targhe come sorgente di input. Quando si programma un autovelox, nessuno potrebbe pensare a un'idea così pazza, e questo è il problema!

    
risposta data 25.11.2016 - 15:10
fonte