Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source

Graudit prend en charge de nombreux langages de programmation et permet d'intégrer des tests de sécurité de la base de code directement dans le processus de développement.

Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source
Source : Unsplash (Markus Spiske)

Les tests sont une partie importante du cycle de vie du développement logiciel. Il existe de nombreux types de tests, chacun ayant sa propre fonction. Aujourd'hui, je souhaite parler de la recherche de problèmes de sécurité dans le code.

Il est évident qu'il est crucial d'assurer la sécurité des processus dans les développements logiciels modernes. À une époque, un terme spécifique, DevSecOps, a même été introduit. Ce terme désigne un ensemble de procédures visant à identifier et à corriger les vulnérabilités d'une application. Il existe des solutions open source spécialisées pour vérifier les vulnérabilités conformément aux standards OWASP, qui décrivent différents types et comportements des vulnérabilités dans le code source.

Il existe différentes approches pour résoudre les problèmes de sécurité, comme le test de sécurité statique des applications (SAST), le test de sécurité dynamique des applications (DAST), le test de sécurité interactif des applications (IAST), l'analyse de composants logiciels (Software Composition Analysis), etc.

Le test de sécurité statique des applications détecte les erreurs dans le code déjà écrit. Cette approche ne nécessite pas l'exécution de l'application, c'est pourquoi elle est appelée analyse statique.

Je vais me concentrer sur l'analyse statique du code et utiliser un simple outil open source pour démontrer tout cela en pratique.

Pourquoi ai-je choisi un outil open source pour l'analyse statique de la sécurité du code

Il y a plusieurs raisons à cela : premièrement, c'est gratuit, car vous utilisez un outil développé par une communauté de pairs qui souhaitent aider d'autres développeurs. Si vous avez une petite équipe ou une startup, vous avez une excellente occasion d'économiser en utilisant un logiciel open source pour vérifier la sécurité de votre base de code. Deuxièmement, cela vous évite d'avoir besoin d'embaucher une équipe DevSecOps distincte, ce qui réduit encore vos dépenses.

De bons outils open source sont toujours créés en tenant compte des exigences accrues en matière de flexibilité. Par conséquent, ils peuvent être utilisés pratiquement dans n'importe quel environnement, couvrant un large éventail de tâches. Il est beaucoup plus facile pour les développeurs de coupler ces outils avec le système qu'ils ont déjà construit en travaillant sur leurs projets.

Cependant, il peut y avoir des situations où vous aurez besoin d'une fonctionnalité qui n'est pas présente dans l'outil que vous avez choisi. Dans ce cas, vous avez la possibilité de forker son code et de développer votre propre outil basé sur celui-ci avec la fonctionnalité dont vous avez besoin.

Étant donné que dans la plupart des cas, le développement de logiciels open source est fortement influencé par la communauté, les décisions concernant les modifications sont prises assez rapidement et judicieusement : les développeurs du projet open source s'appuient sur les retours et les suggestions des utilisateurs, ainsi que sur leurs rapports concernant les bugs et autres problèmes.

Utiliser Graudit pour analyser la sécurité du code

Pour l'analyse statique du code, différents outils open source peuvent être utilisés, il n'existe pas d'outil universel pour tous les langages de programmation. Certains développeurs d'entre eux suivent les recommandations de l'OWASP et essaient de couvrir autant de langages que possible.

Ici, nous allons utiliser Graudit, un utilitaire simple en ligne de commande qui nous permettra de trouver des vulnérabilités dans notre base de code. Il prend en charge plusieurs langages, mais son ensemble est tout de même limité. Graudit est basé sur l'outil utilitaire grep, qui a été à l'origine publié sous licence GNU.

Il existe des outils similaires pour l'analyse statique du code : Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder, etc. Cependant, Graudit est très flexible et a des exigences techniques minimales. Cela dit, vous pouvez rencontrer des tâches que Graudit ne peut pas résoudre. Dans ce cas, vous pouvez chercher d'autres options dans cette liste.

Nous pouvons intégrer cet outil dans un projet spécifique, le rendre accessible à un utilisateur sélectionné, ou l'utiliser simultanément dans tous nos projets. C'est aussi une facette de la flexibilité de Graudit. Commençons donc par cloner le dépôt :

$ git clone https://github.com/wireghoul/graudit

Créons maintenant un lien symbolique pour Graudit afin de l'utiliser dans la ligne de commande

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Ajoutons un alias dans .bashrc (ou dans un autre fichier de configuration que vous utilisez) :

#------ .bashrc ------
alias graudit="~/bin/graudit"

Rechargeons :

$ source ~/.bashrc # OU
$ exec $SHELL

Vérifions si l'installation s'est bien passée :

$ graudit -h

Si vous voyez quelque chose de similaire, tout va bien.

Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source

Je vais tester l'un de mes projets existants. Avant d'exécuter l'outil, il faut lui transmettre la base de données correspondant à la langue dans laquelle mon projet est écrit. Les bases de données se trouvent dans le dossier ~/gradit/signatures :

$ graudit -d ~/gradit/signatures/js.db

Donc, j'ai testé deux fichiers js de mon projet, et Graudit a affiché dans la console des informations sur les vulnérabilités dans mon code :

Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source

Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source

Vous pouvez essayer de tester vos projets de la même manière. La liste des bases de données pour différents langages de programmation est disponible ici.

Avantages et inconvénients de Graudit

Graudit prend en charge de nombreux langages de programmation. Il convient donc à un large éventail d'utilisateurs. Il peut rivaliser à juste titre avec n'importe quel équivalent gratuit ou payant. Et il est très important que le projet continue d'être amélioré, et que la communauté aide non seulement les développeurs, mais aussi d'autres utilisateurs qui essaient de comprendre l'outil.

C'est un outil pratique, mais il ne peut pas toujours indiquer avec précision quel est le problème lié à un segment de code suspect. Les développeurs continuent d'améliorer Graudit.

Quoi qu'il en soit, il est utile de prêter attention aux problèmes de sécurité potentiels dans le code en utilisant des outils de ce type.

Début...

Dans cet article, j'ai examiné seulement l'un des nombreux moyens de rechercher des vulnérabilités : le test de sécurité statique des applications. Effectuer une analyse statique du code est facile, mais ce n'est qu'un début. Pour en savoir plus sur la sécurité de votre code, il faut intégrer d'autres types de tests dans le cycle de développement logiciel.

En tant que publicité

Un VPS fiable et un bon choix de plan tarifaire permettront de se concentrer moins sur les problèmes désagréables en cours de développement — tout fonctionnera sans interruption et avec un uptime très élevé !

Comment utiliser un outil simple pour rechercher des vulnérabilités dans le code source

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster