Quels avantages à l’Analyse Statique Hybride de Code Source et de Binaire ?

< Retour à la newsletter
La détection automatique et conjointeconjointe  de problèmes et erreurs « Runtime » sur un du code source et sur le,ainsi que sur du ainsi que directement sur un codecode  binaire correspondant,, permet de se concentrer sur la correction de son propre code source, et amener d’élever les librairies binaires au même niveau de sûreté et de sécurité. Cependant, une L’autre utilité est de détecter des tentatives d’injection de commandes, y compris lorsque le code a été volontairement offusqué.
Une attaque provenant de l’intérieur…
La vulnérabilité suivante ci-dessous provient de l’outil Unreal IRCD, logiciel de messagerie open source, et elleet y est restée présente plus de 6 mois durant l’année 2010.

L’analyse du code source dans l’outil de détection de bugs et d’erreurs « Runtime » GrammaTech CodeSonar provoque la levée d’un avertissement d’injection de commande à la ligne 1436. De prime abord, cela semble plutôt anodin et lié à un mode debug ; on pourrait ne pas y porter une attention particulière. Cependant, en regardant ci-dessous les valeurs des macros dans CodeSonar, on constate que différents niveaux de macros amènent à ce que DEBUG3_LOG soit en fait une exécution de commande système. Ainsi, si la condition est satisfaite, nous exécutons sur le système la commande contenue dans la chaîne de caractères readbuf, qui a obtenue une valeur provenant de l’extérieur de l’application à la ligne 1444. Il suffit pour cela que les deux premiers caractères de readbuf correspondent à la macro DEBUGMODE3_INFO, égale à « AB ». Ainsi, un attaquant pourrait envoyer la commande « AB; rm –rf / ». La commande « AB » échouerait, mais la seconde supprimerait tous les fichiers de la racine…
Hybrid_Blog_Pic3
Détecter la vulnérabilité directement sur le code binaire
L’injection de commande ci-dessus étant cachée par plusieurs niveaux de macros, il est tout à fait plausible de ne pas la détecter immédiatement dans le code source, même en ayantavec un outil d’analyse statique., est tout à fait plausible.
Néanmoins, tous les efforts d’offuscation de personnes mal intentionnées sont mis au tapissont vains dès lors que nous recherchons les erreurs… directement dans le binaire, puis que nous les lions ensuite avec les informations du code source. C’est ce que permet « l’Analyse Statique Hybride Source & Binaire » de la suite CodeSonar Source & Binary analysis.
Hybrid_Blog_Pic4
Dans la capture ci-dessus, CodeSonar Binary remonte le même évéènement qu’e celui qui s’est produit au sein du code source : la variable readbuf est mise à une valeur provenant de l’extérieur sans vérification de sa pertinence.
Hybrid_Blog_Pic5
Ensuite, cette valeur est utilisée pour une injection de commande système. Contrairement au code source, l’appel système est ici parfaitement visible car il ne peut être caché par de multiples macros.

Les avantages de l’Analyse Statique Hybride Source et Binaire de la suite CodeSonar
La vulnérabilité d’Unreal IRCD est un exemple concret montrant comment l'analyse statique en général (à la fois de code source et de code binaire) peut détecter des erreurs et des vulnérabilités, ainsi qu’un excellent exemple de la façon dont l'analyse binaire peut aider à détecter les erreurs qui pourraient être offusquées dans le code source ou même ajoutées malicieusement après la compilation.

Voici quelques-uns des Quelques avantages de l’Analyse Statique Hybride Source et Binaire :
•      Visualiser deux facettes de la même vulnérabilité ou erreur : Une fois que le compilateur a optimisé le code source, le code binaire résultant peut révéler une vue différente des erreurs détectées. Analyser le binaire ainsi que le code source est bénéfique pour bien comprendre ces erreurs.
•      Détecter des injections de code malicieuses, des binaires modifiés, et des attaques d'initiés : Le code source d'un programme ne représente pas son état final. L’analyse de code binaire peut donc détecter des changements indésirables dans l'exécutable final. Le code injecté dans les exécutables ou même téléchargé ensuite (mises à jour, …) peut être analysé en vue de détecter d’éventuels défauts et vulnérabilités. Le code ajouté par des attaquants internes, possiblement caché dans du code source malveillant, peut être détecté avant livraison aux clients.
 
•      Obtenir le graphe d'appel des librairies et des autres binaires présents dans l’application finale : CodeSonar peut analyser les librairies standards C / C++, ainsi que toute autre librairie ou exécutable provenant de tiers. Lorsque le code effectue des appels à ces librairies, l'analyse se poursuit dans leur binaire, permettant de visualiser les chemins d’appels de son code source puis des librairies. Etendre l'analyse permet aussi de meilleures détections dans son propre code source et une diminution de faux positifs.