domingo, 8 de octubre de 2017



En 1968, mientras Steve Jobs y Steve Wozniak aún estaban en el instituto, dos tejanos llamados Phil Ray y Gus Roche estaban decidiendo si montar un restaurante Tex-Mex o una empresa de ordenadores. Afortunadamente se decidieron por la segunda opción, ya que ambos eran ingenieros electrónicos que habían trabajado para la NASA, y la electrónica se les daba un poco mejor que la comida mejicana. Entonces el 6 de Julio de 1968 nació CTC, Computer Terminal Corp. La nueva empresa estaría enfocada principalmente a crear terminales de teletipos (dispositivos mecánicos que se conectaban con mainframes básicamente para programar) compatibles con otros modelos más costosos. El diseño era otro factor importante aparte del precio, que CTC tenía entre sus planes, ya que querían crear sus nuevos dispositivos de un tamaño aceptable, que pudiera estar encima de una mesa de escritorio con la pantalla y el teclado integrados (los teletipos de la época eran bastante grandes, difíciles de manipular y además la salida de datos era directamente en papel).

El primer producto lanzado por CTC fue el Datapoint 3300. Este terminal emulaba perfectamente a otro muy popular de la época, el llamado “Model 33”. El Datapoint 3300 era más barato y compatible al 100% con el “Model 33”, así como con otros dispositivos externos como la perforadora de tarjetas IBM 029 (otro producto muy popular). Además consiguieron un diseño más atractivo y ligero, integrando teclado y pantalla en una misma carcasa.

Datapoint 3300 fue un éxito pero los ingenieros de CTC no se conformaron. Su objetivo final era aún más ambicioso, querían fabricar el emulador de teletipos definitivo: uno programable. De esta forma con un sólo dispositivo podrían emular a cualquier otro teletipo existente. El problema era, que para crear un dispositivo programable de un tamaño aceptable de escritorio, era que en esa época no existía (como tal) el componente más importante de un ordenador: el microprocesador (el ordenador más común en aquellos tiempos era el mítico DEC PDP-8 que tenía el tamaño de un armario).

Justo en este punto es cuando se cruzan los caminos de CTC y otro grupo de ingenieros que precisamente, tenían la idea de crear un microprocesador encapsulado en un chip de silicio. En 1969, Vic Poor, Jonathan Schmidt y Harry Pyle se reunieron para celebrar las fiestas de Acción de Gracias y mientras disfrutaban del pavo, diseñaron las bases de un procesador que pudiera encajar en una pastilla de silicio. Inmediatamente se pusieron manos a la obra y buscaron una empresa que pudiera llevar a cabo su gran idea. Después de varios intentos infructuosos, por fin apareció CTC, la cual no sólo apostó por ellos, sino que contrataron a Poor y Pyle, además de hacer de sponsors de Schmidt que aún estaba en la Universidad.

El diseño del microprocesador incluía muchas de las especificaciones que aún se utilizan hoy día. Por ejemplo tenía una pila “stack”, saltos condicionales a otras partes del programa, podía cargar datos desde la memoria a un registro, realizar todo tipo de operaciones lógicas y aritméticas y como curiosidad también crearon el comando “NOP” para funciones de sincronización (este comando realmente no hace nada, simplemente consume ciclos de CPU y fue utilizado para sincronizar operaciones).

Además del microprocesador, la memoria RAM era otro reto a superar, ya que en aquella época no existían en chips como tales (llegaron dos años después). Las memorias de núcleo magnético eran muy caras, por ejemplo 4Kb de RAM para un DEC PDP-8 costaban 10.000 dólares. Para superar este problema utilizaron los llamados “shift-registers” o “registros de desplazamiento” (circuitos basados principalmente en biestables donde el valor de la salida del mismo depende de su entrada).

Para conseguir los chips de memorias basadas en registros de desplazamientos necesitaban buscar una empresa que los fabricara. En California había una pequeña startup llamada Intel la cual se dedicaba a fabricar circuitos integrados. Durante las muchas reuniones en las cuales se discutían las nuevas características o cambios de diseño a los chips de registro de desplazamiento, poco a poco fueron discutiendo sobre la posibilidad de integrar en un solo chip el diseño del microprocesador de CTC. Intel estaba trabajando en ese momento en un proyecto similar, el chip 4004 (considerado por muchos, no sin controversia, el primer microprocesador de la historia). Este chip de 4 bits estaba diseñado para calculadoras, es decir que era perfecto para números, pero no servía para procesar texto. Le faltaban muchas características que CTC necesitaba como por ejemplo operaciones booleanas. Este microprocesador no era válido para gestionar un sistema operativo, por lo tanto fue descartado por CTC.

