Generation of multiple code variants through automatic buffer size extension

García Grabwosky, Ernesto (2016). Generation of multiple code variants through automatic buffer size extension. Thesis (Master thesis), E.T.S. de Ingenieros Informáticos (UPM).

Description

Title: Generation of multiple code variants through automatic buffer size extension
Author/s:
  • García Grabwosky, Ernesto
Contributor/s:
  • Korel, Bogdan
Item Type: Thesis (Master thesis)
Masters title: Ingeniería Informática
Date: July 2016
Subjects:
Faculty: E.T.S. de Ingenieros Informáticos (UPM)
Department: Lenguajes y Sistemas Informáticos e Ingeniería del Software
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (235kB) | Preview

Abstract

El presente documento es la culminación de un proyecto de desarrollo de un software cuyo propósito es generar múltiples versiones de un código fuente recibido como entrada. Las nuevas versiones generadas se diferenciarán de la original en el tamaño de los diferentes buffers definidos en el código fuente original. Al ser ejecutada, la herramienta permitirá seleccionar entre diferentes opciones que definen el modo en que las diferentes fases del proceso serán realizadas. El núcleo de la herramienta está compuesto por un parser que fue desarrollado específicamente para detectar declaraciones de buffers y accesos a éstos a lo largo de un código fuente. Este parser ha sido generado utilizando la herramienta JavaCC, la cual es capaz de generar automáticamente un parser en lenguaje Java, recibiendo como entrada una gramática LL(k) definida por el desarrollador. Puesto que la funcionalidad básica del parser no es suficiente para completar el fin del proyecto, la salida de JavaCC ha sido personalizada y extendida para tal propósito. Es importante mencionar que la complejidad de este proyecto no resude en la cantidad de piezas que conforman el sistema sino en la extensión del lenguaje de programación que se va a procesar. Por tanto, las limitaciones del prototipo vienen directamente de la gramática utilizada. Esta gramática ha sido diseñada de forma específica para este proyecto con el fin de procesar un subconjunto del lenguaje C, lo que quiere decir que algunos programas que podrían ser procesados por un compilador de C estándar podrían causar errores al ser procesados por el programa generado en este proyecto. La motivación de crear esta herramienta viene de la necesidad generada por la investigación de Berk Bekiroglou, un estudiante de doctorado del Illinois Institute of Technology que busca mejorar la supervivencia de cualquier software, ante diferentes técnicas maliciosas mediante la generación de diferentes versiones del mismo tal que la vulnerabilidad en el mapa de memoria de una versión no esté presente en sus versiones hermanas.--ABSTRACT--The present document is the culmination of a software development project whose main goal is to generate new versions of a given source code. These new versions will differ from the original versions in the size of the different buffers that might have been defined in the original code. When the tool is executed, it will allow the user to choose among different options that define how the different phases of the new code generation process will be performed. The core of the tool is composed by a parser that was developed specifically to detect buffer declarations and accesses among the source code. This parser has been generated using the tool JavaCC which is able to automatically generate the parser code given a LL(k) grammar defined by the developer. Since the functionality of a basic parser is not enough to perform the work required to complete the goal of the project, it has been customized and extended for that purpose. It is important to mention that the complexity of this project does not reside in the amount of different pieces that conform the system, but in the extension of the target programming language. The resulting software is a prototype with limitations that come from the grammar defined to generate the parser. This grammar was designed to handle a subset of the programming language C, a source code file that may contain aspects of the language that are supported by any compiler but not by the tool, will produce different errors when the program is executed using this file. The motivation to create this tool comes from a neccesity generated by Berk Bekiroglou’s research. Berk is a PhD candidate in the Illinois Institute of Technology who is trying to improve the survaivability of software programs by generating different versions of it. These different versions would have different memory maps that would avoid sharing the same vulnerabilities when facing certain tyoes of memory attacks.

More information

Item ID: 54425
DC Identifier: http://oa.upm.es/54425/
OAI Identifier: oai:oa.upm.es:54425
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 22 Mar 2019 10:08
Last Modified: 22 Mar 2019 10:08
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM