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 résolvant son propre problème. Aujourd'hui, je veux parler de la recherche de problèmes de sécurité dans le code.
De toute évidence, dans les réalités modernes du développement logiciel, il est important de garantir la sécurité des processus. À un moment donné, le terme spécial DevSecOps a même été introduit. Ce terme fait référence à une série de procédures visant à identifier et éliminer 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 normes OWASP , qui décrivent les 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é, par exemple, les tests de sécurité des applications statiques (SAST), les tests de sécurité des applications dynamiques (DAST), les tests de sécurité des applications interactifs (IAST), l'analyse des composants logiciels (Software Composition Analysis), etc.
Les tests de sécurité des applications statiques détectent les bogues 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 me concentrerai sur l'analyse de code statique et utiliserai un simple outil open source pour tout démontrer dans la pratique.
Pourquoi j'ai choisi un outil d'analyse de sécurité de code statique open source
Il y a plusieurs raisons à cela: d'abord, c'est gratuit, car vous utilisez un outil développé par une communauté de personnes partageant les mêmes idées qui souhaitent aider d'autres développeurs. Si vous avez une petite équipe ou une startup, vous avez une excellente opportunité d'économiser de l'argent en utilisant un logiciel open source pour tester la sécurité de votre base de code. Deuxièmement, cela vous évite d'avoir à engager une équipe DevSecOps distincte, ce qui réduit encore vos coûts.
Les bons outils open source sont toujours conçus avec une flexibilité accrue à l'esprit. Par conséquent, ils peuvent être utilisés dans presque tous les environnements, couvrant un large éventail de tâches. Il est beaucoup plus facile pour les développeurs de faire de tels outils des amis avec le système qu'ils ont déjà construit tout en travaillant sur leurs projets.
Mais il peut y avoir des situations où vous avez besoin d'une fonctionnalité qui n'est pas disponible dans l'outil choisi. Dans ce cas, vous avez la possibilité de bifurquer son code et de développer sur sa base votre propre outil avec les fonctionnalités dont vous avez besoin.
Étant donné que dans la plupart des cas, la communauté influence activement le développement de logiciels open source, la décision d'apporter des modifications est prise assez rapidement et au point: les développeurs du projet open source s'appuient sur les retours et suggestions des utilisateurs, sur leurs rapports de bugs et autres problèmes.
Utilisation de Graudit pour analyser la sécurité du code
Pour l'analyse de code statique, vous pouvez utiliser divers outils open source, il n'y a pas d'outil universel pour tous les langages de programmation. Certains d'entre eux suivent les directives de l'OWASP et essaient de couvrir autant de langues que possible.
Ici, nous allons utiliser Graudit , un simple utilitaire de ligne de commande qui nous permettra de trouver des vulnérabilités dans notre base de code. Il prend en charge différentes langues, mais leur ensemble est toujours limité. Graudit est développé sur la base de l'utilitaire grep, qui a été publié sous la licence GNU.
Il existe des outils similaires pour l'analyse de code statique - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), Flawfinder, etc. Mais Graudit est très flexible et a des exigences techniques minimales. Cependant, vous pouvez rencontrer des problèmes que Graudit ne peut pas résoudre. Ensuite, vous pouvez rechercher d'autres options ici dans cette liste .
Nous pouvons intégrer cet outil dans un projet spécifique, ou le mettre à disposition d'un utilisateur sélectionné, ou l'utiliser simultanément dans tous nos projets. C'est également là que Graudit est flexible. Alors clonons d'abord le repo:
$ git clone https://github.com/wireghoul/graudit
Créons maintenant un lien symbolique pour Graudit pour l'utiliser au format de commande
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Ajoutez un alias à .bashrc (ou à tout autre fichier de configuration que vous utilisez):
#------ .bashrc ------
alias graudit="~/bin/graudit"
Redémarrer:
$ source ~/.bashrc # OR
$ exex $SHELL
Vérifions si l'installation a réussi:
$ graudit -h
Si vous voyez quelque chose de similaire, tout va bien.
Je vais tester l'un de mes projets existants. Avant d'exécuter l'outil, il doit passer 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
J'ai donc testé deux fichiers js de mon projet, et Graudit a affiché des informations sur les vulnérabilités de mon code sur la console:
Vous pouvez essayer de tester vos projets de la même manière. La liste des bases de données pour les différents langages de programmation peut être trouvée ici .
Les avantages et inconvénients de Graudit
Graudit prend en charge de nombreux langages de programmation. Par conséquent, il convient à un large éventail d'utilisateurs. Il peut concurrencer tous les homologues gratuits ou payants. Et il est très important que des améliorations soient encore apportées au projet, et la communauté aide non seulement les développeurs, mais également d'autres utilisateurs qui essaient de comprendre l'outil.
Il s'agit d'un outil pratique, mais jusqu'à présent, il ne peut pas toujours indiquer exactement quel est le problème, associé à un morceau de code suspect. Les développeurs continuent d'affiner Graudit.
Mais dans tous les cas, il est utile de prêter attention aux problèmes de sécurité potentiels dans votre code en utilisant de tels outils.
Début...
Dans cet article, je n'ai examiné qu'une seule des nombreuses façons de trouver des vulnérabilités: les tests de sécurité des applications statiques. L'analyse de code statique est facile, mais ce n'est que le début. Pour en savoir plus sur la sécurité de votre base de code, vous devez intégrer d'autres types de tests dans le cycle de vie du développement logiciel.
La publicité
Un VPS fiable et le bon choix d'un plan tarifaire vous permettront d'être moins distrait du développement par des problèmes désagréables - tout fonctionnera bien et avec un temps de disponibilité très élevé!