Détecter les failles de sécurité dans le code PowerBuilder

Le nombre croissant de cyberattaques a fait de la sécurité des applications un enjeu majeur. Pour assurer la sécurité des applications, il est essentiel d'analyser régulièrement le code afin de détecter les vulnérabilités qui pourraient être exploitées pour voler des données ou détourner les fonctionnalités de l'application.

Visual Expert est le premier outil permettant d'analyser et de détecter les failles de sécurité dans code PowerBuilder.

Quelles règles d'inspection de code VE suit-il pour l'analyse de sécurité ?

VE intègre plus de 300 règles prédéfinies d'inspection du code. En voici quelques une concernant la sécurité du code :

  • Utilisez toujours l'algorithme de chiffrement AES dans un mode sécurisé (Always use AES encryption algorithm in a secure mode)
    AES offre plusieurs modes (ECB, CBC, CFB...), certains d'entre eux étant plus rapides ou plus sûrs. Si vous utilisez AES dans votre code PowerBuilder, vos appels doivent utiliser les modes les plus sûrs. Visual Expert analysera votre application, trouvera les appels les moins sûrs, et les mettra en évidence dans votre code.
  • Ne jamais utiliser la journalisation en production (Never use Console logging in production)
    La journalisation en console est une méthode permettant de savoir ce que fait le code et d'avertir en cas de problème. Elle doit être désactivée en production car elle pourrait exposer des données sensibles en révélant des informations sur le fonctionnement interne de votre application. Visual Expert détecte ce problèmes dans votre code PowerBuilder pour vous permettre de le désactiver avant la mise en production.
  • N'utilisez jamais CoSetProxyBlanket ou CoInitializeSecurity (Never use CoSetProxyBlanket or CoInitializeSecurity)
    Les appels aux sous-routines CoSetProxyBlanket, CoInitializeSecurity et CoInitializeSecurityAlias peuvent générer des failles de sécurité. Visual Expert trouve ce type d'appels dans le code PowerBuilder pour vous permettre de les supprimer.
  • Les clés de chiffrement doivent être suffisamment longues (Encryption keys should be long enough)
    Pour que les clés cryptographiques résistent aux attaques par force brute, elles doivent avoir une taille suffisante. Visual Expert vous indiquera si des clés peu robustes sont utilisées dans votre code PowerBuilder.
  • Les requêtes de base de données ne doivent pas être vulnérables aux attaques par injection. (Database queries should not be vulnerable to injection attacks)
    L'injection de code est une attaque consistant à injecter un code malveillant qui sera interprété/exécuté par l'application. En particulier, l'injection de code SQL permet d'effectuer des opérations illégales dans votre base de données (accès à des données sensibles, prise de contrôle ou arrêt du serveur...). Par nature, les applications PowerBuilder manipulent en grand volumes d'informations sensibles stockées en base de données, ce qui en fait des cibles de choix pour les pirates.

    Pour prévenir ces attaques, Visual Expert recherche par exemple les concaténations de chaînes utilisées pour construire des SQL, et qui ne sont pas correctement validées ou échappées. Elles peuvent en effet créer des brèches majeures pour l'injection SQL. L'identification et le remaniement de ces requêtes renforceront la protection de votre base de données.

    En savoir plus sur Comment protéger les applications PowerBuilder contre les attaques par injection de code.
  • Les standards DES (Data Encryption Standard) ou 3DES ne doivent pas être utilisés. (DES or 3DES should not be used)
    Le Data Encryption Standard (DES) est un algorithme à clé symétrique pour le cryptage des données numériques.
    Sa longueur limitée à 56 bits le rend peu sûr. Il ne devrait donc plus être utilisé.
    Visual Expert trouvera tous les appels DES dans votre code PowerBuilder, pour vous permettre de les remplacer.
  • Les algorithmes de chiffrement doivent être utilisés avec le mode de sécurisation et le schéma de remplissage appropriés. (Encryption algorithms must be used with the appropriate secure mode and padding scheme).
    Lorsque vous sécurisez votre code avec des algorithmes de cryptage, les modes de fonctionnement et les schémas de remplissage doivent être utilisés correctement. En fonction de l'algorithme de cryptage utilisé, Visual Expert déterminera les valeurs appropriées et vérifiera qu'elles sont correctement utilisées dans votre code PowerBuilder.
  • Les exceptions génériques ne doivent pas être ignorées (Generic exceptions should not be ignored)
    En terme de gestion des exceptions, les blocs CATCH devraient toujours avoir un mécanisme de capture approprié. Visual Expert identifie les blocs catch vides pour sécuriser votre code avec une gestion pertinente des exceptions .
  • Les adresses IP ne doivent pas être codées en dur (IP addresses should not be Hardcoded)
    Coder en dur des informations sensibles telles que des adresses IP, des clés de cryptage, ou des codes d'accès, rend ces données potentiellement accessibles aux pirates informatiques. De plus, exposer des informations protégées par des réglementations officielles telles que GDPR, SOX, HIPPA peut entraîner des conséquences juridiques importantes. Visual Expert recherche pour vous toute adresse IP codée en dur afin de supprimer cette faille de sécurité.
  • Les identifiants et les mots de passe ne doivent pas être codés en dur (User IDs and Passwords should not be Hardcoded)
    Coder en dur des données sensibles, telles que les noms d'utilisateur ou leurs mots de passe, les adresses IP et les clés de chiffrement, entraine un risque de piratage. En effet, toute personne ayant accès aux fichiers exécutables pourrait les décompiler et accéder à ces informations sensibles. D'autres part, la fuite de données protégées par des réglementations officielles comme GDPR, SOX, HIPPA expose l'entreprise à de graves conséquences juridiques.

    Visual Expert cherche les identifiants et les mots de passe codés en dur pour vous permettre de supprimer cette faille de sécurité.
  • Les données saisies par l'utilisateur ne doivent pas permettre les attaques par traversée de répertoire (ou traversée de chemin) (User input should not allow path injection or path transversal attacks)
    Les données saisies par les utilisateurs, telles que les paramètres d'URL ou les cookies, doivent être considérées comme suspectes. Si votre code génère dynamiquement un chemin d'accès au système de fichiers à partir de ces données, un hacker pourrait injecter des valeurs spécifiques telles que '../' et modifier le chemin d'accès initialement prévu.

    Ces attaques sont souvent appelées "path traversal" ou "directory traversal". Elles permettent au pirate d'accéder à des répertoires interdits pour lire, modifier ou supprimer des données sensibles ou encore exécuter des commandes du système d'exploitation.

    Visual Expert identifie le code présentant de telles vulnérabilités pour vous permettre de le nettoyer. Une stratégie de défense possible consiste à définir une liste blanche de chemins ou de caractères autorisés.
  • Les commandes du système d'exploitation ne doivent pas permettre les attaques par injection (OS commands should not allow injection attacks)
    Si votre code exécute des commandes du système d'exploitation à partir d'une saisie utilisateur, il doit vérifier le nom de chaque commande. Dans le cas contraire, un pirate pourrait injecter ses propres commandes pour effectuer des opérations illégales et compromettre votre système.

    Visual Expert détecte ces failles dans votre code PowerBuilder, afin de vous permettre de les corriger. Par exemple, vous pouvez définir une liste blanche de commandes sûres et nettoyer les métacaractères du shell.
  • Les expressions régulières ne doivent pas permettre les attaques par déni de service (Regular expressions should not allow Denial of Service attacks)
    Il est fortement déconseillé de générer des expressions régulières à partir de données utilisateur, car cela peut conduire à un déni de service par expression régulière (ReDoS). Ce type d'attaque exploite la possibilité de ralentir drastiquement l'évaluation d'expression régulières en utilisant de façon malicieuse des caractères spécifiques. Un hacker peut par exemple bloquer votre application pendant un temps très long (déni de service) en détournant une expression régulière.

    Visual Expert identifie ce type d'appels dans votre code PowerBuilder, vous permettant de les supprimer ou d'assainir l'entrée en supprimant/annihilant les méta-caractères regex.
  • Les fonctions de hachage cryptographiques ne doivent pas utiliser les algorithmes SHA-1 ou Message-Digest. (Cryptographic Hash Functions should not use SHA-1 or Message-Digest Algorithms)
    Les algorithmes SHA-1 et Message-Digest MD2, MD4, MD5 et MD6 ne sont plus considérés comme sûrs. Visual Expert vérifiera si de tels algorithmes sont utilisés dans votre code PowerBuilder et localise les appels correspondants pour vous aider à les mettre à jour avec des algorithmes plus sûrs.
  • Les objets SOAP et INET ne doivent pas être utilisés (SOAP and INET objects should not be used)
    Les objets PowerBuilder SOAP et INET ne supportent pas l'utilisation de TLS 1.2 ce qui les rendent vulnérables aux attaques.

 

Visual Expert 2021, PowerBuilder, Code Security Scanning, Code Security Rules, Vulnerability Assessment