Audit de code source


Qu'est-ce qu'un audit de code source?

Les audits de code sont majoritairement réalisés selon deux axes:

  • Dans le cadre de missions en "stand-alone". Dans ce cas, le client nous fournit un tarball des sources ainsi qu'un export de la base de données anonymisée permettant de motoriser l'applicatif. L'audit de code source dans ce cas sera réalisé une unique fois et cette base servira de référentiel pour les missions de contre-audit. C'est à partir de cette version que les "diff" seront effectués afin d'évaluer les modifications mises en place, la pertinence des correctifs déployés et le bon apprentissage du développement sécurisé par l'équipe de développement.

  • Dans le cadre d'un accompagnement au développement. Ainsi à l'image du projet OpenBSD, une relecture de code est systématiquement effectuée lors des commits de l'équipe de développement. Ainsi les délais de réponse suite à l'introduction d'une vulnérabilité dans le code sont grandement minimisés.
Il est fréquent que l'audit de code soit réalisé à la suite d'un test d’intrusion applicatif.

Le processus d'audit de code source


Méthode d'audit de code source

L'intégralité de l'équipe de consultants de Wargan Solutions consacre un cinquième de son temps de travail à l'auto-formation et à la R&D. Cette R&D est majoritairement consacrée à l'écriture d'exploits afin d'enrichir notre tool-suite utilisée lors des test d'intrusions. Nous consacrons donc un cinquième de notre temps à relire du code source ce qui nous confère une très grande expérience en la discipline mais aussi une méthodologie particulièrement pointue.

Les vulnérabilités et études que nous avons décidé de publier (nous ne publions qu'une très infime partie de nos découvertes) sont quasiment toutes exclusivement issues d'audits de code source et de production de concepts.

Ainsi à l'image de nos publications sur les vulnérabilités Invision Power Board, Facebook et PunBB mais aussi de nos publications sur les implémentations de hashtables parallèles ou l'utilisation d'un Thread Local Storage, notre compétence en terme de langages est pluri-disciplinaire. Nous réalisons régulièrement des audits de code sources en PHP, J2EE, C, C++, Javascript, Python, Perl, ASP et l'intégralité des Framework qui y sont associés (de Jquery à Django).

L'implication de l'équipe de développement officielle du projet est primordiale lors d'une relecture de code source. En effet, celle-ci aura à comprendre comment les failles de sécurité sont exploitées, comment elles ont pu être implémentées, comment elles doivent être corrigées et comment ne pas les reproduire. Ceci dit, nous avons décidé d'impliquer l'équipe de développement uniquement dans le dernier tiers de l'audit de code, afin que nous puissions nous faire une idée de l'applicatif par nous-mêmes, et sans que notre jugement ne soit influencé.

L'audit de code est systématiquement réalisé en binôme: les taux de découvertes de vulnérabilités sont ainsi maximisées et cela permet surtout de mixer deux types d'analyses. Tout d'abord une relecture strict et linéaire du code source est effectuée. Cette phase est suivie d'une analyse "agile" au cours de laquelle nous insérons de nombreuses sondes de debug dans l'applicatif et grâce auxquelles nous analysons tout ce qui transite en GPC et tout ce qui peut présenter une faille logique d'un point de vue conception applicatif.

Quels sont les livrables fournis suite à un audit de code source ?

Un rapport précis contenant les failles, leur criticité, les méthodes d’enrayement, les méthodes de contournement, la facilité d'exploitation, l'incidence de la faille et plusieurs graphiques comparatifs vous est remis. Ce rapport est suivi d'un double entretien personnalisé: un entretien axé sur le décisionnel expliquant les vulnérabilités découvertes, leur impact et la procédure à mettre en place ainsi qu'un entretien technique permettant d'appréhender au mieux le contenu du rapport et surtout de mettre en place les contre-mesures le plus rapidement possible. Vous trouvez plus de détail sur la page notre méthodologie.

Il est important de noter que contrairement à d’autres sociétés nous ne nous cantonnons pas à exécuter un scanner d'analyse de code. L'intégralité de nos audits de code sont réalisés à la main et nous testons chacune des possibilités offertes par l'applicatif. Nous terminons l'audit de code par l'exécuton d'un scan à l'aide d'un outil développé par Wargan Solutions afin de nous assurer que nous n’avons rien oublié et que tous les échanges GPC ont été analysés. Ainsi les deux axes fondamentaux d’investigation sont utilisés.