Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Usar Adecuadamente Opciones de Depuración

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en COBOL al explicar en detalle como deben realizarse adecuadamente operaciones de depuración en etapa de desarrollo permitiendo un despliegue transparente de la misma en producción.

Necesidad

Usar adecuadamente las opciones de depuración que provee COBOL.

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 desarrollador desea depurar el flujo de la aplicación sin afectar el programa final.

  3. Los eventos con severidad de depuración no deben estar habilitados en producción[1].

Solución

  1. La cláusula WITH DEBUGGING MODE[2] ayuda a los programadores a depurar código mientras la aplicación se encuentra en desarrollo y permite un despliegue transparente de la misma a un entorno de producción.

  2. Esta cláusula causa que cualquier procedimiento usado para depuración (Letra D en la columna 7) sea compilado. Sin esta cláusula, estos procedimientos son tratados como comentarios.

  3. El siguiente código muestra un ejemplo sencillo donde el programador requiere depurar el programa. Es importante que en entornos de producción no se generen eventos de depuración, ya que podría afectar la disponibilidad de la aplicación.

  4. Se da inicio a la aplicación definiendo la división IDENTIFICATION DIVISION[3]:

    coboldbg.cbl
    1
    2
    3
    4
    5
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLDBG.
    
  5. En la división ENVIRONMENT DIVISION[4] especificamos el modo WITH DEBUGGING dentro de la sección CONFIGURATION SECTION. Dicho modo debe ser desactivado en entornos de producción:

    1
    2
    3
    4
    5
    6
          ***************
          * Environment *
          ***************
           ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SOURCE-COMPUTER. IBM-ISERIES WITH DEBUGGING MODE.
    
  6. En la división DATA DIVISION[5] definimos dos variables, una llamada CONTADOR y otra denominada RESULTADO que llevará el resultado de una operación matemática:

    1
    2
    3
    4
    5
    6
    7
          ********
          * Data *
          ********
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 RESULTADO  PIC 9(04) VALUE 1.
           01 CONTADOR   PIC 9(02).
    
  7. Iteramos sobre la variable CONTADOR 9 veces, multiplicando la variable RESULTADO por 2. Note como la columna 7 de la sentencia DISPLAY tiene la letra D. Si el modo WITH DEBUGGING está activado, esta línea es compilada, en caso contrario, la línea es tratada como un comentario:

    1
    2
    3
    4
    5
    6
    7
    8
    9
          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
               PERFORM VARYING CONTADOR FROM 1 BY 1 UNTIL CONTADOR > 10
          D        DISPLAY "Actual: " RESULTADO
                   COMPUTE RESULTADO = RESULTADO * 2
               END-PERFORM.
    
  8. Mostramos el resultado final:

    1
    2
    3
           DISPLAY "Resultado: " RESULTADO.
    
           STOP RUN.
    
  9. El resultado usando el modo WITH DEBUGGING es el siguiente:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    Actual: 0001
    Actual: 0002
    Actual: 0004
    Actual: 0008
    Actual: 0016
    Actual: 0032
    Actual: 0064
    Actual: 0128
    Actual: 0256
    Actual: 0512
    Resultado: 1024
    
  10. El resultado sin usar el modo WITH DEBUGGING es el siguiente:

    1
    Resultado: 1024
    

Descargas

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

  1. coboldbg.cbl contiene la implementación del código depurado anteriormente.




Haz un comentario

Estado de los servicios - Términos de Uso