lunes, 29 de noviembre de 2010

SEGURIADAD DE LA BASE DE DATOS



La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la autenticación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información.

En un SGBD  existen diversos elementos que ayudan a controlar el acceso a los datos.

En primer lugar  el sistema debe identificar y autentificar a  los usuarios utilizando alguno de las siguientes formas:


-Código y contraseña
-Identificación por hardware
-Características bioantropométricas  
-Conocimiento, aptitudes y hábitos del usuario 
-Información predefinida

Además, el administrador deberá especificar los privilegios que un usuario tiene sobre los objetos:


-Usar una B.D.
-Consultar ciertos datos
-Actualizar datos
-Crear o actualizar objetos
-Ejecutar procedimientos almacenados
-Referenciar objetos
-Indexar objetos
-Crear identificadores

Algunas medidas básicas:

  • Demorar la respuesta ante claves  erróneas;  aumentar la demora cada vez.   Alertar si hay demasiados intentos.

  • Registrar todas las entradas. Cada vez que un usuario entra, chequear cuándo y  desde  dónde entró la vez anterior.




  • Hacer chequeos periódicos de claves fáciles de adivinar, procesos que llevan demasiado tiempo corriendo, permisos erróneos, actividades extrañas (por ejemplo cuando usuario está de vacaciones). 




Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o de script que esté incrustado dentro de otro.
Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos.
La inyección SQL es un problema de seguridad informática que debe ser tomado en cuenta por el programador para prevenirlo. Un programa hecho con descuido, displicencia, o con ignorancia sobre el problema, podrá ser vulnerable y la seguridad del sistema puede quedar ciertamente comprometida. Esto puede suceder tanto en programas ejecutándose en computadores de escritorio, como en páginas Web, ya que éstas pueden funcionar mediante programas ejecutándose en el servidor que las aloja.
La vulnerabilidad puede ocurrir cuando un programa "arma" descuidadamente una sentencia SQL, con parámetros dados por el usuario, para luego hacer una consulta a una base de datos. Dentro de los parámetros dados por el usuario podría venir el código SQL inyectado.
Al ejecutarse esa consulta por la base de datos, el código SQL inyectado también se ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar código malicioso en el computador.
Asumiendo que el siguiente código está en una aplicación web y que existe un parámetro "nombreUsuario" que contiene el nombre de usuario que nosotros le demos, la inyección SQL es posible:
consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"
Si el usuario escribe su nombre, digamos "Alicia", nada anormal sucedería, la aplicación generaría una sentencia SQL similar a la siguiente, que es perfectamente correcta, en donde se seleccionaría al usuario "Alicia":
SELECT * FROM usuarios WHERE nombre = 'Alicia';
Pero si un usuario malintencionado escribe como nombre de usuario:
"Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE '-' = '-", se generaría la siguiente consulta SQL, (el color verde es lo que pretende el programador, el azul es el dato, y el rojo, el código SQL inyectado):
SELECT * FROM usuarios WHERE nombre = 'Alicia';
DROP TABLE usuarios;
SELECT * FROM datos WHERE '-' = '-';
La base de datos ejecutaría la consulta en orden, seleccionaría el usuario 'Alicia', borraría la tabla 'usuarios' y seleccionaría datos que quizá no están disponibles para los usuarios web comunes. En resumen, cualquier dato de la base de datos está disponible para ser leído o modificado por un usuario malintencionado.
Nótese por qué se llama "Inyección" SQL. Si observamos el código malicioso, de color rojo, vemos que está en el medio del código bueno, el verde. El código rojo ha sido "inyectado" dentro del verde.
La inyección SQL es fácil de evitar en la mayoría de los lenguajes de programación que desarrollan aplicaciones web.


SQL Injection 


Muchos sitios en la red muestran una caja de "Buscar" o "Search". En SQL el punto y coma( funcionan como el fin de comando y el doble guión (--) como comentario. Si sabes el nombre de la tabla (o intentas adivinarlo) donde se guardan los passwords de los usuarios puedes jugar un poco enviando cosas como: UPDATE users SET password="hack"; este tipo de hackeo es muy entretenido (horas y horas de sana diversión ;-) ) y te sorprenderás del hecho de que incluso sitios de grandes empresas internacionales no poseen ningún sistema de filtrado.
Phising "password harvesting fishing" (cosecha y pesca de contraseñas) es una técninca que consiste en duplicar (hasta en el más mínimo detalle) un sitio web verdadero en nuestro propio servidor. Debemos ir a Hotmail, Gmail, Yahoo!, etcétera, ver el código HTML y guardarlo en nuestro propio server. Luego enviamos un email a la persona de la cual deseamos su clave con algo como "Alguien muy especial te ha enviado una Ciber-tarjeta, haz click aquí" y lo enviamos a nuestro propio Webserver en Linux. El usuario cree que está entrando en la página de inicio de Hotmail e introduce su login y password, ¡pero ahora es nuestro! 
A los errores en la programación se les conoce como "bugs" o bichos, la mayoría de los bugs sólo hacen que los programas no funcionen como deben pero algunos pueden ser aprovechdos para violar la seguridad, a estos bugs se les conoce como "exploits". Es decir, no todos los bugs son exploits pero todo exploit es un bug. Denegation of Service o DOS La denegación de un servicio implica que el hacker ha aprovechado un bug en un programa para " tirar" un servicio del servidor. Generalmente se trata del Webserver. El IIS de Microsoft es particularmente vulnerable a este tipo de ataques. Tanto el Change Coding como el DOS son hacks relativamente benévolos pues no implican (necesariamente) a un intruso en el sistema.


 
 Ejemplo de vulnerabilidada de una base de datos 