Así que Intel comenzó a trabajar en un prototipo de microprocesador basado en las especificaciones de CTC que se llamaría 1201 (CTC era su mayor cliente en aquella época, harían lo imposible por mantenerlos contentos). Pero Intel tuvo algunos problemas implementando esta nueva tecnología (basada en PMOS) y por lo tanto se retrasaron en la entrega. Pero CTC no podía esperar más, el 1201 de Intel no avanzaba lo suficientemente rápido y ellos tenían que sacar lo antes posible un nuevo producto al mercado, ya que el Datapoint 3300 ya no era lo suficientemente rentable. Finalmente CTC comenzó a trabajar en su sucesor, el Datapoint 2200 sin esperar la entrega del nuevo procesador. Este nuevo terminal podría emular mediante programación a otros terminales más allá del “Model 33”. Finalmente el procesador (CPU) se creó utilizando aproximadamente 120 componentes TTL (chips del tipo MSI, Medium Scale Integration) aplicando el diseño inicial de Poor, Schmidt y Pyle. A pesar de ser un ordenador tipo “serie” (procesaba sólo un bit) la velocidad de proceso era más que decente e incluso superaría durante varios años a los nuevos microprocesadores de 8 bits que salieron al mercado más tarde.

Datapoint 2200 era realmente un producto adelantado a su época, tenía su propio sistema operativo llamado Datapoint OS, dos cassettes que permitían almacenar hasta 130 KB de datos cada uno e incluso la opción de conectar unidades de disco flexibles de 8 pulgadas. También tenía su propia versión del lenguaje Cobol, un intérprete de BASIC y un compilador RPG II. Como podemos imaginar, todas estas herramientas de programación no se quedarían sólo para emular teletipos. Pronto la gente comenzó a sacar partido al hardware y el software del Datapoint 2200, creando todo tipo de programas e incluso algún que otro juego. Inicialmente los creadores de Datapoint 2200 no esperaban esta otra utilidad aparte de la emulación de teletipos, pero finalmente se dieron cuenta del tremendo potencial del dispositivo que habían fabricado: había nacido el ordenador personal (casi de forma accidental). Fue tal el éxito de este nuevo producto, que CTC se pasó a llamar Datapoint.

Y para completar la revolución informática de Datapoint tenemos que volver a Intel. Aunque no tuvieron a tiempo listo el microprocesador 1201 para CTC, ellos continuaron desarrollando la idea, y por fin, en abril de 1972 salió al mercado el 8008, padre de todos los microprocesadores del tipo x86. Éste era tan parecido al procesador “artesanal” creado por Datapoint que eran casi compatibles al 100%, por lo tanto Datapoint 2200 es el “abuelo” de todos los ordenadores personales. Además, gracias a Datapoint, había nacido otro gigante que cambiaría y establecería nuevas reglas en la historia de la informática: Intel Corporation.

martes, 2 de agosto de 2016

Buffer Overflows. Trick or “Threat”?


