¿Códigos de barras como un vector de ataque?

30

Hace un par de semanas estuve viendo un video de Defcon donde un tipo demostraba que los lectores de códigos de barras eran generalmente bastante fáciles de piratear. Continuó diciendo cosas como que con la mayoría de los sistemas la entrada no está saneada (suena similar a la inyección SQL) y que la mayoría de ellos eran configurables por códigos de barras que el fabricante podía obtener fácilmente. Combinado con el hecho de que una máquina puede configurarse rápidamente para leer todos los tipos de códigos de barras, incluidos los que pueden almacenar más de 1000 caracteres, ¿son los códigos de barras una vulnerabilidad? ¿Y cómo se podría evitar esto?

Hasta ahora, las posibles vulnerabilidades que puedo ver son la inyección de SQL y los desbordamientos de búfer.

    
pregunta Jake Wickham 25.11.2016 - 14:51
fuente

4 respuestas

44

Sí, los escáneres de códigos de barras presentan una vulnerabilidad potencial. Debe evitar los ataques de este vector de la misma manera que evitaría los ataques de cualquier vector de entrada, como una conexión de red o un teclado.

  1. Valide las entradas en la aplicación, no el escáner. No confíe en la configuración del escáner para entregar solo códigos de barras UPC-A de 12 dígitos. Como cada desarrollador de aplicaciones web aprende rápidamente, confiar en el cliente para realizar el desinfección de entradas es un agujero de seguridad gigante. Use controles de longitud en la aplicación para asegurarse de que no se puedan explotar los desbordamientos de búfer. Realice verificaciones de valores de la lista blanca para asegurarse de que no tenga caracteres fuera de los límites (por ejemplo, si está esperando que el usuario escanee solo un código de barras UPC-A o EAN-13 del producto, debe lanzar una excepción) si la entrada detecta valores que no son dígitos.)

  2. Código a la defensiva. Al igual que con una aplicación web, debe realizar elecciones de codificación seguras, como SQL parametrizado. Ya debería estar haciendo esto para protegerse contra los ataques de inyección de SQL ingresados en el teclado; Los códigos de barras no son nada especial aquí.

  3. Refuerce sus dispositivos. La mayoría de los escáneres de códigos de barras se configuran inicialmente escaneando una serie de códigos de barras especiales provistos por el fabricante (la documentación de sus escáneres describirá estos símbolos). Lea la documentación de los escáneres para encontrar La forma de configurar los escáneres desde la computadora host a través de la conexión de datos. Una vez que pueda configurar los escáneres desde la computadora, hágalo. Entre los elementos de configuración para configurar, debe desactivar la capacidad del escáner para leer los códigos de barras de configuración.

respondido por el John Deters 25.11.2016 - 15:22
fuente
16

Muchos escáneres de códigos de barras son tratados por el sistema operativo como un tipo de teclado. Esto les da exactamente la misma superficie de ataque que alguien que escribe la información del código de barras en el teclado. Como ejemplo extremo, un escáner de código de barras que entiende PDF 417 en modo byte o código QR binario puede ordenar a la computadora que salga del programa actual, inicie Internet Explorer, descargue un programa del sitio web elegido por el atacante y ejecute ese programa.

    
respondido por el Mark 25.11.2016 - 21:27
fuente
2

El código de barras es solo una representación de entrada.

¿Son los códigos de barras una vulnerabilidad? podrían escribirse como ¿Son las entradas una vulnerabilidad? . En sí mismo no, pero es un vector de ataque.

Los códigos de barras normalmente codifican datos numéricos, de cadena o binarios. Además de cómo se pueden utilizar esos datos para la explotación en diferentes niveles (menciona el desbordamiento del búfer, pero aumenta la cadena de software: los códigos de barras pueden incluir URL interpretadas por el sistema operativo / navegador y, posteriormente, por el software en el lado del servidor). también considere el análisis de los códigos de barras en sí, que podrían contener accesos fuera de límites, desbordamientos, etc.

¿Prevención? Como siempre, ingrese la validación y el saneamiento.

    
respondido por el domen 25.11.2016 - 15:03
fuente
0

Sin validación de entrada, todo es un posible vector de ataque. Incluso escuché acerca de un SQLI usando placas de números como fuente de entrada. Al programar una cámara de velocidad, nadie pensaría en una idea tan loca, ¡y ese es el problema!

    
respondido por el licklake 25.11.2016 - 15:10
fuente

Lea otras preguntas en las etiquetas