La Agencia de Recaudación de Buenos Aires (ARBA) denunció esta noche que la base de datos puesta en Internet hace dos días con 72.000 grandes morosos fue hackeada hoy, por lo que el director del organismo, Santiago Montoya, ordenó una investigación para conocer desde dónde fueron dados de baja los datos.

Así lo confirmaron a Clarín.com fuentes de la Agencia, que aseguraron que si bien la base de datos quedó momentáneamente dada de baja, los archivos se encuentran en condiciones y volverán a ser puestos online.

En la base de datos que desde el miércoles y hasta hoy podía ser consultada en la página del organismo (www.arba.gov.ar) se encontraban deudores que ya están en juicio con la Provincia por deudas superiores a los $ 2.000.

La lista incluye deudas desde 2004 por un total de $ 4.200 millones. La encabeza la firma Transportes Metropolitanos General Roca S.A., con 214 millones en mora. Es la compañía que manejaba el empresario Sergio Taselli y al que el Estado nacional le confió durante años el manejo del ferrocarril Roca, entre otros.

Las demandas que encaró la Provincia abarcan a los cuatro impuestos bonaerenses: Inmobiliario (el que genera más juicios), Automotor, Ingresos Brutos y Sellos. 




La internet esta inundada de hackers conocidos como “crackers” o “black hats” (sombreros negro), que trabajan para explotar sistemas informáticos. Ellos son los que has visto en las noticias que son alejados de una computadora para evitar que incursionen nuevamente en ciber-crímenes. Algunos de ellos lo hacen por diversión y curiosidad, otros para beneficio económico personal.

 Jonathan James

James ganó notoriedad cuando se convirtió en el primer adolescente que era enviado a prisión acusado de Hacking. El fue sentenciado a seis meses cuando tenía solo 16 años de edad. En una entrevista anónima de la PBS, afirma: “Yo solo anduve por allí viendo, jugando. Era como un desafío para mi el ver cuanto podía lograr”.
Las más importantes intrusiones de James tuvieron como objetivo organizaciones de alto grado. Él instaló un backdoor en un servidor de la Agencia de Reducción de Amenazas de la Defensa (Defense Threat Reduction Agency – DRTA). La DRTA es una agencia del Departamento de Defensa encargado de reducir las amenazas a los Estados Unidos y sus aliados de armas nucleares, biológicas, químicas, convencionales y especiales. El backdoor que el creó le permitió ver emails de asuntos delicados y capturar los nombres de usuario (username) y clave (passwords) de los empleados.
James también crackeó las computadoras de la NASA robando software por un valor aproximado de $ 1.7 millones. Segun el Departamento de Justicia, “entre el software robado se encontraba un programa utilizado para controlar el medio ambiente -temperatura y humedad- de la Estación Espacial Internacional”. La NASA se vio forzada a tener que paralizar 21 días sus computadoras y ocasionó pérdidas calculadas en $ 41 mil. James explicó que el se bajó los codigos para suplir sus estudios de programación en C, pero afirmaba “el codigo por si solo era desastrozo … ciertamente no digno de $1.7 millones como demandaron”.
Dado el grado de sus intrusiones, si James (también conocido como “c0mrade”) hubiera sido un adulto, se le hubiera aplicado una pena mínima de no menor a diez años. En su lugar, le fue prohibido el uso recreacional de la computadora y 6 meses de arresto domiciliario. Hoy, James afirma que aprendió su lección y puede ser que comience una compañía de seguridad de computadoras.

Adrian Lamo
 
Lamo saltó a la fama por sus intrusiones a organizaciones mayores como The New York Times and Microsoft. Bajo el apodo de “homeless hacker” (hacker sin hogar), el usó conexiones como Kinko (internet cafés), tiendas café y librerías para hacer sus intrusiones. En un articulo de su perfil, Lamo reflexiona “Tengo una computadora portátil en Pittsburg, me cambio de ropas en Washington D.C., para dar una idea de mi juridiscionabilidad”. Durante su niñez y años de formación su familia se mudó con frecuencia a Arlington, Virginia, Bogotá, Colombia, lugar de nacimiento de su padre y finalmente a San Francisco. Cuando decidieron trasladarse a Sacramento, Adrian Lamo que contaba con 17 años eligió quedarse en la ciudad y vivir por su cuenta. Ha pasado la mayoría de sus noches en los sofás de los amigos. Pero cuando la hospitalidad se torna difícil, se cobija en los edificios en construcción de la ciudad.
Las intrusiones de Lamo mayormente consisten en “pruebas de penetración”, en las que encuentra defectos de seguridad, los explota y luego envia un informe a las compañías de sus vulnerabilidades. Sus logros incluyen Yahoo!, Bank of America, Citigroup y Cingular. Cuando los “white hat hackers” son contratados por las compañías para hacer “pruebas de penetración” (penetration test) es legal.
Cuando Lamo rompió el sistema de seguridad de la Intranet de “The New York Times” las cosas se pusieron serias, Lamo se añadió a la lista de expertos que veía información personal de los contribuidores, incluyendo los Numeros de Seguro Social. Lamo tambien hackeó las cuentas LexisNexis de The Times para la investigación de temas de interés.
Por su intrusión al New York Times, Lamo fue obligado a pagar $65 mil de reparación. Tambien fue sentenciado a 6 meses de arresto domiciliario y dos años de libertad condicional, que expiraron el 16 de enero del 2007. Lamo está actualmente trabajando como un periodista galardonado y locutor público.

No hay comentarios:

Publicar un comentario