Errores de Software

Un problema que no hay que dejar de pasar por alto.

Tipos de Errores

Un error de software, comúnmente conocido como bug («bicho»), es un error o fallo en un programa de computador o sistema de software que desencadena un resultado indeseado.

Defectos de diseño de programas

· Diseños con colores inapropiados para las personas que padecen daltonismo

· Diseños que usan textos con tipografías de difícil lectura por su tamaño o diseño

· Diseños que fuerzan el uso del ratón o mouse sin dejar alternativas de teclado para personas con dificultades motrices

· Diseños con implicaciones culturales, por ejemplo usando partes del cuerpo que en una determinada cultura sean objeto de vergüenza o burla o símbolos con características de identidad cultural o religiosa

· Estimar que el equipo donde se instalará tiene determinadas características (como la resolución de la pantalla, la velocidad del procesador, la cantidad de memoria o conectividad a Internet) propias de un equipo de gama alta, en vez de diseñar el software para su ejecución en equipos normales

Errores de programación comunes

División por cero

Ciclo infinito

Problemas aritméticos como desbordamientos (overflow) o subdesbordamientos (underflow).

Exceder el tamaño del array

Uso de Una variable de en inicializado

Acceder a memoria no permitida (Violación de acceso)

Pérdida de memoria (memoryleak)

Desbordamiento o subdesbordamiento de la pila (estructura de datos)

Desbordamiento de búfer (buffer overflow)

Bloqueo mutuo (deadlock)

Indizado inadecuado de tablas en bases de datos.

Defectos de instalación o programación

Eliminación o sustitución de bibliotecas comunes a más de un programa o del sistema (DLL Hell).

Reiniciar arbitrariamente la sesión de un usuario para que la instalación tenga efecto.

Suponer que el usuario tiene una conexión permanente a internet.

Utilizar como fuente enlaces simbólicos a ficheros que pueden cambiar de ubicación.

Códigos de errores de lenguajes de programación

La mayor parte de los lenguajes de programación presentan al menos dos tipos de errores que permiten a los programadores manejar las fallas de los programas de una manera eficiente y que no resulte agresiva con el usuario final. Dichos errores son de compilación y errores en tiempo de ejecución. Los errores de compilación normalmente inhiben que el código fuente derive en un programa ejecutable, mientras que los errores en tiempo de ejecución son situaciones específicas en las que un evento externo al programa impide su ejecución. Regularmente un programador eficiente debe intentar imaginar como debe responder ante esos eventos de manera que sea el programa y no el usuario o el sistema operativo los que resuelvan el problema.

Agujero de seguridad

Un agujero de seguridad es una vulnerabilidad de un sistema de información que permite mediante su explotación violar la seguridad del sistema.

Etapas

Nacimiento

Durante el proceso de desarrollo del producto por parte del proveedor (Ej el vendedor o una comunidad de desarrolladores software), se introducen una serie de defectos. Estos defectos pueden ser de diseño, implementación o de gestión. Algunos de esos defectos pueden convertirse en riesgos para la seguridad del producto y por tanto para la seguridad del usuario del producto. Un defecto se convierte en una vulnerabilidad si hace que el comportamiento del sistema sea tal que pueda ser aprovechado para conseguir acceso no autorizado, elevación de privilegios, denegación de servicio o cualquier otra forma de romper la seguridad del sistema

Descubrimiento

ocurre cuando se tiene conocimiento de la existencia de la vulnerabilidad. Si la vulnerabilidad es creada intencionadamente entonces el nacimiento y el descubrimiento ocurren simultáneamente. Se llama descubridor a la primera persona que revela un defecto y determina que ese defecto es una vulnerabilidad. Si el descubridor no es conocido se dice que es anónimo.

Comunicación de la vulnerabilidad

