Il existe énormément de langages de programmation. Entre le JavaScript, le Python, le C#, le PHP et autres, il n’est pas facile de faire un choix, en particulier si vous débutez dans le monde de la programmation. Plusieurs aspects vont déterminer vers quel langage vous orientez. Le premier sera le type de programme que vous souhaitez développer. Par exemple, vous n’utiliserez pas le même langage de programmation en fonction de si vous voulez réaliser un jeu vidéo sur console de salon ou développer un site internet.

Nous nous penchons aujourd’hui sur l’aspect sécurité des langages de programmation. Nous allons faire une comparaison des plus connus d’entre eux sur ce point si important.

Y a t-il un langage plus sûre que les autres ?

D’après White Source Software, parmi les 7 langages de programmation les plus utilisés au monde, la langage C est celui qui connait le plus de failles. En effet, il aurait un taux de vulnérabilité d’environ 50% et ce sur les 10 dernières années

Cependant, affirmer que C est le langage le moins sûr pour cette raison n’a pas vraiment de sens. En effet, ce n’est pas le seul critère à prendre en compte. Il faut tout d’abord avoir deux choses à l’esprit :

  • L’humanité a écrit plus de code qu’aucun autre langage, il y a donc plus de probabilités d’y découvrir des vulnérabilités.
  • C est utilisé depuis bien plus longtemps que la plupart des langages actuels. La plupart des appareils et des plateformes que nous utilisons sont programmés dans ce langage. Il est donc normal que C affiche un taux de vulnérabilités plus élevé que les autres langages.
Safety of Programming Languages

Donc, en regardant juste les taux de vulnérabilité par langage, C serait le moins sécurisé avec 47%. Vient ensuite Php avec 17%, suivi de Java avec 11%. Python quant à lui n’est qu’à 6%.

Vulnérabilité des langages par rapport au temps

Lorsque l’on compare la vulnérabilité des langages à travers le temps, on constate que ce taux de vulnérabilité varie considérablement en fonction des années. JavaScript par exemple affichait en 2015 seulement 75 failles de sécurité reportées. En revanche, en 2017, 391 vulnérabilités y ont été découvertes. Python reste stable avec entre 40 et 90 failles découvertes chaque année.

Mais le nombre de failles découvertes n’est pas le seul indicateur à prendre en compte pour juger de la sécurité d’un langage de programmation. En effet, en 2017, on a vu une hausse de la détection de failles pour tous les langages de programmation. Cela s’explique par le fait que les consciences ont commencé à s’éveiller en matière de cybersécurité. Les programmeurs se sont donc plus intéressés à cet aspect, mettant ainsi en avant de nombreuses failles qui n’avaient pas été détectées jusqu’ici.

Taux de failles critiques par rapport au temps 

En se concentrant uniquement sur les failles de sécurité de type 7 ou plus selon CVSS v2, on constate encore un pic en 2017 concernant les vulnérabilités reportées. Après 2017, la tendance s’affaiblie pour les failles de sécurité critique, et ce pour tous les langages de programmation. Par exemple, Python a connu 75 failles de sécurité critiques reportées en 2017. Et depuis, plus rien !

Cela s’explique par l’effort des chercheurs en sécurité informatique. Ces derniers ont mis au point des outils automatisés permettant de détecter les menaces pesant sur le langage de programmation. L’apparition de ces outils a créé une hausse des failles de sécurité reportées. Mais une fois le problème analysé, il peut être résolu.

Python

Le type de vulnérabilité 

C’est une chose de savoir combien de vulnérabilités ont été détectées par langage. Mais se baser là dessus pour savoir lequel est le plus sûr n’est pas suffisant. Il faut aussi s’intéresser au type de vulnérabilité en lui-même. Pour cela, il faut se pencher sur les CWEs, Commun Weakness Enumeration (il s’agit d’une liste des vulnérabilités que l’on peut rencontrer dans les logiciels).

Ainsi, on constate que dans 70% des cas, deux CWEs reviennent en haut de la liste. On retrouve ainsi le Cross-Site-Scripting (CWE-79) et Input Validation (CWE-20). C’est le cas notamment pour Python, Ruby, Java, Php et C.

Le type de vulnérabilité qui nous intéresse quand on parle de sécurité pour les langages de programmation sont les CWE-200 (fuite d’information) et les CWE-264 et CWE-284 (accès non autorisé). Prenons ce dernier cas comme exemple. Imaginez que quelqu’un (un hacker ou son logiciel) parvienne à se faufiler dans votre programme. Dans ce cas, les ingénieurs en sécurité informatique pourront développer une réponse du type kill switch VPN afin de couper la connexion au réseau pour fermer immédiatement l’accès à toute personne non autorisées.

Donc, en s’intéressant uniquement à ces aspects, on voit que Java souffre de nombreuses fuites d’information en comparaison aux autres vulnérabilité dont il fait l’objet. Il en va de même pour C++ et Ruby. 

Les langages les plus sûrs

En prenant en compte tous ces critères et en analysant toutes ces données, on peut essayer de dresser un top 5 des langages de programmation les plus sûrs.

  • Python
  • C
  • JavaScript
  • Php
  • Ruby

Il s’agit donc d’un savant mélange entre le nombre et le type de vulnérabilité qui nous permet de déterminer statistiquement parlant quels sont les langages les plus sûrs.