OASAM-DV-002: Buffer Overflow

Descripción
Las vulnerabilidades "buffer overflow", son el resultado de no haber adoptado la práctica de comprobar correctamente el tamaño de determinados datos antes de ser copiados a una determinada zona de memoria. En el caso de Android , si se utiliza código nativo, se es susceptible de cometer este tipo de errores si no se valida el tamaño de los datos en los buffers. Aunque el sistema Android inorpora protecciones como ASLR y DEP que reducen la explotabilidad, no solucionan el problema de fondo.


Riesgos
Los riesgos de este tipo de fallos son considerados muy graves, ya que se está copiando información sobre un área de memoria que estaba reservada para otras tareas y el almacenamiento de otros datos del programa. Cuando se produce un desbordamiento, los resultados son impredecibles y por normal general provocan el fin de la ejecución del programa, pudiendo llegar a causar una denegación de servicio. Estos fallos hábilmente explotados, pueden ser utilizados por un atacante para tomar el control de la ejecución del programa, pudiendo llegar a ser utilizados para ganar acceso remoto al sistema por parte de un atacante experimentado.


Recomendaciones
Por norma general, cualquier operación que conlleve copia de datos sobre un área de memoria, debe de ser realizada con especial cuidado a fin de garantizar que el área de memoria destino reservada será suficiente para albergar los datos que se quieren copiar. Existen una serie funciones que son más propensas a la hora de provocar estos fallos, y su uso está completamente desaconsejado. 


Referencias
1. http://developer.android.com/guide/practices/security.html#DynamicCode
2. https://www.owasp.org/index.php/Buffer_overflow_attack
3. http://developer.android.com/tools/sdk/ndk/index.html
4. OWASP Top Ten Mobile Risk número 4: Client Side Injection