Joven hacker sonriendo

Compilar Programa de Forma Estricta

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en COBOL al compilar de forma estricta el programa. Los mensajes de compilación dejan entrever rutas e información que puede ser utilizada para vulnerar una aplicación web.

Necesidad

Compilar programa en COBOL de forma estricta.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en COBOL.

  2. El código debe compilarse o interpretarse de forma estricta[1].

Solución

  1. A través del parámetro GENLVL del comando CRTBNDCBL, se especifica el nivel de severidad que determina si un objeto es creado. La severidad corresponde al nivel de rigurosidad de los mensajes producidos durante la compilación. Este parámetro aplica de manera individual a cada unidad dentro del miembro del archivo fuente.

  2. Se debe especificar un número de uno o dos dígitos, desde 0 hasta 29[2], el cual es el nivel de severidad que usted desea para determinar si el objeto es creado o no. Ningún programa es creado si algún error ocurre con una severidad igual o mayor a la especificada.

  3. La siguiente tabla muestra los niveles de severidad para diferentes tipos de mensajes:

    Tabla 1. Niveles de severidad para diferentes tipos de mensajes.
    Severidad Tipo de mensaje

    00 - 04

    Información

    05 - 19

    Advertencia

    20 - 29

    Error

    30 - 39

    Severo

    40 - 99

    Terminal

  4. Para compilar un programa en COBOL de forma estricta, se debe usar "0" como argumento en el parámetro GENLVL. Para crear el programa COBOLSTR de la biblioteca FLUID con un nivel de severidad 0 (Compilación estricta), se usa el siguiente comando:

    1
    2
    3
    4
    5
    6
          CRTBNDCBL
          PGM(FLUID/COBOLSTR)
          SRCFILE(FLUID/SOURCE)
          SRCMBR(COBOLSTR)
          GENLVL(0)
          REPLACE(*YES)
    
  5. El anterior programa es creado exitosamente, el código fuente utilizado para esta solución y que contiene la estructura básica de un programa en COBOL, es el que puede observar a continuación:

    cobolstr.cbl
    1
    2
    3
    4
    5
    6
    7
    8
           IDENTIFICATION DIVISION.
           PROGRAM-ID. COBOLSTR.
           ENVIRONMENT DIVISION.
           DATA DIVISION.
           PROCEDURE DIVISION.
           MAIN.
               DISPLAY "Programa estricto".
               STOP RUN.
    

    En el anterior bloque de código se puede observar las cuatro divisiones de las que se compone un programa en COBOL:

    • IDENTIFICATION DIVISION: mediante la sentencia PROGRAM-ID se especifica el nombre del programa. En este caso es COBOLSTR.

    • ENVIRONMENT DIVISION: el objetivo de esta división es describir el ambiente sobre el cual se desarrolló y va a ser ejecutado el programa[3]. En este caso dicha división no es implementada.

    • DATA DIVISION: en esta división se declaran nombres de campos, registros, variables, etc. Es decir, se especifica cada dato utilizado por el programa[4]. En este caso dicha división no es implementada.

    • PROCEDURE DIVISION: en esta división se definen todos los procesos necesarios para que el programa funcione. Dicho de otra manera, consta de todo el algoritmo del programa[5]. Para este caso, el programa además de ser compilado de forma estricta, imprime un texto en pantalla mediante la instrucción DISPLAY.

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. cobolstr.cbl contiene todas las instrucciones COBOL del programa.




Haz un comentario

Estado de los servicios - Términos de Uso