Developpez.com - WinDev
X

Choisissez d'abord la catégorieensuite la rubrique :


La gestion de la protection dans des applications WinDev

Date de publication : 09 Septembre 2009 , Date de mise à jour : 09 Mai 2009

Par Emmanuel Lecoester
 Francis Morel
 


               Version PDF (Miroir)   Version hors-ligne (Miroir)

I. Les différents niveaux de protection
I-A. Confidentialité des applications et des données
I-B. Protection contre les utilisations illicites
I-C. Intégrité des données
II. Confidentialité des applications et des données
II-A. Historique - Protection des fichiers HF sous Windev 5.5
II-B. Historique - Protection des Exécutables
II-B-1. Windev 7 et suivantes
II-B-2. Depuis WinDev 11
II-C. Protection des fichiers HF avec WinDev
II-C-1. Mot de passe sur l'analyse
II-C-1-a. Synthèse : Mettre un mot de passe sur l'analyse
II-C-2. Mot de passe sur les fichiers HyperFileSQL
II-C-3. Cryptage des fichiers HF
II-C-3-a. Synthèse : Protéger un fichier HyperFileSQL
II-C-3-b. Conseil : Choix des mots de passe
II-C-4. Modification des mots de passe HyperFileSQL
II-C-4-a. Synthèse : Modification du mot de passe par WDOUTILS
III. Vulnérabilité des données et applications
III-A. Les DLL de Windev
III-B. Le point faible : les DLL de Windev
III-C. La suppression des points faibles
III-D. Composant DataProtect
III-D-1. II-D-1. Synthèse : Mise en oeuvre de DataProtect 1.14


I. Les différents niveaux de protection


I-A. Confidentialité des applications et des données

Pour s'assurer de la confidentialité des données, il faut :


I-B. Protection contre les utilisations illicites

Une application protégée contre des utilisations illicites est caractérisée par une utilisation limitée:


I-C. Intégrité des données

L'intégrité de la base de données, des liaisons... et le respect de ces règles par le développeur, l'utilisateur et l'application elle-même, bien que liée à la sécurité des données, ne fait pas partie de ce document.


II. Confidentialité des applications et des données

Pour constater les évolutions de Windev 7 et suivant un petit retour en arrière sur Windev 5.5 s'impose.


II-A. Historique - Protection des fichiers HF sous Windev 5.5

Bien que l'aide recommande d'utiliser 4 caractères minimum pour les mots de passes, le stockage dans le fichier HF est fait sur 2 octets, et encore sur chacun des ces octets seuls les codes 0x00 à 0x7f (127) sont utilisés. Soit au mieux 16129 possibilités.

Dans ces conditions un algorithme simple en recherche par force brute est quasi-instantané.

La protection des fichiers HyperFileSQL sous Windev 5.5 est donc totalement inopérante. L'utilisation de ces fichiers au format HF5.5 est donc à proscrire pour les données sensibles.


II-B. Historique - Protection des Exécutables

Toujours dans Windev 5.5, un simple éditeur hexadécimal permet de visualiser quantité d'informations textuelles de la bibliothèque. Tous les objets contenus dans la WDL sont clairement identifiables et pour chacun, tous les constituants sont aussi visibles.

C'est d'ailleurs ce qui a permis la création d'outils comme WDL.EXE, qui à partir d'une bibliothèque WDL, reconstituait toutes les fenêtres, images, classes, procédures....

Pour peu que "Supprimer le code source à la compilation" n'ai pas été coché lors de la création, les objets reconstitués contenaient aussi le code source de l'application, sinon seul le Pcode créé était présent.


II-B-1. Windev 7 et suivantes

Heureusement depuis Windev 7 les choses ont bien changés.


II-B-2. Depuis WinDev 11

On peut ainsi, en première approche, raisonnablement penser que les applications Windev et les fichiers HyperFileSQL 11, 12 14 sont protégés efficacement, à condition de respecter certaines règles, objet de ce document.


II-C. Protection des fichiers HF avec WinDev

Actuellement il est possible de définir 3 types de protection dans HyperFileSQL


