Home / Web dev / Le code copié est un code vulnérable

Le code copié est un code vulnérable

Nous regardons tous le code en ligne, puis le modifions et l'intégrons à nos programmes, mais s'agit-il d'une pratique sûre? Une nouvelle recherche suggère que ce n'est certainement pas le cas.

La réutilisation du code à partir de forums, notamment de Stack Overflow, est un gage de productivité, mais la qualité du code soulève de nombreuses interrogations. La plupart de ces problèmes ne sont pas liés à la qualité de la production – cela est évident car ils ont été créés simplement pour tenter de répondre à un petit point soulevé dans une question, mais rien de grave ne pouvait arriver si on l'utilisait simplement?

Des chercheurs de l’Université de Shiraz (Iran), de l’Université de Montréal (Canada) et de l’Université Chamran (Iran) ont décidé d’examiner le code C ++ et de déterminer s’il contenait des vulnérabilités.

Dans un ensemble de données de 72 483 extraits de code C ++ utilisés dans au moins un projet GitHub, ils ont détecté 69 vulnérabilités et 29 types de vulnérabilités différents. Ce qui est également préoccupant, c'est que les 69 extraits de code vulnérables ont été trouvés dans 2589 fichiers GitHub. La vulnérabilité la plus courante transférée de Stack Overflow était CWE-150:

"Le logiciel reçoit les entrées d'un composant en amont, mais il ne neutralise pas ou ne neutralise pas de manière incorrecte les éléments spéciaux qui pourraient être interprétés comme des séquences de caractère d'échappement, méta ou de contrôle lorsqu'ils sont envoyés à un composant en aval."

Voici un exemple de code qui a été marqué comme vulnérable:

void gen_random (char * s, const int len) {
statique const char alphanum () =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
pour (int i = 0; i <len; ++ i) {
s (i) = alphanum (rand ()% (sizeof (alphanum) - 1));
}
s (len) = 0;
}

Vous pouvez probablement repérer les problèmes – si len est la longueur de la chaîne n'incluant pas un null, sa mise à zéro est un dépassement; et si la chaîne est terminée par null, pourquoi passer len et pourquoi la définir à null? Ce qui est moins évident, c’est que rand est obsolète et que prendre le mod renvoie les bits inférieurs, qui ne sont pas très aléatoires. Ce qui est vraiment étonnant, c’est que cet extrait de code ait été réutilisé car il est suivi de divers commentaires critiques indiquant qu’il n’est pas bon. En particulier:

Nous avons besoin d’un moyen d’absorber des réponses obsolètes sur stackoverflow. –

Lorsque vous utilisez un extrait de code, vous devez réfléchir à beaucoup de choses. Vraisemblablement, si le programmeur était au courant du problème, il n'aurait pas cherché une solution en cache et, pour lui permettre de valider le code, il devrait le comprendre à un niveau assez approfondi. Pour résoudre ce problème, les chercheurs ont créé une extension de navigateur indiquant les réponses comportant du code vulnérable:

stackvuln

Le document original contient de nombreux autres exemples et idées intéressants, mais il contient également des erreurs et des fautes de frappe: il s'agit d'un premier brouillon.

Plus d'information

Une étude empirique des vulnérabilités C ++ dans des exemples de code en foule

Morteza Verdi, Ashkan Sami, Jafar Akhondali, Foutse Khomh, Gias Uddin et Alireza Karami Motlagh

Articles Liés

Peu importe la qualité du code …

Dépassement de pile: une plate-forme de blanchiment de code?

Devez-vous attribuer un code de débordement de pile?

Une langue peut-elle faire de vous un meilleur programmeur? Kotlin et Android

Est-ce que Strong Typing vous aide?

Pour être informé des nouveaux articles sur I Programmer, inscrivez-vous à notre bulletin hebdomadaire, souscrire à la Flux RSS et suivez nous sur, Twitter, Facebook ou Linkedin.

Bannière

graphics "width =" 400 "height =" 349

commentaires

ou envoyez votre commentaire à: commentaires@i-programmer.info

Source

About admin

Check Also

Surviving The Aftermath détaillé, apporte la construction de ville apocalyptique à la Xbox et au PC

Paradox a levé le voile sur son futur constructeur de ville apocalyptique, surnommé Surviving The …

Laisser un commentaire