
Le Secure Coding Dojo est une plateforme pour dispenser des connaissances en codage sécurisé.
Le Secure Coding Dojo est une plateforme pour dispenser une formation au codage sécurisé. Bien qu'il soit livré avec sa propre application de formation vulnérable (le site Insecure.Inc), le portail de formation peut être utilisé conjointement avec d'autres applications de formation. La force de la plateforme réside dans son extensibilité et son intégration avec la plateforme de collaboration de développement couramment utilisée Slack. Le portail de formation peut être facilement configuré dans le cloud et des instructions pour la configuration AWS Elastic Beanstalk sont disponibles ci-dessous.
Assurez-vous également de consulter le wiki pour plus de détails sur le déploiement et l'installation du Dojo.
Téléchargez la démo pour avoir un aperçu du portail de formation et de l'application Insecure.Inc.
Jetez également un œil dans /screenshots

Les étapes suivantes vous donneront la configuration de base du Dojo. Pour une configuration avancée et des intégrations, consultez le wiki
Installez la dernière version de Docker.
Clonez le dépôt avec Git
Déplacez-vous dans le répertoire racine du dépôt
Configurez une variable d'environnement DATA_DIR comme point de montage pour les fichiers du dojo. Sur *nix/mac, modifiez .bash_profile comme suit
export DATA_DIR="/VOTRE_REPERTOIRE_DE_DONNEES"
Sur Mac, vous devez autoriser Docker à accéder à ce répertoire dans Docker > Préférences > Partage de fichiers
Redémarrez votre terminal
Lancez avec
docker-compose up
Bien que les sites de formation open source pour enseigner les concepts de sécurité des applications ne soient pas nouveaux, le public cible de ces sites a été les testeurs d'intrusion et les hackers éthiques. Le Secure Coding Dojo est principalement destiné comme plateforme de diffusion pour les développeurs, et voici pourquoi :
Bien que nous ne garantissions pas la conformité, la formation pourrait être utilisée pour répondre à des exigences de conformité telles que PCI 6.5.a. Voir le document du programme Insecure.Inc sur le mapping avec SANS 25 / OWASP Top 10 / PCI 6.5
Portail de formation
Insecure.Inc
Portail de formation
Insecure.inc
Portail de formation
Insecure.Inc
Consultez le wiki.
Plus d'informations sur le wiki.
Vous devrez créer une application Slack pour l'authentification.
L'authentification Google peut également être configurée dans config.json. Vous aurez besoin d'un compte développeur Google et d'obtenir les identifiants OAuth depuis la console API Google : https://console.developers.google.com
Au même endroit, vous configurerez votre domaine et les URI de redirection autorisés. Par exemple, pour une configuration localhost, l'URL de redirection serait : http://localhost:8081/public/google/callback
Pour les petites équipes ou les images préconfigurées, l'authentification Slack ou Google peut ne pas être une option. Dans ce scénario, vous pouvez configurer l'authentification fonctionnant avec un fichier plat local.
Consultez le wiki pour plus d'informations.
Si vous ne configurez pas de base de données, le portail de formation utilisera simplement une base de données SQLite locale.
Vous pouvez également installer MySQL et créer une base de données et des identifiants pour cette base de données. Notez votre nom d'utilisateur et votre mot de passe, vous en aurez besoin plus tard.
Vous devrez configurer des clés de chiffrement en tant que variables d'environnement du système d'exploitation. Sur *nix/mac, modifiez .bash_profile comme suit
export ENC_KEY="mettez quelque chose d'aléatoire ici"
export ENC_KEY_IV="mettez quelque chose d'aléatoire ici"
Ce qui suit est pour empêcher les participants de générer leurs propres codes de défi.
export CHALLENGE_MASTER_SALT="mettez quelque chose d'aléatoire ici"
Vous pouvez ajouter de nouvelles leçons en suivant le modèle des leçons existantes.
Les défis sont définis dans ./trainingportal/static/lessons Le fichier definitions.json pointe vers la description html du défi correspondant, le lien de jeu et les blocs de code correspondants par identifiant de bloc de code. Suivez les exemples déjà définis pour en créer un nouveau.
.
+-- /trainingportal/static/lessons
| +-- modules.json //fichier de configuration où les modules de leçon sont définis
| +-- /attack-grams //représentations visuelles des attaques incluses dans les descriptions de défi
| +-- /blackBelt //module de leçon
| +--definitions.json //définitions individuelles de leçons
| +--cwe494.md // fichier html ou markdown incluant la description de la leçon
| +--cwe494.sol.md //solution de la leçon
| ....
| +--quiz.html
| +-- /secondDegreeBlackBelt
Les blocs de code sont définis dans ./trainingportal/static/codeBlocks. Ce dossier a une structure similaire avec un json de définition et un ensemble de fichiers html pour chaque défi.
.
+-- /trainingportal/static/codeBlocks
| +-- codeBlocksDefinitions.json //fichier de configuration où les blocs de code sont définis
| +-- authenticationByDefault.html //fichier html de description du bloc de code
| ...
| +-- useStrongDataEncryption.html