Venían mentes inquietas en esta clase vamos a hablar sobre un tipo de ataque denominado Ataque a nivel
de aplicación una aplicación o una pieza de software es un programa Okkhoy el Wireless la calculadora
cualquier tipo de aplicación que corre sobre un sistema operativo es un programa de una pieza de software.
El problema por el que se dan los ataques a nivel aplicación es que los desarrolladores del software
de si los programadores trabajan con un calendario muy ajustado en donde hay unos tiempos que se le
vencen y que tienen que cumplir para entregar sus productos sus piezas al tiempo sus productos.
Otro de los problemas es que las piezas de software tienen cada vez más funcionalidades y características
y cada característica o funcionalidad es un fragmento de varias líneas de código y entonces cuando claro
cuando yo tengo muchas más líneas de código es como una cadena en la cadena de la seguridad.
El nivel de incertidumbre acerca de la seguridad.
Cuanto más eslabones tenga propende más a un error porque uno de esos eslabones puede estar con la seguridad
debilitada o no pudo haber tenido todos los controles que tienen forjado si es una cadena y puede ser
uno de esos eslabones y yo la someto a una tensión se abra o se corte.
Lo mismo pasa con el software de todos los tiempos que tienen para trabajar.
El último bastión de tiempo que se les vence es el tiempo estipulado para hacer la entrega pública de
software es decir para liberar la versión del software.
Si bien hay empresas muy grandes que una o dos veces en la historia se han tomado el privilegio de correr
su fecha de lanzamiento pero generalmente nunca se corre una fecha de lanzamiento de un software entonces
esto sumado a que la seguridad generalmente es una idea de último momento a menos que se esté programando
un antivirus o un firewall o un sandbox y no alguna protección anti rootkit.
Pero en el resto de las aplicaciones no se tiene en cuenta la seguridad.
No se hacen ningún tipo de verificación por ejemplo de técnicas de buffer overflow es decir desbordamiento
de wafer o de pila que es lo que vimos en las clases anteriores donde una aplicación puede agarrar salir
de su segmento de memoria y ejecutar Pissarro datos de otro de otro segmento de memoria correspondiente
a otra aplicación que puede tener privilegios más altos por ejemplo y ejecutar cierto tipo de exploit
explotar el sistema como un dato curioso.
Estas mujeres que están ahora arriba mío ahí fue una de las primeras hackers.
Si una de las primeras hackers o uno de los primeros Jaqen fue una hembra se llamaba Ada y era una persona
sumamente inteligente.
Ahora estamos viendo como una de las primeras computadoras Ada se llamó y vamos a seguir con esto etnográfico
que ya sé que está pixelado pero en realidad me interesa que se vea como diagrama de flujo es otro de
los problemas por los que se pueden ejecutar ataques a nivel aplicación y tienen que ver con una metodología
para hacer las cosas nuevas que se puso de nuevo se puso de moda en el año 2000 y pico que se llama
programación XP equipe programación extrema.
De hecho los primeros en aplicarlo fueron los del gigante Microsoft con su idea y sacaron la versión
de XP de Windows XP porque estuvo programada con este sistema que fue.
Si bien Windows XP fue uno de los que mejor le salió pero fue por la cantidad de tiempo que estuvo en
el mercado y la cantidad de Service Pack o parches de seguridad que le iban poniendo porque también
fue uno de los que más errores tuvo de programación y los que más vulnerabilidades y exploit tuvo y
fue atacado más que ningún otro en la historia del software Okkhoy porque fue hecho con este tipo de
programación.
Fíjense vamos a ver no esta herramienta de dibujo preferida y fíjense una cosa.
Fíjense por ejemplo que acá donde dice la parte de diseño y diseño se tiende a las personas a los programadores
a que hagan diseños simples.
Yo recuerdo cuando me recibí de programador en Microsoft hace mucho muchas décadas que un instructor
nuestro nos decía Ustedes tienen que colocar en todas las líneas de código además de las líneas que
hacen que siga la lógica de lo que están haciendo tienen que hacer una línea que diga
error
no es así.
Resume un error NEX.
Qué significa.
Le pregunto al instructor Moisés Miranda.
Esto lo recomienda Microsoft lo que significa es que si hay algún error en el software en lugar de detenerse
la aplicación y marcar un error en la pantalla y no seguir funcionando que siga ejecutando el programa
que siga la línea del programa claro esto de cara al usuario hace pensar que los programadores son mejores
porque hace pensar que las aplicaciones no fallan.
Seguramente han visto le ha pasado alguna vez les ha pasado que cierta aplicación la están usando la
baja la minimiza le ponen otra delante y hacen la operación rara y la pantalla así como unos puntitos
así fuera de lugar.
Esos puntitos se denominan artifacts o algunas líneas.
Por ejemplo si estuviese dibujado esto aparece una línea que arriba pero el programa sigue funcionando.
Bueno eso es gracias a la instrucción un error NEX.
Como dije si hay algún error tú sigue para adelante y eso hace que se pueda explotar de formas gigantes.
Una aplicación es hacer un ataque.
Otra de las cosas a las que se que se tiende es que en la parte de pruebas acá abajo se hace unos test
de aceptación.
En realidad lo que se hace es que si estoy programado una calculadora y tengo un lugar para ponerle
lo que quiero hacer escribir y verificar que pongan todos los números y los signos matemáticos y funcione.
Anda listo la sacamos al mercado pero no le hacen pruebas de decir nada a ver y si en lugar de poner
un número le pongo una letra o le pongo dos comillas o le pongo numeral y algún código en hexadecimal
algún código único que pueda significar algún salto de línea en una instrucción qué pasa.
Eso generalmente no lo hacen.
Y otra de las cosas que pasa también con esto vamos a ser así vamos a bajar la presentación es que la
parte de planificación se tienen muy en cuenta lo que es los límites de tiempo la velocidad de proyecto.
Otra de las cosas que les juega en contra es la programación en pareja en pareja o de a dos o tres o
diez personas y como dice el refrán Cuanto más manos hay en un plato es terrible garabato lo que significa
que muchas personas están utilizando lo mismo haciendo lo mismo cuando tienen que ver con piezas de
software.
Generalmente hay muchos errores.
Hay una excepción a la regla en esto que es la Comunidad de Software Libre en donde hay software como
Newco Linux que son realmente maravillas y las hacen muchas personas.
Pero eso es software Bolivia ha tenido un historial de errores y correcciones gigantes.
Por último antes de pasar a la próxima clase
si usted es una persona que está queriendo hacer un sobre un programa por qué va a reinventar la rueda.
Si usted puede ir por internet y en lugares como micro Walkers o o en otro lugar de internet usted puede
comprarle a los programadores ciertas piezas de software que ya están hechas y que tengan la estructura
de lo que usted quiere hacer y usted simplemente se dedica a cambiar el color o ponerle su marca como
una marca blanca del software.
El problema con esto es que los sistemas operativos incorporan siempre están incorporando partes programas
u otras personas.
Generalmente cuando una empresa hace algo muy útil para un sistema operativo la empresa que sistema
operativo termina comprando esa aplicación y la pone como si fuese de ellas.
Sí y esto obviamente sería un problema porque claro no todos hacen los mismos controles de calidad y
además podemos considerar que si le ponen un huevo de pascua a lo que vimos en la clase anterior con
el jueguito que no tienen que estar pero está por ahí no lo hacen con malicia pero ponen una pieza de
código que puede tener ese eslabón débil en la cadena de la seguridad y romperse un sistema operativo
vienen llenos de aplicaciones de terceros llamadas equip App aplicaciones que por ahí como vamos a ver
en las clases posteriores no tienen por qué estar y si no se utilizan y esto da lugar a una cosa muy
grave que se llama ataque por reducción de código o reutilización de código.
Es decir yo tenía un programa que tenía una vulnerabilidad en un sistema me lo cambiaron omision un
fork porque hay un fork es una bifurcación en donde le corrigieron un par de cosas pero el código original
sigue siendo el mismo el ADN sigue siendo el mismo y si fue concebido de forma defectuosa seguramente
se puede llevar o propender al error haciendo alguna técnica de fusión como vimos de lógica difusa muy
fácil así que esos son todos los problemas bien vamos a la próxima clase donde vamos a ver los ataques
justamente por reducción de código para que vean de qué se trata.