
SEDATED® Projekt (Sensitive Enterprise Data Analyzer To Eliminate Disclosure)

Das SEDATED®-Projekt (Sensitive Enterprise Data Analyzer To Eliminate Disclosure) zielt darauf ab, zu verhindern, dass vertrauliche Daten wie Benutzeranmeldeinformationen und Tokens in Git gepusht werden.
Angesichts der Vielzahl von Codeänderungen, die in der heutigen CICD-Umgebung erforderlich sind, pushen Entwickler ständig Code, der unbeabsichtigt vertrauliche Informationen enthalten könnte. Diese potenzielle Offenlegung sensibler Daten stellt ein enormes Risiko für Organisationen dar (2017 OWASP Top Ten #3 – Sensitive Data Exposure). SEDATED® behebt dieses Problem, indem es alle eingehenden Codeänderungen automatisch überprüft und dem Entwickler sofort Rückmeldung gibt. Wenn sensible Daten erkannt werden, wird verhindert, dass der oder die Commits an den Git-Server gepusht werden.
**HINWEIS: NUR Zeilen, die in Commit-Pushes hinzugefügt oder geändert werden (beginnend mit + in der Patch-Datei), werden von SEDATED® gescannt. Zeilen, die in Commit-Pushes entfernt werden (beginnend mit - in der Patch-Datei), werden NICHT von SEDATED® gescannt.
git clone https://github.com/OWASP/SEDATED.git
cd SEDATED/
cp /config/whitelists/commit_whitelist.txt.example /config/whitelists/commit_whitelist.txt
cp /config/whitelists/repo_whitelist.txt.example /config/whitelists/repo_whitelist.txt
cp /config/enforced_repos_list.txt.example /config/enforced_repos_list.txt
Schieben Sie die organisationsspezifische Implementierung von SEDATED® in das gewünschte Git-Repository der Organisation (GitHub, GitLab, Git usw.)
Anleitungen dazu für eine GitHub Enterprise-Instanz finden Sie in GitHub_Enterprise_Setup.md.
always_reject.sh muss durch das SEDATED®-Skript pre-receive.sh ersetzt werden.pre-receive.sh zugänglich sein.pre-receive.sh verwendet wird. Sie ermöglicht Organisationen, ihre SEDATED®-Implementierung anzupassen, ohne den Quellcode in SEDATED®'s pre-receive.sh ändern zu müssen, indem sie integrierte anpassbare Variablen und Funktionen bereitstellt, die von pre-receive.sh eingebunden werden.use_enforced_repo_check_custom-Flag von SEDATED® (Pre-Receive-Hook) in config/custom_configs.sh auf „True“ gesetzt ist./* an die Organisation oder den Benutzernamen erreicht werden, bei dem die Erzwingung gewünscht wird./config/enforced_repos_list.txt erscheint, sieht der Pusher (wenn er von der Kommandozeile pusht) eine anpassbare Nachricht (anpassbar über die Datei /config/custom_configs.sh) und SEDATED® scannt keinen der im Push enthaltenen Codes./config/custom_configs.sh und kann auf „True“ oder „False“ gesetzt werden.
/config/enforced_repos_list.txt aufgeführt sind, haben die SEDATED®-Erzwingung aktiviert. Alle anderen Repositorys mit aktiviertem SEDATED®, die jedoch nicht in der Datei /config/enforced_repos_list.txt aufgeführt sind, sehen nur eine benutzerdefinierte Nachricht; es wird kein Code für Pusher aus diesen Repositorys gescannt.use_enforced_repo_check_custom in config/custom_configs.sh auf „True“ gesetzt ist.pre-receive.sh) mit dem Flag -P verwendet, was sie zu Perl-kompatiblen regulären Ausdrücken (PCREs) macht./testing/regex_testing/regex_test_script.sh verwendet wird, muss die Datei /testing/regex_testing/test_cases.txt aktualisiert werden, indem die Testfälle für die aktualisierten Regexes hinzugefügt oder entfernt werden, damit die Ergebnisse des /testing/regex_testing/regex_test_script.sh korrekt sind.\ erforderlich sein, da diese Datei im JSON-Format vorliegt./config/whitelists/commit_whitelist.txt.example gezeigt.commit_whitelist.txt) zu senden, wenn sie auf falsch positive Ergebnisse stoßen, damit diese überprüft werden können./config/whitelists/repo_whitelist.txt.example gezeigt.testing/regex_testing/test_cases.txt verwendet wird, ist eine einfache, schnelle, Offline-Methode, um zu testen/validieren, ob die regulären Ausdrücke in config/regexes.json gültig sind und die gewünschten Muster erkennen sowie gewünschte Ausschlüsse/Nicht-Übereinstimmungen korrekt handhaben.
/testing/regex_testing/test_cases.txt), um zu überprüfen, ob die Regexes wie erwartet funktionieren./testing/regex_testing/test_cases.txt).-P-Flag)./testing/regex_testing/test_cases.txt./testing/regex_testing/regex_test_script.sh zur Verarbeitung übergeben werden.>>pass oder >>fail angehängt. Diese teilen dem Skript /testing/regex_testing/regex_test_script.sh mit, welche Erwartung für die Regexes besteht.
>>pass bedeutet, dass ein Push mit dem vorangestellten String von SEDATED® akzeptiert wird (d. h. die Regexes markieren den vorangestellten String NICHT).>>fail bedeutet, dass ein Push mit dem vorangestellten String von SEDATED® abgelehnt wird (d. h. die Regexes markieren den vorangestellten String).Benutzerdefinierte Variablen und Funktionen sind so konzipiert, dass Organisationen ihre eigene spezifische Implementierung von SEDATED® einfach anpassen können, ohne die Haupt-Pre-Receive-Hook-Datei zu ändern, die die Hauptarbeit erledigt. Alle benutzerdefinierten Variablen und Funktionen finden Sie in /config/custom_configs.sh. Die Erklärungen der in dieser Datei enthaltenen Variablen sind unten aufgeführt.
show_SEDATED_link_custom – „True“, um einen Link zum OWASP/SEDATED GitHub-Repository anzuzeigen (Groß-/Kleinschreibung beachten), andernfalls auf „False“ setzen.documentation_link_custom – Fügen Sie einen Link zur organisationsspezifischen Dokumentation hinzu, wie die Organisation möchte, dass Entwickler mit abgelehnten Pushes umgehen, und/oder allgemeine organisationsspezifische Informationen zu SEDATED®.
enforced_repos_list.txt enthalten ist.use_enforced_repo_check_custom – „True“ oder „False“ (Groß-/Kleinschreibung beachten).
/config/enforced_repos_list.txt.enforced_repo_check_true_message_custom mit benutzerdefinierter Nachricht (nur erforderlich, wenn use_enforced_repo_check_custom auf „True“ gesetzt ist).obfuscate_output_custom – „True“ oder „False“ (Groß-/Kleinschreibung beachten). Mit dieser Option können sensible Daten, die in der Ausgabe von SEDATED® angezeigt werden, maskiert werden.SET_USER_REPO_NAME_CUSTOM
GITHUB_REPO_NAME, wenn GitHub verwendet wird.PRINT_ERROR_MESSAGE_CUSTOM
EXIT_SEDATED_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.PUSH_ACCEPTED_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.UNABLE_TO_ACCESS_REGEXES_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.exit 1 ausführen und eine Fehlermeldung ausgeben, wenn nicht auf die Regexes zugegriffen werden kann. Es kann jedoch in diesen Fällen eine zusätzliche benutzerdefinierte Aktion durchgeführt werden, falls gewünscht (z. B. zusätzliche Fehlermeldung ausgeben, protokollieren, Metrik senden usw.).PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM
: („nichts tun“) als zusätzliche Aktion; muss nicht geändert werden.Nur kompatibel mit SCM-Tools, die das Git-Versionskontrollsystem verwenden.
SET_USER_REPO_NAME_CUSTOM sind erforderlich, um Benutzer/Org und Repo-Namen zu setzen..git/hooks/ gelegt werden (außer dem Dokumentationsordner/-dateien)..sample aus pre-receive.sample und kopieren Sie den Code aus SEDATED®'s pre-receive.sh in die Datei pre-receive, die wir gerade aus der .sample-Datei erstellt haben.SET_USER_REPO_NAME_CUSTOM werden wahrscheinlich erforderlich sein, um Benutzer/Org und Repo-Namen zu setzen.Sie können auf folgende Weise beitragen:
SEDATED® ist lizenziert unter der BSD 3-Clause "New" or "Revised" License.
**SEDATED® garantiert nicht, dass jede Instanz von hartcodierten Anmeldeinformationen, Schlüsseln, Geheimnissen usw. markiert wird. Es verwendet Regex-Musterabgleich, und obwohl es ziemlich gut darin geworden ist, die meisten Instanzen zu erkennen, ist es nicht perfekt. Wir sind jedoch immer offen für Ideen und/oder Pull-Requests, um SEDATED® noch besser zu machen.