Sécurité du code : le bilan de GitLab

GitLab sécurité code

Que surveiller pour assurer la sécurité de son code ? À partir de l’analyse de milliers de projets hébergés sur sa plate-forme, GitLab livre des indicateurs.

À quelles composantes porter attention pour assurer la sécurité des développements logiciels ? Le rapport Security Trends de GitLab donne des indications.

Un premier volet était paru en avril. L’éditeur américain vient d’en publier un second. Il l’a ponctué de graphiques interactifs qui illustrent l’évolution des tendances.

Son analyse a englobé des « milliers » de projets hébergés sur la plate-forme. Elle a impliqué quatre outils de scan : statique, dynamique, dépendances et conteneurs.

Toutes les failles détectées ont été associées à leur principale classe CWE.
La CWE-20 (mauvaise validation d’entrée) était la plus répandue au mois d’août. 61 % des projets présentaient au moins une faille entrant dans cette catégorie.
C’est l’analyseur de conteneurs qui en a trouvé le plus, essentiellement dans les bibliothèques glibc et apt. L’analyseur de dépendances a quant à lui trouvé des CWE-20 essentiellement dans ajv (validation de formulaires), sockjs (émulation WebSocket), minimist et yargs-parser (pour le développement d’outils en ligne de commande).

Deuxième catégorie de vulnérabilités la plus fréquente : CWE-787 (écriture hors limites), avec 51 % des projets concernés. Là encore, côté conteneurs, glibc domine, devant openexr (pour le traitement du format de fichier du même nom) et ghostscript (transformation de données PostScript). Côté dépendances, la palme revient à execa (amélioration des processus enfants).

Troisième catégorie : CWE-400 (consommation non contrôlée de ressources), avec 44 % des projets. mixin-deep (fusion de propriétés d’objets), mysql et nghttp2 (implémentation C de HTTP2) tiennent le haut du pavé.

projets CWE

Des failles anciennes subsistent

Le taux de projets qui exploitent au moins une dépendance vulnérable a nettement progressé : 69 %, contre environ 50 % en avril. En tête de liste, lodash (manipulation de données). suivent execa, mixin-deep et kind-of (obtention du type natif d’une valeur ; déjà présent en avril).

vulnérabilités dépendances GitLab

À l’inverse, sous le prisme des conteneurs, le taux de projets vulnérables baisse, de 50 % à 41 %. Avec en première ligne glibc, libx11 (associée au système de fenêtrage X11) et systemd. On notera que parmi les éléments affectés, plus de 40 % présentent au moins une faille qui date de 2017 ou d’avant.

vulnérabilités conteneurs

Sur l’analyse statique, on est revenu à la proportion d’il y a un an : environ 50 % de projets vulnérables. Le plus souvent, le problème tient à la transmission non sécurisée de mots de passe dans des URL. Dans une moindre mesure, il peut être la conséquence d’un usage non sécurisé de fichier ou de dossier temporaire. Ou encore de la prédictibilité d’un générateur de nombres aléatoires.

vulnérabilités statique

Le code expose aussi parfois des secrets. En l’occurrence, des clés RSA privées pour 14 % des projets, des clés PKCS8 pour 10 % et des clés d’API AWS pour 7 %.

vulnérabilités secrets

Illustration principale © Smeisatch – shutterstock.com