Académique Documents
Professionnel Documents
Culture Documents
espacio
asignado
se
en
un
guarda
espacio de memoria
no asignado. Ac la
palabra clave para
ir entendiendo por
qu
esto
puede
resultar negativo es
sobrescribir, ya que
al
sobrescribir
estaramos
escribiendo
que
escrito
ya
y
algo
estaba
por
lo
Simple, al ya no
Language/Environment
Java, Java Virtual Machine
Compiled or
Strongly
Direct Memory
Safe or
Interpreted
Typed
Access
Unsafe
Both
Yes
No
Safe
.NET
Both
Yes
No
Safe
Perl
Both
Yes
No
Safe
Python - interpreted
Intepreted
Yes
No
Safe
Ruby
Interpreted
Yes
No
Safe
C/C++
Compiled
No
Yes
Unsafe
Assembly
Compiled
No
Yes
Unsafe
COBOL
Compiled
Yes
No
Safe
(JVM)
https://www.owasp.org/index.php/Buffer_Overflows#General_Preventi
on_Techniques
http://owasp.org,
http://www.eecis.udel.edu,
ensayos
b. Parches
2. Elegir un programa seguro
a. Usar funciones seguras
b. Herramientas de compilacin
3. Ser un programador seguro
a. Hacer auditoras al cdigo
b. Entrenamiento a los desarrolladores
c. Peridicamente escanear el software
Ahora ya hablando especificamente y particularmente de los buffer
overflow, tendramos que hablar sobre los diferentes tipos de overflow
conocidos
Stack Overflow
Estos son los ms conocidos y ms comunes tipos de desbordamiento
que se presentan en las aplicaciones y su forma de ejecucin o
trabajo realmente es muy simple, se da por dos escenarios, primero
en la parte de la aplicacin el buffer de entrada de la informacin es
demasiado pequeo para los datos que realmente van a ingresar a
travs de la aplicacin y segundo en el stack de la memoria, como en
esta parte de la memoria se asigna de manera contigua el espacio de
memoria para los datos que se van a leer y la direccin de registro a
donde se debe guardar, entonces al regresar la informacin supuesta
de la stack esta no devuelve el control a la parte del programa que se
esperaba sino a un cdigo arbitrario elegido por el atacante, hacker,
para que d inicio al ataque en s.
Pero como podemos saber si nuestro programa puede estar expuesto
a esto, si nuestro programa ha sido escrito en un lenguaje que
permite buffer overflow, adems deberamos conocer si nuestro
programa revisa y controla el que al enviar informacin o datos al
stack no sobrepase los tamaos por nosotros especificados.
Estos mismos conceptos son los que permitirn que podamos
protegernos, es decir cuando programamos debemos elegir un
lenguaje de programacin lo menos vulnerable posible y adems
podemos usar herramientas compilacin para evitar eso, as como
Conclusiones
Si bien es cierto que se ha hecho mucho para evitar los buffer
overflow attack desde su aparicin hasta hoy, tambin es cierto que
se siguen dando rplicas de ese primer ataque y esto no es lo
preocupante, lo preocupante es que se sigan dando a pesar de todo lo
que se ha hecho, por esto implica que definitivamente no es
suficiente.
Pero, por qu no es suficiente?, porque la mayor puerta abierta a los
ataques de esta ndole se dan debido a las ineficiencias de los
cdigos, y esto depende de los programadores, mientras hayan
programadores que sigan haciendo software y no validemos todo
seguramente habr alguien que encuentre una variable o dato que no
sea validado y explote nuestra vulnerabilidad, en esta misma escala
de seguridad pero en la otra parte, mientras existan programadores
que sigan usando lenguajes y/o versiones de lenguajes vulnerables
principalmente en C, se seguirn dando este tipo de cosas, ya que si
el programador no valida debera ser el lenguaje el que nos brinde el
soporte para este tipo de error, por lo menos previniendo como el
caso del canary value.
Subiendo de nivel de seguridades, si todos los programadores
hiciramos
programas
en
lenguajes
no
vulnerables
todos
Bibliografa
http://www.sans.org/readingroom/whitepapers/securecode/buffer-overflow-attackmechanism-method-prevention-386
http://www.eecis.udel.edu/~bmiller/cis459/2007s/readings/buffoverflow.html
https://www.owasp.org/index.php/Buffer_Overflows#General_Pr
evention_Techniques
http://www.tutorialspoint.com/compile_c_online.php
https://es.wikipedia.org/wiki/Robert_Tappan_Morris
http://en.citizendium.org/wiki/Canary_value