Bugs
|
Bugs de Software. Es un error que afecta el comportamiento de un determinado programa. Odiados por los programadores, los “bugs” suelen ser bastante difíciles de eliminar. Para poder lidiar con ellos, los especialistas los han divididos en grupos según su comportamiento, y así es como ha surgido toda una clasificación zoológica de estos bichos. Los más conocidos son: Heisenbugs, Bohrbug, Mandelbugs, Schroedinbugs y demás integrantes de este nutrido grupo de errores.
Etiología
La palabra bugs en inglés significa insecto, y se utiliza para referirse a los fallos que aparecen a lo largo del proceso de creación de programas de ordenador. Si bien pueden aparecer en cualquiera de las etapas del ciclo de vida del software, son más frecuentes durante la fase de desarrollo y programación. El origen de este término es tan viejo como la programación misma, e incluso hay quienes afirman que el término “bug” se utilizaba en la “era pre-ordenador”, cuando alguna polilla atascaba los delicados mecanismos de alguna máquina.
Tipos de bugs de software
- Heisenbug
Los programadores utilizan el término “Heisenbug” para denominar a los errores que desaparecen o alteran su comportamiento al tratar de depurarlos. Esto ocurre porque cuando se intenta encontrar un error dentro de un programa se suele utilizar alguna herramienta -otro programa- o un estado de memoria diferente al habitual, lo que hace que el entorno en que se ejecuta el software bajo prueba no sea el mismo y el error desaparezca como por arte de magia.
- Bohrbug
Los “Bohrbug”, denominados así por el modelo atómico de Bohr, es un tipo de error que, no importa lo que se haga, mantienen un comportamiento constante.
- Mandelbug
Este tipo de bug de software provoca fallos con causas tan complejas que su comportamiento parece ser completamente caótico.
- Schroedinbug
Errores que no aparecen hasta que alguien lee el código y descubre que, en determinadas circunstancias, el programa podría fallar. A partir de ese momento, el maldito “Schroedinbug” comienza aparecer una y otra vez.
- Fantasma en el Código
Es un tipo de bug que suele esconderse en esas rutinas o subprogramas que rara vez se ejecutan. Su ubicación los hace muy difíciles de identificar durante las pruebas previas al lanzamiento del programa, y puede hacer que un producto fracase estrepitosamente al ser puesto a la venta.
- Otros
Los programadores llaman “stole” al problema que se produce cuando luego de introducir datos que aparentan ser correctos (pero no lo son) se obtiene una (lógica) salida incorrecta. El problema, por supuesto, se encuentra en los datos introducidos, pero como el programador está convencido que estos son correctos, suele comenzar a reescribir partes de su programa tratando de eliminar un bug que, en realidad, no existe. Más extraños aún son los denominados “Phase of the Moon bug” (bugs de fase lunar), errores que parecen depender de factores aleatorios y que la mente del programador los atribuye a los motivos más esotéricos. “El programa falla cuando José está presente”, o “solo falla cuando la luna está en cuarto creciente”. Al igual que todos los anteriores, este bug es muy frecuente.
Tipos de bugs de software en la web
- RFI: Inclusión Remota de Archivos
Inclusión Remota de Archivos: vulnerabilidad existente solamente en páginas dinámicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programación de la página que contiene la función include().
- LFI: Inclusión Local de Archivos
Inclusión Local de Archivos: es un tipo de vulnerabilidad que se encuentra en páginas mal programadas en lenguaje PHP (de hecho el LFile y Rfile inclusión solo afecta al PHP). Un usuario malicioso puede utilizar este bug para obtener archivos locales del servidor por ejemplo archivos de conexión a bases de datos, scripts PHP privados, el archivos password, entre otras cosas.
- CSRF: Falsificación de Petición en Sitios Cruzados
Falsificación de Petición en Sitios Cruzados: es un tipo de exploit malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía. Esta vulnerabilidad es conocida también por otros nombres como XSRF, enlace hostil, ataque de un click, cabalgamiento de sesión, y ataque automático.
- XSS
XSS es un ataque que obliga a un sitio web, mediante la inyección comúnmente de html/javascript ofuscado o no, a mostrar o ejecutar código malicioso en el navegador de los usuarios que lo visiten, no en el servidor. El servidor solo es conducto para atacar al usuario. Una vez controlado el navegador de la víctima el atacante puede hacer muchas cosas.
- SQL Inyección
La inyección SQL es el ataque vía web, que aprovecha errores en la filtración de datos introducidos por el usuario, y que permiten a un atacante, tener control de cierta aplicación.
- CRLF Inyección
Las SMTP injections son una aplicación de la técnica conocida como "CRLF Injections". El objetivo es introducir una sentencia maligna para que sea ejecutada como si fuese propia de la aplicación vulnerable y provoque el caos en la aplicación en desarrollo.
Fuentes
- Artículo: SMTP Injection. Disponible en: "http://0verl0ad.blogspot.com". Consultado: 25 de mayo del 2012.
- Artículo: Tutorial de Inyección SQL. (SQL Injection). Disponible en: "http://foro.elhacker.net". Consultado: 25 de mayo del 2012.
- Artículo: Diferencias de los usos en tipos de ataques XSS, CSRF o XSRF. Publicado: 7 de junio de 2011. Disponible en: "http://foro.elhacker.net". Consultado: 25 de mayo del 2012.
- Artículo: Cross Site Request Forgery. Disponible en: "http://es.wikipedia.org". Consultado: 25 de mayo del 2012.
- Artículo: Videotutorial: Como realizar un ataque LFI. Publicado: 9 de marzo de 2011. Disponible en: "http://www.rinconinformatico.net". Consultado: 22 de mayo del 2012.
- Definición: Bugs. Disponible en: "http://www.masadelante.com". Consultado: 23 de mayo del 2012.
- Artículo: Tipos de bugs de software. Disponible en: "http://www.neoteo.com". Consultado: 23 de mayo del 2012.