ocurre una vez que el descubridor revela la vulnerabilidad a alguien más. Esta transferencia de información puede ser de distintos tipos. Ejemplos: completa y pública vía (revelación completa) o comunicación privada entre hackers. Se llama originador (en inglés originator) o revelador (en inglésdiscloser) a la persona u organización que informa de la vulnerabilidad a el proveedor del producto. Observar que el descubridor y el originador pueden ser personas distintas.

Automatización de explotación

Es cuando a partir de la vulnerabilidad se crea una herramienta o script que automatiza la explotación de la vulnerabilidad. A esta herramienta o script se le llama exploit. De esta forma se permite que no sólo expertos sobre el tema (hackers) puedan vulnerar la seguridad. De esta forma se tiene una herramienta que permite a otros usuarios inexpertos (script kiddies) vulnerarla.

Publicitación

Es cuando el conocimiento de la vulnerabilidad se extiende a una audiencia importante dándole publicidad.

Corrección

Ocurre cuando el vendedor del producto analiza la vulnerabilidad, localiza cual es el problema, y lanza una versión al público que resuelve la vulnerabilidad.

Muerte

Ocurre cuando el número de sistemas vulnerables al exploit es insignificante. Esto puede haber sucedido porque el sistema ha sido retirado, el sistema ha sido arreglado mediante algún parche, o porque los hackers no tienen interés en explotarla.

Búsqueda de vulnerabilidades y motivaciones para su publicación

La búsqueda de vulnerabilidades de seguridad es realizada principalmente por dos tipos de personas u organizaciones:

Los atacantes de sistemas

Pueden aprovechar las vulnerabilidades para hacer vulnerables a los sistemas y conseguir de forma ilegal beneficios monetarios de ello, ya sea directamente (Ej. permitiendo el uso de tarjetas de crédito ajenas) o indirectamente (Ej. vendiendo información privada sobre las víctimas). Por su propia naturaleza este tipo de investigadores del vulnerabilidades no están interesados en la revelación de las vulnerabilidades descubiertas ya que así se aseguran de que la vulnerabilidad no sea arreglada y así puedan seguir beneficiándose de la misma.

Profesionales de la informática y en especial de la seguridad

estudian de forma legal los sistemas y muchas veces logran encontrar vulnerabilidades. Este tipo de personas están interesadas en la revelación de la información. De esta forma acreditan haber encontrado la misma y así pueden apuntarse el mérito. Las motivaciones que tienen estos profesionales para encontrar la vulnerabilidades podríamos resumirlas en:


  • Reputación.- El que una persona o organización sea acreditada como la primera en descubrir una vulnerabilidad particular es muy importante en el mundo de la seguridad informática. Por un lado a las personas les acredita de habilidades y esto puede usarse para aumentar sus ingresos o conseguir mejores trabajos. Para una empresa también es importante porque puede utilizarse para conseguir clientes en base al alto nivel del personal que trabaja para ella.
  • Perjudicar a competidores.- Por ejemplo un desarrollador o compañía puede tener especial interés en buscar vulnerabilidades a productos de la competencia para poner en dificultades al proveedor y desacreditar sus productos. De esta forma se consigue mejorar la posición en el mercado del producto propio.
  • Forzar al proveedor del productor a mejorar la calidad del producto y que tenga más interés en producir software más seguro.
  • Disfrutar del desafío intelectual de encontrar vulnerabilidades.
  • Obtener gratificaciones monetarias por parte del proveedor del producto o de otra entidad.

Tratamiento de la información sobre vulnerabilidades

Las formas de conseguir información sobre vulnerabilidades son las siguientes:

  • Investigación sobre el funcionamiento de productos
  • Investigación del funcionamiento de código malicioso que se aprovechan de vulnerabilidades
  • A través de informes que revelan ese tipo de información.

Los dos aspectos fundamentales a estudiar sobre el tratamiento de la información sobre vulnerabilidades son:

Consultenos y asegure sus Archivos importantes

Su consulta nos interesa