JumpToEsp.png
Entre mediados de los 90s y la primera década del siglo XXI, los ataques por desbordamiento de memoria ocuparon muchos titulares en la prensa técnica.
Un error de desbordamiento de memoria o más conocido como buffer overflow, aparece cuando un programa no gestiona correctamente la asignación de memoria (direccionamiento) en una operación de carga de datos a la memoria. Por lo tanto el programa está intentando almacenar una cantidad de datos en esa sección de la memoria (buffer) mayor de la que puede contener. Esto provoca un error en la ejecución del programa el cual puede corromper la información, detener la ejecución o en el peor de la casos, deja una puerta abierta a la ejecución de código malicioso. Es aquí donde aparece el ataque por desbordamiento de memoria. La técnica consiste básicamente en provocar el error buffer overflow para alterar la ejecución del programa y redireccionarlo a un fragmento de código diferente, tomando el control total del mismo.
Cuando buscamos información sobre buffer overflows o desbordamientos de memoria, el texto publicado en 1996 por Elias Levy, más conocido como Aleph One, en la famosa revista electrónica Phrack: Smashing The Stack For Fun And Profit, es un referente por no decir el referente en cuanto a la explotación de la pila se refiere.
Aunque éste es el texto más popular en la materia, un año antes, en 1995, concretamente éste data del 20 de octubre, otro hacker Peiter Zatko, más conocido como Mudge, había publicado, pero de forma privada, otro texto titulado How to write Buffer Overflows. Por lo tanto tiene sentido que en esa época se iniciara una avalancha de ataques de desbordamiento de memoria.
El aprovechamiento de este tipo de vulnerabilidad viene inluso de más atrás. De hecho el 2 de noviembre de 1988, el que se considera uno de los primeros gusanos de la historia, el famoso gusano de Morris, irrumpió en la prensa, no sólo por el impacto que causó, sino porque se convirtió en el primer caso convicto bajo la Ley de 1986 de Fraude y Abuso de Computadoras, Código de Estados Unidos.
Según palabras de su autor Robert Tappan Morris Jr, el gusano usaba cómo uno de los vectores de ataque un desbordamiento de memoria en el demonio fingerd, un servicio que actualmente prácticamente está extinto. El gusano realmente no fue creado con fines destructivos, pero gracias a un error en la lógica de infección, éste llegaba a infectar los servidores hasta siete veces, llegando a dejar estos inhabilitados, básicamente generando un ataque de denegación de servicio (DoS).
Robert T Morris Jr también cuenta que por aquella época, aunque la explotación de aplicaciones a través del desbordamiento de memoria no era algo común, sí que existía preocupación por la falta de comprobación de los límites de memoria por parte de los programadores. Esta falta de rigurosidad podría conducirnos a la ejecución arbitraria de código malicioso y por consiguiente a comprometer al sistema, como ocurrió en el caso de dicho gusano.
Pero nos tenemos que remontar hasta octubre del año 1972, fecha datada del primer documento público conocido hasta la fecha, que trata este tema, creado por el Panel de Estudio de Planificación de Tecnología en Seguridad Informática (Computer Security Technology Planning Study Panel - PDF), a petición (bajo contrato) de las Fuerzas Aéreas de los Estados Unidos. En el apéndice I de dicho documento cuyo título es: Amenazas de seguridad y técnicas de penetración (Security Threats and penetration techniques), podemos ver un apartado titulado Verificación incompleta de parámetros (Incomplete Parameter Checking), en el que dice:
“Proporcionando a los programas de usuario una dirección fuera del espacio reservado, es posible hacer que el monitor devuelva datos no autorizados para ese usuario, o por lo menos, generar una serie de condiciones en la que el monitor cause un error de sistema.
En un sistema operativo contemporáneo, una de las funciones proporcionadas es mover una cantidad limitada de información entre el espacio de sistema y el de usuario. El código encargado de ejecutar dicha operación no comprueba correctamente el origen y el destino de dicha información, permitiendo porciones del monitor ser sobrescritas por el usuario. Esto puede ser usado para inyectar código dentro del monitor y así el usuario tomar control del sistema”.
Nota: “monitor” hace referencia al núcleo (kernel) del sistema.
Por lo tanto este es la la primera documentación de ataques por desbordamiento de memoria que se conoce hasta la fecha.
Hasta ahora hemos visto de forma muy resumida algunos de los acontecimientos que han marcado un punto en la historia de los ataques por desbordamiento de memoria. Pero los desbordamientos de memoria no tienen por qué ser usados necesariamente como un vector de ataque. De hecho hay una anécdota en la que un juego llamado Ratchet & Clank: Up Your Arsenal de la empresa Insomniac Games, el cual se lanzó al mercado sin la funcionalidad de poder ser parcheado. Resulta que al principio del juego se mostraba al usuario la licencia del mismo. Esta licencia se descargaba de los servidores de la empresa. Esa parte concreta del código no comprobaba el tamaño del texto descargado por lo que era potencialmente vulnerable a una ataque de desbordamiento de memoria. Así que la propia compañía aprovechó dicho “vector de ataque” para mandar con la propia licencia el parche y midiendo estratégicamente el tamaño del mismo para que éste fuera ejecutado y así poder aplicar la actualización.
Otros errores famosos de desbordamiento de memoria aparecen en juegos clásicos como el Pac Man y la famosa pantalla partida, Galaga (pantalla de la muerte o arreglando Galaga), Donkey Kong o la familia Súper Mario, en los siguientes vídeos: https://www.youtube.com/watch?v=vAHXK2wut_Ihttps://www.youtube.com/watch?v=aqIYnFtDnRw , etc.
Los desbordamientos de memoria son un problema importante de seguridad, pero también hemos comprobado que algunas veces se pueden aprovechar para implementar “trucos” (tricks) no maliciosos o incluso obtener resultados divertidos como los errores en los juegos clásicos.

Fuente: CyberHades

jueves, 15 de mayo de 2014

domingo, 13 de octubre de 2013

Revistas clásicas de Informática escaneadas

REvistasClasicas

En AtariMagazineArchive puedes encontrar una colección realmente impresionante de revistas escaneadas de la época dorada de los ordenadores de 8 bits. Desde la mítica Compute! hasta otra realmente clásicas llamada ROM

No podía faltar la revista española del Spectrum por excelencia, MicroHobby. Desde este enlace puedes descargar al completo todas las revistas.

Otro enlace que tiene material interesante, como revistas Byte de los 70 escaneadas es VintageComputer.net

Si quieres prácticamente todas las revistas sobre el Spectrum, no olvides visitar este enlace de la web de World Of Spectrum.

Seguiremos publicando nuevos enlaces.