Protégez vos applications PowerBuilder des attaques par injection de code

Qu'est-ce que l'injection de code ?

L'injection de code est une attaque consistant à injecter un code malveillant qui sera interprété/exécuté par l'application. Dans la plupart des cas, les pirates injectent du code SQL pour effectuer des opérations illégales dans votre base de données.

Pourquoi les injections SQL cibleraient-elles les applications PowerBuilder ?

Par nature, les applications PowerBuilder sont des systèmes critiques qui reposent sur des bases de données.
Elles traitent de grands volumes de données, ce qui en fait des cibles de choix pour les pirates informatiques.

Les attaques par injection SQL peuvent :

  • Accéder/détruire des données sensibles (informations sur l'entreprise, données personnelles ou financières des clients...).
  • Obtenir une description de la structure de la BD, des noms de tables...
  • Aboutir à une prise de controle hostile, entraîner un déni de service, une prise de contrôle de votre serveur de base de données...

Comment prévenir les attaques par injection de code SQL ?

Une stratégie typique d'injection SQL (SQLI) consiste à saisir une instruction SQL malveillante dans un champ de formulaire, au lieu de l'information que vous attendiez.

Dans les applications PowerBuilder, les SQL dynamiques (c'est-à-dire les instructions SQL intégrées aux événements et fonctions PowerScript) sont particulièrement vulnérables et doivent être soigneuseument vérifiées.

Le code non conforme doit être remplacé par un ensemble d'instructions équivalent - et conforme.

Exemple de code non-conforme :

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

Exemple de code conforme :

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

Visual Expert effectue automatiquement cette vérification pour identifier ces failles de sécurité.

Comment protéger les applications PowerBuilder contre les attaques par injection de code ?

La première option est de lister toutes les vulnérabilités aux injections de code trouvées. (Voir ci-dessous)

Plus loin dans cet article, nous verrons comment inspecter un objet, une bibliothèque ou un package particulier.

Lister toutes les vulnérabilités d'injection de code trouvées dans votre code :

  1. Dans la vue principale, cliquez sur "Inspection du code pour PowerBuilder".

    Select Code Inspection for PowerBuilder

  2. Dans la barre de navigation, cliquez sur "Failles de Sécurité".

    Select Security Vulnerabilities

  3. Sélectionnez la règle "Database queries should not be vulnerable to injection attacks".

  4. Sélectionnez "Problèmes détectés" dans la barre de Navigation.
    Visual Expert liste tous les évenement et fonctionnalités comportant une requête SQL vulnerable à l'injection de code.

    Select Issues Found in Navigation Bar

  5. Sélectionnez une méthode dans cette liste.
    Les instructions consituant cette faille de sécurité sont surlignées dans le code.

    Vulnerabilities highlighted in code

  6. Pour corriger le problème, sélectionnez la fonction PowerBuilder dans le treeview.

  7. Dans la barre de navigation, cliquez sur "Ouvrir dans PB".

    Open in PB IDE

Visual Expert ouvrivra la target, l'objet et le Powerscript correspondant dans l'IDE de PowerBuilder, à condition que PB ait été préalablement ouvert avec le bon Workspace.

Vous pouvez maintenant corriger votre code et générer un build/sauvegarder votre projet PB.

Code Inspection Result by Visual Expert

Après la prochaine analyse de votre code, le résultat de l'inspection du code de Visual Expert tiendra compte de vos modifications.

Inspecter un objet, une bibliothèque, un package, ou une méthode donnés

Si vous souhaitez vous concentrer sur une partie du code, suivez ces étapes :

  1. Dans le Treeview, sélectionnez la partie du code que vous souhaitez inspecter.
    Par exemple une procédure :

    Select Code to Inspect in Visual Expert

  2. Dans la barre de navigation, cliquez sur "Code Inspection Issues".

  3. Suivez les étapes 4 à 7 comme indiqué précédement.
Visual Expert 2021, PowerBuilder, Code Inpsection, Code Injection