viernes, 19 de mayo de 2006

OCR y Codigo (maligno) de Barra

Existe la posibilidad de tomar el control de una terminal de caja, o de todo el sistema de un negocio (supermercado, farmacia, tienda de accesorios, etc...) con tan solo mostrar a un lector OCR un código de barra especialmente diseñado para otro propósito que simplemente cobrar un producto. En los pasillos de los establecimientos aparecen lectores OCR, donde a partir del código de barra realizan una busqueda del precio del producto y lo despliega en pantalla, para la previa selección del comprador. Estas barras representan un número en formato UPC o EAN-8/13 (al menos en República Dominicana). Sucede que estos lectores también leen los formatos Code 128B/C/Raw que permiten representar todos los caracteres ASCII. Esto abre todo un mundo de manipulación digital, permitiendo crear inyecciones de código, anular cobros, modificar datos y quizas hasta inhabilitar el sistema. Un paraíso para futuros cyber-vándalos se podría evitar hoy prestando mayor atención a este aparentemente-inofensivo vector de ataque. Ejemplo, supongamos que tenemos un servidor MS SQL y una aplicacion con el siguiente código: query = "SELECT precio FROM productos WHERE codigo = " + OCR_getCode() En los lectores, la gente verifica los precios de sus productos antes de pagar, y que pasaría si mostraramos el siguiente código? (Representacion en Codigo 128B de "-1 union all select -100 as precio") Se completaria el codigo de la siguiente forma: query = "SELECT precio FROM productos WHERE codigo = -1 union all select -100 as precio" trayendo un producto de precio: $ -100.00, es decir, rebajandole 100 pesos al total de la compra si se pega este codigo a un producto. las posibilidades son terriblemente interminables... Opino que se deberia prestar mas atención a esto antes de que sea más tarde y se conozca en la calle...

No hay comentarios.: