Je suis le fondateur et PDG d’Apriorit, une société de développement de logiciels qui fournit des services d’ingénierie à l’échelle mondiale aux entreprises technologiques.

 Vue arrière d'une pirate informatique codant au bureau dans creative office

getty

De nos jours, les cyberattaques sont armées d’une gamme impressionnante d’armes, allant de simples logiciels malveillants à des outils de rétro-ingénierie sophistiqués. Les désassembleurs, décompilateurs et autres outils permettent aux pirates d’accéder et d’analyser le code source de l’application. Avec ces informations, les pirates peuvent abuser de votre logiciel de différentes manières: en extrayant des informations sensibles, en ajoutant du code malveillant et même en clonant vos applications.

Une étude récente de la société de sécurité Positive Technologies a révélé que les applications bancaires mobiles populaires sont sensibles aux attaques de piratage. Les problèmes de cybersécurité les plus courants identifiés étaient liés au fait que les noms des classes et des méthodes étaient explicitement écrits dans le code source, au manque de protection contre l’injection de code et à l’absence d’obscurcissement du code.

L’obscurcissement du code en particulier est une pratique prometteuse pour la sécurisation des logiciels. Si vous cherchez des moyens de protéger votre logiciel contre les intrusions, vous voudrez peut-être commencer par renforcer ses défenses en obscurcissant le code.

Comment fonctionne l’obscurcissement du code?

Les méthodes d’obscurcissement vous permettent de durcir le code de l’application en le transformant pour masquer les valeurs implicites et masquer la logique. Ces mesures rendent plus difficile pour un tiers non autorisé de regarder sous le capot de votre logiciel.

La plupart des techniques d’obscurcissement transforment l’un des aspects suivants du code:

• Data : Donne aux éléments de code une apparence différente de ce qu’ils sont

• Flux de contrôle : Rend la logique exécutable non déterministe si le logiciel est décompilé

• Structure de mise en page: Formatez les données, renommez les identifiants et supprimez les commentaires de code

Les outils d’obscurcissement fonctionnent avec le code source, le code machine ou binaire et le bytecode. Pour déterminer quel type de code est préférable d’obscurcir, vous devez garder à l’esprit les limites de chaque choix.

Lorsque vous obscurcissez le code source, vous pouvez rencontrer des difficultés dans la gestion et le débogage du code obscurci. L’obscurcissement binaire est non seulement plus compliqué que les deux autres options, mais doit être appliqué à chaque architecture système.

Dans mon entreprise, nous choisissons souvent l’obscurcissement du bytecode, car dans ce cas, nous n’avons pas à gérer le code source ou le code machine. Cependant, lorsque nous parvenons à transformer le bytecode en code machine, il est difficile de garder toutes les injections de code obscurcies complètement aléatoires.

Pour l’un de nos projets récents, mon équipe a utilisé le compilateur LLVM, ce qui nous a permis d’assurer un haut niveau de protection du bytecode avec peu d’impact sur les performances du logiciel. En plus de durcir le code, ce compilateur peut placer au hasard des vérificateurs de licences logicielles qui rendent presque impossible pour les pirates de pirater des logiciels.

Comment pouvez-vous protéger votre application avec l’obscurcissement du code ?

Bien que l’obscurcissement soit l’une des pratiques de codage sécurisées recommandées par OWASP, il n’est toujours pas si populaire parmi de nombreux développeurs. La principale raison en est que lorsqu’il est surutilisé, l’obscurcissement du code peut nuire aux performances du logiciel.

Mais si nous parlons, par exemple, d’une application bancaire mobile, l’importance de sécuriser les données de compte bancaire d’un utilisateur est suffisamment élevée pour justifier de consacrer du temps et des efforts supplémentaires à un durcissement équilibré du code.

Si vous voulez obscurcir le code de la manière la plus efficace, voici quelques éléments à considérer:

• Avant d’obscurcir votre code, vous devez décider quelles parties de votre code peuvent être obscurcies. Évitez d’obscurcir le code critique pour les performances. Assurez-vous également que l’obscurcissement n’affecte en rien la fonctionnalité du logiciel.

• Faites attention à la taille et aux performances du code obscurci. Lors du durcissement d’un gros morceau de code, le temps d’exécution peut augmenter jusqu’à 1 000 fois.

• Ajoutez des prédicats opaques au code obscurci pour qu’il soit impossible de comprendre où ira l’exécution du code. Faites en sorte que le graphique de flux de contrôle ressemble à une exécution de machine d’état plutôt qu’à une exécution de code linéaire.

• Pour créer une défense en couches, combinez plusieurs techniques de transformation. Plus vous utilisez de techniques d’obscurcissement, mieux votre code sera protégé.

• Utilisez l’obscurcissement du code uniquement comme couche de sécurité supplémentaire, car il ne peut pas se substituer à d’autres pratiques de sécurité.

Lorsqu’il est correctement implémenté, l’obscurcissement du code est une solution efficace pour protéger votre logiciel contre les analyses non autorisées. Ce n’est pas une solution miracle, mais cela compliquera considérablement les tentatives d’exploitation et de compromission de votre logiciel.

Forbes Technology Council est une communauté sur invitation réservée aux DSI, CTO et cadres technologiques de classe mondiale. Suis-je admissible?

Suivez-moi sur Twitter ou LinkedIn. Consultez mon site Web.

Chargement…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.