El título ya es impactante… ¿Qué es un «bug»? Pues es un fallo más o menos importante que se cuela en un programa (ya ven, los informáticos somos así de inútiles…). Cuando una aplicación hace cosas raras (falla, termina repentinamente o se bloquea) suele ser debido a los bugs. Aunque la mayoría no supone un problema grave, otras veces son causa de vulnerabilidades que pueden ser explotadas para perjudicar a un usuario.
Por ejemplo, en los antiguos servidores de páginas web (por antiguos digo de hace unos cuatro o cinco años…) cuando se pasaban muchos datos a una web dinámica el ordenador en que estuviera alojada fallaba (los más expertos sabrán que estoy hablando del famoso atauque por desbordamiento de búfer, o buffer overflow). Ésta vulnerabilidad permitía, por ejemplo, ejecutar código remotamente en un servidor público, con los problemas de seguridad que produjo en su momento.
La palabra «bug» viene del inglés «insecto», y se usa en éste contexto porque en los primeros ordenadores, aquellos vetustos gigantes, los fallos eran causados no por mala programación sino por insectos que se introducían en las válvulas y en los componentes electromecánicos y provocaban que funcionaran mal… las cosas que aprende uno… Por cierto, que en la última entrega sobre Cracking usamos un debugger, ¿se acuerda? Éste tipo de programas nos ayuda a eliminar éstos incómodos bichitos de nuestras aplicaciones :-)
Pero quiero presentarles un bug muy divertido e interesante, que puede utilizarse para colgar cualquier sistema Windows 9x (las versiones 95, 98 y Me) y que impide hacer ciertas cosas en los sistemas Windows NT (la gama 2000 y el XP). Supongo que apenas nadie usa Windows 98 ya, pero si algún día tienen la oportunidad, tecleen en el explorador de Windows la ruta «C:\con\con». El sistema mostrará una pantalla azul y morderá el polvo miserablemente. Si se pierde con tanta versión y tanto Windows, puede leer éste artículo publicado ayer.
Éste error podía ser explotado con un fichero html que intentara abrir esa carpeta. De hecho hubo quien lo creo, y lo puso como página de inicio en Internet Explorer, en dos o tres equipos de un ciber. Cada vez que alguien arrancaba el navegador, el equipo se colgaba. Fantástico, ¿eh?
Si usa Windows XP, en principio está a salvo… pero éste bug dejó sus secuelas, no crea… Vaya a cualquier carpeta de su disco. Ahora intente crear un archivo o una carpeta con el nombre «con». ¿Lo consigue? No sólo pasa con «con», también puede probar con «lpt1». No parece muy posible.
Éstos son problemas clásicos de Windows que han sido explotados amplia y vilmente. ¿A qué se debe? El antiguo MS-DOS, y por tanto los primeros Windows, usan nombres internamente para identificar los dispositivos, salvando las distancias, son como los «dev» de Linux. Por ejemplo el «con» denota la consola, el «lpt1» el puerto paralelo… Cuando se teclea c:\con\con, el sistema trata de buscar un archivo «con» utilizando la consola… simplificando una historia complicada (y además de verdad), se forma un enorme lío porque nada tiene sentido para Windows y entonces aparece la pantalla azul diciendo que nos va a poner dos velas negras…
Los Windows 9x estaban construidos sobre el MS-DOS, razón por la cual el fallo se hizo presente en éstas versiones. Hay un montón de nombres que, al igual que «con», provocan fallos en éstos sistemas, de modo que cuando se construyó Windows NT se corrigió. Los Windows de ésta familia (2000, XP…) no están diseñados sobre el DOS, pero sí que es necesario guardar la compatibilidad hacia atrás. Quien escribe ésto supone que para evitarse problemas decidieron «cortar por lo sano» y no permitir crear éstos ficheros con nombres especiales, ya que si ejecutáramos un programa en modo compatibilidad con Windows 95, podría fallar al confundir el teclado con una carpeta. También, podríamos crear un archivo con ese nombre reservado, que provocaría fallos al abrirlo con el MS-DOS o al portarlo a Windows anteriores… (Por cierto, ¿y si lo creamos con Linux y lo intentamos abrir?)
Lo más grave de éste fallo, conocido popularme como «el bug de los conguitos» es que cuando se descubrió, podría ejecutarse sobre algunos servidores basados en Windows y desactualizados (en realidad la mayoría de servidores usan Unix, así que eran muy pocos). Uno tecleaba por ejemplo «www.peich.com/con/con» ¡y el servidor caía! Imaginen los ratos de irrepetible diversión a los mandos del invento :-P
Hay infinidad de bugs: unos se conocen y se arreglan con facilidad. Otros, como éste problema con el «con» y los dispositivos perduran a través de los siglos como muestra de lo que sucede cuando se es medianamente chapucero o hay prisa por entregar el sistema… Otros no llegan a ésta categoría y son simples fallos de diseño, cosas que los programadores no pudieron prever y que se manifiestan en forma de problemas en ciertos contextos… Y ésto me recuerda un fallo muy antiguo sin solucionar de Internet Explorer que veremos más adelante, con el que van ustedes a hacerse algunas preguntas…