Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 





















Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

Vulnérabilités : la faute aux développeurs ?

juin 2016 par Yves Duchesne, Expert en cybersécurité chez ACCEIS

Chaque semaine charrie son lot de vulnérabilités applicatives, dont les plus critiques représentent un danger important pour les systèmes d’information. Ces vulnérabilités applicatives sont des faiblesses contenues dans le code source d’une application, qui peuvent permettre ou aider un attaquant à compromettre un système. Dans ce cas, le produit affecté devient le vecteur de compromission, contrairement à d’autres vulnérabilités qui peuvent relever de problèmes de configuration ou de choix d’architectures, par exemple.
D’où proviennent ces vulnérabilités et pourquoi semblons-nous incapables de réaliser des applications qui en sont exemptes ?

Des natures hétérogènes

Une vulnérabilité applicative peut être de plusieurs natures :

 Elle peut être un bug (bogue), une anomalie de programmation qui provoque un comportement erratique, qui ne correspond pas au fonctionnement nominal de l’application. Les attaquants vont tirer parti de cette anomalie de fonctionnement et provoquer des actions malveillantes par son biais. C’est le cas par exemple des buffer overflow (débordement de tampon), lorsqu’une chaîne de caractères est recopiée sans que sa taille ne soit vérifiée préalablement.

 Elle peut être une implémentation naïve, lorsqu’un mécanisme est développé sans prendre en compte des risques associés en matière de sécurité. Il peut alors être possible à un attaquant de profiter de ce défaut pour biaiser le fonctionnement de l’application et lui faire effectuer des actions malveillantes, qui dépassent le cadre normal de son utilisation, en lui fournissant des données inattendues. C’est le cas par exemple des injections de commande, lorsque des appels systèmes ne sont pas assez sécurisés.

 Elle peut être l’absence d’un mécanisme spécifique de sécurité. Certaines vulnérabilités sont en effet présentes "par défaut", et doivent être explicitement corrigées par la mise en place d’un mécanisme dédié. Il s’agit de défauts inhérents à un type d’application, que les attaquants peuvent exploiter pour la compromettre. C’est le cas par exemple des Cross Site Request Forgery (CSRF), où l’attaquant profite d’une faiblesse naturelle des applications web pour effectuer des actions malveillantes.

La faute aux développeurs ?

Il est difficile de répondre simplement à cette question, face à l’hétérogénéité des vulnérabilités. Si une anomalie fonctionnelle peut être directement imputée au développeur, qui n’a pas été suffisamment attentif, impliqué, dans sa phase de programmation, et qui n’a pas assez testé son code, la question est plus épineuse en ce qui concerne des implémentations naïves, qui sont fonctionnellement correctes. Un développeur est en effet tenu de produire un code fonctionnel, conforme aux spécifications qui ont été définies en amont, mais il n’est pas un expert en cybersécurité et souvent il n’a pas été (ou insuffisamment) formé à ces problématiques.

Certains développeurs consciencieux se tiennent informés des vulnérabilités, des bonnes pratiques associées, et présentent un bon niveau de connaissance de ces problématiques, grâce à une veille active en la matière, mais d’autres ne font pas ce travail, parfois par manque de temps. Doit-on dès lors tenir les développeurs pour responsables de la présence massive des ces vulnérabilités ?

La place dérisoire laissée à l’enseignement de la cybersécurité au sein des cursus d’ingénieurs ou de Master est peut-être un élément de réponse. En effet, des filières complètes, dédiées au génie logiciel et à la programmation, dont sont issus beaucoup de développeurs, ne comprennent aucun module de sécurité applicative qui leur permettrait de bien connaître ces problématiques et de les traiter correctement. Dans ces conditions, il n’est guère étonnant de voir fleurir des vulnérabilités dans nos applications.

Difficile d’imputer la présence de ces vulnérabilités à un phénomène unique, mais il paraît inévitable d’améliorer la sensibilisation des développeurs à la cybersécurité, à travers des formations professionnelles, mais également au sein de leur cursus.


Voir les articles précédents

    

Voir les articles suivants