II-C-1. Mot de passe sur l'analyse

Cette protection à un double intérêt :

Par contre du fait de l'ouverture automatique de l'analyse associée à une application, elle n'a aucun intérêt pour assurer la confidentialité des données sans précaution supplémentaire.

Il faudrait ainsi utiliser HfermeAnalyse() ou équivalent puis HouvreAnalyse() dans le projet.

La protection de l'analyse par un mot de passe en exécution peut être fait directement lors de la création (étape 2) ou après création dans l'onglet "Détail" de sa description.

image
Pour éviter les demandes systématiques à chaque lancement du mode test ou lors de la génération de l'exécutable, le mot de passe en exécution peut être renseigné dans l'onglet "Analyse" de la description du projet.

image
warning En remplissant ce champ le mot de passe de l'analyse ne sera plus demandé ni en mode test, ni EN MODE EXECUTION. Il est écrit crypté dans l'exécutable.

II-C-1-a. Synthèse : Mettre un mot de passe sur l'analyse


II-C-2. Mot de passe sur les fichiers HyperFileSQL

Le mot de passe d'un fichier HyperFileSQL est défini dans le code par programmation avec les fonctions HPasse(), HCréation() et HcréationSiInexistant().Il n'est pas possible de définir directement un mot de passe dans l'éditeur pour un nouveau fichier.

Il n'est pas modifiable par programmation, pour un fichier existant

Le mot de passe est demandé lors de la modification automatique (par WdModfic) ou lors de l'ouverture par WDMAP.

Utilisé seul (sans cryptage) le mot de passe d'un fichier n'est d'aucun intérêt vis-à-vis d'une protection des données. En effet le contenu en clair est visualisable avec un simple éditeur hexadécimal.


II-C-3. Cryptage des fichiers HF

image
Ce cryptage peut être spécifié sur les données elles-mêmes, sur les index et sur les fichiers de mémo.

Trois algorithmes en 128 bits sont proposés :

Le cryptage obtenu est natif, indépendant du mot de passe (voir aide HPasse).

Aucune clé n'est demandée pour effectuée ce cryptage (probablement inscrite dans l'entête).

Comme pour le mot de passe, utilisé seul ce cryptage n'est que d'un intérêt limité, le fichier est effectivement crypté mais visible dans WDMAP (ou tout appli WD pouvant ouvrir le fichier).

Il est donc indispensable pour assurer la confidentialité des données d'activer le cryptage des données, des index et mémo ET d'ouvrir le fichier à l'aide d'un mot de passe.

Pour permettre la modification automatique des fichiers ainsi protégés, il faut aussi cocher "Activer la sécurité renforcée".


II-C-3-a. Synthèse : Protéger un fichier HyperFileSQL

  1. Projet > Charger l'analyse
  2. Structure de fichiers > Description > Onglet Détail
  3. Sélectionner le fichier à protéger
  4. Protection des données, activer le Cryptage (128 bits, RC5 12 boucles ou RC5 16 boucles)
  5. Cocher activer la sécurité renforcée
  6. Dans le code (de préférence pas le code du projet) ouvrir les fichiers HyperFileSQL par
  7. HcréationSiInexistant("*","motdepasse") ou Hcréation("*","motdepasse") ouutiliser Hpasse("*","motdepasse")
  8. Analyse > Génération pour régénérer l'analyse si nécessaire

II-C-3-b. Conseil : Choix des mots de passe


II-C-4. Modification des mots de passe HyperFileSQL

Il n'existe pas de possibilité directe de modification du mot de passe d'un fichier HF que celui-ci ait été mis dans le code ou modifié préalablement lors de la modification automatique du fichier.

Dès que le fichier est crée, pour modifier ou supprimer le mot de passe il faut :


