Proteger las aplicaciones PowerBuilder de los ataques de inyección de código

¿Qué es la inyección de código?

La inyección de código es un ataque que inyecta código malicioso que será interpretado/ejecutado por la aplicación. En la mayoría de los casos, los hackers inyectan código SQL para realizar operaciones ilegales en su base de datos.

¿Por qué las inyecciones SQL se dirigen a las aplicaciones PowerBuilder?

Por defecto, las aplicaciones PowerBuilder hacen un uso intensivo de las bases de datos y son de misión crítica
Manejan grandes volúmenes de datos importantes, lo que las convierte en objetivos prioritarios de los hackers.

Los ataques de inyecciones SQL pueden :

  • Acceder/destruir datos sensibles (información de la empresa, datos personales o financieros del cliente...).
  • Obtener una descripción de la estructura de la BD, nombres de tablas...
  • Tomar el control de su servidor de base de datos, lo que resulta en la denegación de acceso, toma de posesión hostil...

¿Cómo prevenir los ataques de inyección de código SQL?

Una estrategia típica de inyección SQL (SQLI) consiste en introducir una sentencia SQL maliciosa en un campo del formulario, en lugar de la información que se esperaba.

En las aplicaciones de PowerBuilder, las SQL dinámicas (es decir, las sentencias SQL incrustadas en eventos y funciones de PowerScript) son particularmente vulnerables y deben ser revisadas cuidadosamente.

El código no conforme debe ser sustituido por un conjunto de instrucciones equivalentes -y conformes-.

Ejemplo de código no conforme:

string query = "DELETE FROM employee WHERE emp_id = '" + Emp_id_var + "'" ; 
EXECUTE IMMEDIATE: query;

Ejemplo de código conforme:

INT Emp_id_var = 56 
PREPARE SQLSA FROM "DELETE FROM employee WHERE emp_id =? " ;
EXECUTE SQLSA USING :Emp_id_var;

Visual Expert puede realizar automáticamente esta verificación para identificar dichas vulnerabilidades de seguridad.

¿Cómo proteger las aplicaciones PowerBuilder contra los ataques de inyección de código?

Su primera opción es listar todas las vulnerabilidades de inyección de código encontradas. (Ver abajo)

Más adelante en este artículo, veremos cómo inspeccionar un objeto, biblioteca o paquete en particular.

Lista de todas las vulnerabilidades de inyección de código encontradas en su código :

  1. En la vista principal, haga clic en "Inspección de código para PowerBuilder".

    Seleccione la inspección de código para PowerBuilder

  2. En la barra de navegación, haga clic en "Vulnerabilidades de seguridad".

    Seleccione las vulnerabilidades de seguridad

  3. Seleccione la regla "Las consultas de la base de datos no deben ser vulnerables a los ataques de inyección de código" (Database queries should not be vulnerable to..).

  4. Seleccione "Problemas encontrados" en la barra de navegación.
    Visual Expert enumera todos los eventos y funciones con consultas SQL vulnerables a la inyección de código.

    Seleccione los temas encontrados en la barra de navegación

  5. Seleccione un método de la lista.
    Las instrucciones que generan esta vulnerabilidad están resaltadas en el código.

    Vulnerabilidades destacadas en el código

  6. Para solucionar un problema de "Inyección de código", seleccione la función de PowerBuilder en el treeview.

  7. En la barra de navegación, haga clic en "Abrir en PB IDE".

    Abrir en PB IDE

Visual Expert abrirá el target correspondiente, el objeto y el Powerscript correspondientes en el IDE de PowerBuilder, a condición de que PB se haya abierto previamente en el workspace adecuado.

A continuación, podrá realizar modificaciones y hacer un build/guardar su proyecto PB.

Resultado de la inspección del código por parte de Visual Expert

Después del siguiente análisis de código, Visual Expert actualizará los resultados de la 'Inspección de Código' de acuerdo con sus modificaciones.

Inspeccionar un objeto, una biblioteca, un paquete o un método en particular

Si desea centrarse en un fragmento de código concreto, puede seguir estos pasos:

  1. En el treeview de Visual Expert, seleccione el fragmento de código que desea inspeccionar.
    Por ejemplo, un procedimiento.

    Seleccione el código a inspeccionar en Visual Expert

  2. En la barra de navegación, haga clic en "Problemas de inspección de código".

  3. Siga los pasos 4 a 7 explicados anteriormente.
Visual Expert 2021, PowerBuilder, Code Inpsection, Code Injection