
Dawn est un scanner de sécurité d'analyse statique pour les applications web écrites en Ruby. Il supporte les frameworks Sinatra, Padrino et Ruby on Rails.
dawn est un scanner de code source conçu pour examiner vos applications web à la recherche de problèmes de sécurité.
L'outil est capable de scanner les applications web écrites en Ruby et supporte tous les principaux frameworks MVC (Model View Controller), prêts à l'emploi :
dawn version 2.0 contient plus de 680 contrôles de sécurité chargés dans sa base de connaissances, qui est mise à jour chaque semaine à partir de la National Vulnerability Database par le NIST.
Lorsque vous exécutez dawn sur votre code, il analyse le fichier Gemfile.lock de votre projet à la recherche des gems utilisés et tente de détecter la version de l'interpréteur Ruby que vous utilisez ou que vous avez déclarée dans votre outil de gestion de version Ruby préféré (RVM, rbenv, ...).
Ensuite, l'outil tente de détecter le framework MVC utilisé par votre application web et applique les contrôles de sécurité en conséquence. Il existe des contrôles conçus pour les applications Rails ou des contrôles applicables à tout code Ruby.
dawn peut également comprendre le code de vos vues et remonter les sources (sinks) pour repérer les scripts intersites (XSS) et les injections SQL introduites par le code que vous avez réellement écrit (dans la feuille de route du projet, c'est le code sur lequel la majeure partie des efforts de développement futurs sera concentrée).
Le résultat du scan de sécurité dawn est une liste de vulnérabilités avec quelques actions d'atténuation que vous pouvez suivre pour construire une application web plus robuste.
Vous pouvez installer la dernière version de dawn en la récupérant depuis Rubygems en tapant :
$ gem install dawnscanner
Après cela, vous devez télécharger la base de connaissances depuis Github et décompresser l'archive dans le répertoire $HOME/dawnscanner/kb.
Une disposition typique du répertoire kb ressemble à ceci :
$ ll ~/dawnscanner/kb
total 56K
drwxr-xr-x 2 thesp0nge users 28K 29 mar 18.27 bulletin
drwxr-xr-x 2 thesp0nge users 72 7 lug 2021 generic_check
-rw-r--r-- 1 thesp0nge users 65 29 mar 17.06 kb.yaml
-rw-r--r-- 1 thesp0nge users 74 29 mar 17.06 kb.yaml.sig
drwxr-xr-x 2 thesp0nge users 4,0K 7 lug 2021 owasp_ror_cheatsheet
La base de connaissances est structurée de cette manière :
À partir de la version 2.0, l'outil utilise des sous-commandes pour lancer des tâches spécifiques, chacune avec des messages d'aide spécifiques.
La sous-commande scan demande à dawn de scanner la cible spécifiée pour des problèmes de sécurité.
$ dawn scan target
Pour le moment, les résultats sont disponibles uniquement au format texte et sont stockés dans un répertoire nommé avec l'horodatage du scan, sous $HOME/dawnscanner/results/target, où target est le nom de l'application analysée.
Il est possible, avec la sous-commande kb, d'interroger la base de connaissances.
dawn kb find # Searches the knowledge base for a given vulnerability
dawn kb help [COMMAND] # Describe subcommands or one specific subcommand
dawn kb lint # Checks knowledge base content for correcteness
dawn kb list gem_name[gem_version] # List all security issues affecting a gem passed as argument (the version string is optional).
dawn kb status # Checks the status of the knowledge base
dawn kb unpack # Unpacks security checks in KB library path
Twitter profile: @dawnscanner Github repository: https://github.com/thesp0nge/dawnscanner
Les retours sont les bienvenus et nous aimons vraiment entendre votre voix.
Si vous êtes un fier utilisateur de dawn, si vous le trouvez utile, si vous l'avez intégré dans votre processus de release et si vous souhaitez soutenir ouvertement le projet, vous pouvez mettre votre référence ici. Il suffit d'ouvrir une issue avec une déclaration indiquant ce que vous pensez de l'outil et, le cas échéant, le logo de votre entreprise.
Merci.
saten : premier problème signalé concernant une faute de frappe dans le README
presidentbeef : pour son travail remarquable qui m'a inspiré pour créer dawn et pour la double vérification de la matrice de comparaison. L'issue #2 est la vôtre :)
marinerJB : pour divers rapports de bugs et idées supplémentaires
Matteo : pour des idées sur l'API et leur utilisation avec les hooks de github.com
Copyright (c) 2013-2023 Paolo Perego [email protected]
Licence MIT
Par la présente, une autorisation est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et/ou vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de copyright ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DU COPYRIGHT NE POURRONT ÊTRE TENUS POUR RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU SON UTILISATION OU AUTRE INTERACTION AVEC LE LOGICIEL.