II-C-4-a. Synthèse : Modification du mot de passe par WDOUTILS

  1. Projet > Charger l'analyse
  2. Structure de fichiers > Rubriques
  3. Modifier la taille d'une rubrique existante ou ajouter une rubrique bidon
  4. Analyse > Génération pour régénérer l'analyse
  5. Lors de la modification Automatique HyperFileSQL (par WDOUTILS)
    - Cocher (ou ajouter si besoin) l'emplacement de recherche des fichiers à modifier
    - Cocher les fichiers à modifier dans la liste proposée
    - Valider éventuellement la sauvegarde proposée
    - Indiquer pour chaque fichier l'ancien mot de passe
    - Cocher "Je veux saisir ou changer les mots de passe"
    - Cocher chaque fichier et indiquer le nouveau mot de passe à utiliser
  6. ValiderPenser à changer le mot de passe dans votre code 

III. Vulnérabilité des données et applications

Intrinsèquement les fichiers HyperFileSQL peuvent résister correctement à une attaque par force brute, et disposent ainsi à première vue, d'une sécurité satisfaisante.

Le code généré constitué par la bibliothèque WDL compressé et crypté est difficilement interprétable, même avec un désassembleur-débogueur.

Le point faible reste cependant les DLL associées indispensables au bon fonctionnement de l'application.


III-A. Les DLL de Windev

L'examen de ces dll, avec un simple éditeur hexadécimal révèle quantités d'informations textuelles interprétables susceptibles d'être utilisées pour attaquer l'application.

image
En particulier, comme l'illustre l'image précédente, l'identification des fonctions et des points d'entrée est rendue aisée par la proximité des noms des fonctions et des adresses mémoires correspondantes.

Muni de ces informations et d'un simple débogueur il est relativement aisé d'obtenir les paramètres des fonctions de composante (les fonctions du WLangage). En particulier, illustré ici sur la fonction HPasse() un point d'arrêt placé au bon endroit donne accès immédiatement au mot de passe du fichier (ici "FMLPASSWD" pour le fichier "FichPass3") quel qu'en soit la complexité.

image
Il existe même aujourd'hui, au moins une application "Hyper File Password Recovery Tool" (construite avec Windev) qui automatise tout ce processus et permet de retrouver les mots de passe perdus à condition de disposer de l'application.


III-B. Le point faible : les DLL de Windev

Comme constat de cette analyse, on s'aperçoit que quelle que soit la base de données utilisée, pour casser la protection (mot de passe, cryptage...) d'une application Windev et accéder ainsi aux données sensibles il suffit :

Les Dll de Windev 14 semblent déjà un peu mieux protégées et ne permettent pas, simplement, le fonctionnement en mode pas à pas des décompilateurs / débogueurs.


Toutes les solutions qui permettent de supprimer une ou plusieurs de ces conditions contribueront à la protection des données sensibles de l'application.


III-C. La suppression des points faibles

Ainsi parmi les solutions disponibles pour assurer la confidentialité des données on pourra donc :

Pour être efficaces ces solutions doivent faire l'objet d'une attention toute particulière et ne peuvent aisément être décrites ici.

Aussi le chapitre suivant présente la solution anti-débogage DataProtect.


III-D. Composant DataProtect

Ce composant, intégrable simplement dans les applications Windev 11, 12 ou 14 a pour principal but de restreindre (ou rendre plus difficile) les sessions de débogage, interdisant ainsi :

Il a été écrit pour ne consommer que des ressources CPU limitées

Il dispose aussi d'un générateur de mots de passe dynamiques pour construire une chaine à partir des caractéristiques du serveur, de l'utilisateur, des disques...

Il est disponible en téléchargement sur http://www.SoftProtect.fr


III-D-1. II-D-1. Synthèse : Mise en oeuvre de DataProtect 1.14

 

  1. Télécharger DataProtect (composant, documentation et exemple) et dezipper
  2. Dans le projet Windev à protéger : Atelier > Composant > Importer un composant dans le projet > A partir d'un fichier...Sélectionner DataProtect.wdi et valider
  3. Dans l'éditeur, Entourer chaque opération critique par le code suivant :
  4. Au besoin créer vos mots de passe dynamiques par le code suivant :
  5. Créer l'exécutable en intégrant le composant Déployer
  6. D'autres codes plus complets sont disponibles dans l'aide du composant


               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Emmanuel Lecoester. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique WinDev