
Проект SEDATED® (Анализатор конфиденциальных корпоративных данных для устранения раскрытия информации)

Проект SEDATED® (Sensitive Enterprise Data Analyzer To Eliminate Disclosure) направлен на предотвращение попадания в Git конфиденциальных данных, таких как учётные данные и токены пользователей.
Из-за огромного количества изменений кода, необходимых в современной среде CICD, разработчики постоянно отправляют код, который может непреднамеренно содержать конфиденциальную информацию. Такое потенциальное раскрытие конфиденциальных данных представляет собой огромный риск для организаций (2017 OWASP Top Ten #3 — Раскрытие конфиденциальных данных). SEDATED® решает эту проблему, автоматически проверяя все входящие изменения кода и предоставляя разработчику мгновенную обратную связь. Если он обнаруживает конфиденциальные данные, он предотвращает отправку коммита(ов) на Git-сервер.
**ПРИМЕЧАНИЕ: ТОЛЬКО добавляемые или изменяемые строки (начинающиеся с + в файле патча) в отправляемых коммитах сканируются SEDATED®. Удаляемые строки (начинающиеся с - в файле патча) при отправке коммитов НЕ сканируются SEDATED®.
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
Отправьте реализацию SEDATED®, специфичную для организации, в нужный Git-репозиторий организации (GitHub, GitLab, Git и т. д.).
Инструкции по выполнению этого на экземпляре GitHub Enterprise можно найти в GitHub_Enterprise_Setup.md.
always_reject.sh необходимо заменить на скрипт pre-receive.sh от SEDATED®.pre-receive.sh.pre-receive.sh, позволяет организациям настраивать свою реализацию SEDATED® без необходимости изменять какой-либо исходный код в файле pre-receive.sh SEDATED®, предоставляя встроенные настраиваемые переменные и функции, подключаемые из pre-receive.sh.use_enforced_repo_check_custom в config/custom_configs.sh для SEDATED® (pre-receive hook) установлен в "True"./* в конец имени организации или пользователя, где требуется принудительное применение./config/enforced_repos_list.txt, отправляющий (при отправке из командной строки) увидит настраиваемое сообщение (настраивается через файл /config/custom_configs.sh), и SEDATED® НЕ будет сканировать код, включённый в отправку./config/custom_configs.sh и установить в "True" или "False".
/config/enforced_repos_list.txt, будут иметь «принудительное применение» SEDATED®. Все остальные репозитории, в которых SEDATED® «включён», но которые не перечислены в файле /config/enforced_repos_list.txt, увидят только настраиваемое сообщение; код при отправках из этих репозиториев сканироваться не будет.use_enforced_repo_check_custom в config/custom_configs.sh установлен в "True".pre-receive.sh) с флагом -P, что делает их Perl-совместимыми регулярными выражениями (PCRE)./testing/regex_testing/regex_test_script.sh потребуется обновить файл /testing/regex_testing/test_cases.txt, добавив или удалив тестовые случаи, относящиеся к обновлённым регулярным выражениям, чтобы результаты /testing/regex_testing/regex_test_script.sh были точными.\ в зависимости от желаемых регулярных выражений, поскольку этот файл имеет формат JSON./config/whitelists/commit_whitelist.txt.example.commit_whitelist.txt) при обнаружении ложноположительных срабатываний, чтобы их можно было проверить./config/whitelists/repo_whitelist.txt.example.testing/regex_testing/test_cases.txt, — это простой, быстрый автономный способ проверить/подтвердить, что регулярные выражения внутри config/regexes.json действительны и соответствуют желаемым шаблонам, а также корректно исключают/не совпадают.
/testing/regex_testing/test_cases.txt), чтобы убедиться, что регулярные выражения работают должным образом./testing/regex_testing/test_cases.txt).-P)./testing/regex_testing/test_cases.txt./testing/regex_testing/regex_test_script.sh для обработки.>>pass или >>fail, которые сообщают скрипту /testing/regex_testing/regex_test_script.sh ожидание для регулярных выражений.
>>pass означает, что отправка, содержащая предшествующую строку, будет принята SEDATED® (т.е. регулярные выражения НЕ пометят предшествующую строку).>>fail означает, что отправка, содержащая предшествующую строку, будет отклонена SEDATED® (т.е. регулярные выражения пометят предшествующую строку).Пользовательские переменные и функции предназначены для того, чтобы организации могли легко настраивать свою собственную реализацию SEDATED® без изменения основного файла pre-receive hook, который выполняет основную работу. Все пользовательские переменные и функции можно найти в /config/custom_configs.sh; объяснения переменных, содержащихся в этом файле, приведены ниже.
show_SEDATED_link_custom — "True" для отображения ссылки на GitHub-репозиторий OWASP/SEDATED (с учётом регистра), в противном случае установите "False".documentation_link_custom — добавьте ссылку на документацию организации о том, как разработчики должны обрабатывать отклонённые отправки, и/или общую информацию, специфичную для организации, касающуюся SEDATED®.
use_enforced_repo_check_custom — "True" или "False" (с учётом регистра).
/config/enforced_repos_list.txt выше, чтобы узнать больше о значении этого флага.enforced_repo_check_true_message_custom с настраиваемым сообщением (необходимо только в том случае, если use_enforced_repo_check_custom установлен в "True").obfuscate_output_custom — "True" или "False" (с учётом регистра). Используйте эту опцию, чтобы маскировать конфиденциальные данные, отображаемые в выводе SEDATED®.SET_USER_REPO_NAME_CUSTOM
PRINT_ERROR_MESSAGE_CUSTOM
EXIT_SEDATED_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.PUSH_ACCEPTED_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.UNABLE_TO_ACCESS_REGEXES_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.exit 1 и выведет сообщение об ошибке, если не сможет получить доступ к регулярным выражениям; однако при желании в этих случаях может быть выполнено дополнительное настраиваемое действие (например, вывод дополнительного сообщения об ошибке, запись в журнал, отправка метрики и т. д.).PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM
: «ничего не делать» в качестве дополнительного действия; изменять не требуется.Совместим только с SCM-инструментами, использующими систему контроля версий Git.
SET_USER_REPO_NAME_CUSTOM, чтобы задать пользователя/организацию и имя репозитория..git/hooks/ (кроме папки/файлов документации)..sample из pre-receive.sample и скопируйте код из файла pre-receive.sh SEDATED® в файл pre-receive, который мы только что создали из файла .sample.SET_USER_REPO_NAME_CUSTOM, чтобы задать пользователя/организацию и имя репозитория.Вы можете внести вклад одним из следующих способов:
SEDATED® лицензирован в соответствии с лицензией BSD 3-Clause "New" or "Revised".
**SEDATED® не гарантирует обнаружение каждого случая захардкоженных учётных данных, ключей, секретов и т. д. Он использует сопоставление с регулярными выражениями, и хотя он стал довольно хорош в выявлении большинства случаев, он не идеален, но мы всегда открыты для идей и/или pull request'ов, которые помогут сделать SEDATED® ещё лучше.