
Das Secure Coding Dojo ist eine Plattform zur Vermittlung von Secure-Coding-Wissen.
Das Secure Coding Dojo ist eine Plattform für die Durchführung von Secure-Coding-Schulungen. Obwohl es mit einer eigenen, verwundbaren Trainingsanwendung (der Insecure.Inc-Website) ausgeliefert wird, kann das Trainingsportal zusammen mit anderen Trainingsanwendungen verwendet werden. Die Stärke der Plattform liegt in ihrer Erweiterbarkeit und der Integration mit der weit verbreiteten Entwicklungs-Kollaborationsplattform Slack. Das Trainingsportal kann einfach in der Cloud eingerichtet werden, und Anweisungen für die Einrichtung mit AWS Elastic Beanstalk finden Sie weiter unten.
Schauen Sie sich für weitere Details zur Bereitstellung und Installation des Dojo auch unbedingt das Wiki an.
Laden Sie die Demo herunter, um einen Eindruck vom Trainingsportal und der Insecure.Inc-Anwendung zu bekommen.
Werfen Sie auch einen Blick in /screenshots

Mit den folgenden Schritten erhalten Sie die Basiskonfiguration für das Dojo. Für erweiterte Konfiguration und Integrationen lesen Sie das Wiki
Installieren Sie die neueste Version von Docker.
Klonen Sie das Repository mit Git.
Wechseln Sie in das Stammverzeichnis des Repositorys.
Konfigurieren Sie eine Umgebungsvariable DATA_DIR als Mountpunkt für die Dojo-Dateien. Ändern Sie unter *nix/mac die .bash_profile wie folgt
export DATA_DIR="/YOUR_DATA_DIR"
Auf dem Mac müssen Sie Docker den Zugriff auf dieses Verzeichnis unter Docker > Preferences > File Sharing erlauben.
Starten Sie Ihr Terminal neu.
Führen Sie Folgendes aus
docker-compose up
Obwohl Open-Source-Trainingsseiten zur Vermittlung von Konzepten der Anwendungssicherheit nicht neu sind, richteten sich diese Seiten bisher an Penetrationstester und ethische Hacker. Das Secure Coding Dojo ist in erster Linie als Bereitstellungsplattform für Entwickler gedacht, und das aus folgenden Gründen:
Obwohl wir keine Compliance garantieren, kann die Schulung zur Erfüllung von Compliance-Anforderungen wie PCI 6.5.a eingesetzt werden. Siehe das Insecure.Inc-Curriculum-Dokument zur Zuordnung zu SANS 25 / OWASP Top 10 / PCI 6.5
Trainingsportal
Insecure.Inc
Trainingsportal
Insecure.Inc
Trainingsportal
Insecure.Inc
Schauen Sie sich das Wiki an.
Weitere Informationen im Wiki.
Sie müssen eine Slack-App für die Authentifizierung erstellen.
Die Google-Authentifizierung kann ebenfalls in config.json konfiguriert werden. Sie benötigen ein Google-Entwicklerkonto und erhalten die OAuth-Anmeldedaten über die Google-API-Konsole: https://console.developers.google.com
An derselben Stelle richten Sie Ihre Domain und die autorisierten Redirect-URIs ein. Bei einer lokalen Einrichtung wäre die Redirect-URL beispielsweise: http://localhost:8081/public/google/callback
Für kleine Teams oder vorkonfigurierte Images sind die Slack- oder Google-Authentifizierung möglicherweise keine Option. Für dieses Szenario können Sie eine Authentifizierung konfigurieren, die mit einer lokalen Flatfile funktioniert.
Weitere Informationen finden Sie im Wiki.
Wenn Sie keine DB konfigurieren, verwendet das Trainingsportal einfach eine lokale SQLite-DB.
Sie können auch MySQL installieren und eine DB sowie Anmeldedaten für diese DB erstellen. Merken Sie sich Ihren Benutzernamen und Ihr Passwort – Sie werden sie später benötigen.
Sie müssen Verschlüsselungsschlüssel als Betriebssystem-Umgebungsvariablen einrichten. Ändern Sie unter *nix/mac die .bash_profile wie folgt
export ENC_KEY="put something random here"
export ENC_KEY_IV="put something random here"
Das Folgende verhindert, dass Teilnehmer ihre eigenen Challenge-Codes generieren.
export CHALLENGE_MASTER_SALT="put something random here"
Sie können neue Lektionen hinzufügen, indem Sie dem Modell der vorhandenen Lektionen folgen.
Herausforderungen sind in ./trainingportal/static/lessons definiert. Die Datei definitions.json verweist auf die entsprechende HTML-Challenge-Beschreibung, den Play-Link und die entsprechenden Codeblöcke anhand der Codeblock-ID. Folgen Sie den bereits definierten Beispielen, um eine neue Lektion zu erstellen.
.
+-- /trainingportal/static/lessons
| +-- modules.json //configuration file where lesson modules are defined
| +-- /attack-grams //visual representations of attacks included in challenge descriptions
| +-- /blackBelt //lesson module
| +--definitions.json //individual lesson definitions
| +--cwe494.md // html or markdown file including the lesson description
| +--cwe494.sol.md //solution for the lesson
| ....
| +--quiz.html
| +-- /secondDegreeBlackBelt
Codeblöcke sind in ./trainingportal/static/codeBlocks definiert. Dieser Ordner hat eine ähnliche Struktur mit einer Definitions-JSON und einer Reihe von HTML-Dateien für jede Herausforderung.
.
+-- /trainingportal/static/codeBlocks
| +-- codeBlocksDefinitions.json //configuration file where code blocks are defined
| +-- authenticationByDefault.html //code block description html
| ...
| +-- useStrongDataEncryption.html