Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SEDATED — SEDATED® 프로젝트 (민감한 기업 데이터 노출 제거 분석기) | Kitploit
도구/GitHubGitHub/owasp/sedated
Vulnerability ScannersCode AnalysisConfiguration AuditingDevSecOpsSecret DetectionSupply Chain Security
GitHubowasp/sedated

SEDATED

SEDATED® 프로젝트 (민감한 기업 데이터 노출 제거 분석기)

저장소 보기
11035196년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
![SEDATED_logo_full](https://assets.kitploit.com/production/public/readmes/39573/d13787a4eba754eb1293d37f6f8acc34981e8673486459a98473622271d1e8b0.png)

**SEDATED®** 프로젝트(민감한 엔터프라이즈 데이터 유출 방지 분석기, Sensitive Enterprise Data Analyzer To Eliminate Disclosure)는 사용자 자격 증명 및 토큰과 같은 민감한 데이터가 Git에 푸시되는 것을 방지하는 데 중점을 둡니다.

## 목차
- [목적](#purpose)
- [설정](#setup)
  - [**SEDATED®** 클론하기](#setup1)
  - [`.example` 파일 업데이트](#setup2)
  - [`/config/custom_configs.sh` 변수 및 함수 사용자 정의(원하는 대로)](#setup3)
  - [조직별 구현을 포함한 **SEDATED®** 푸시](#setup4)
  - [**SEDATED®**의 `pre-receive.sh` 파일로 pre-receive 훅 지정](#setup5)
- [로컬 테스트](#localTesting)
- [파일 설명](#fileDescriptions)
  - [`pre-receive.sh`](#preReceive)
  - [`/config/custom_configs.sh`](#customConfigs)
  - [`/config/enforced_repos_list.txt`](#enforcedReposList)
  - [`/config/regexes.json`](#regexes)
  - [`/config/whitelists/commit_whitelist.txt`](#commitWhitelist)
  - [`/config/whitelists/repo_whitelist.txt`](#repoWhitelist)
  - [`/testing/regex_testing/regex_test_script.sh`](#regexTestScript)
  - [`/testing/regex_testing/test_cases.txt`](#testCases)
- [사용자 정의](#customization)
  - [사용자 정의 변수](#customVars)
  - [사용자 정의 함수](#customFuncs)
- [호환성](#compatibility)
  - [GitHub](#github)
  - [GitLab](#gitlab)
  - [Git](#git)
  - [기타 Git SCM 도구](#anyother)
- [기여](#contribute)
- [작성자](#authors)
- [라이선스](#license)

## <a id="purpose">목적</a>
오늘날의 CICD 환경에서는 수많은 코드 변경이 필요하기 때문에 개발자들은 의도치 않게 민감한 정보를 포함할 수 있는 코드를 끊임없이 푸시하고 있습니다. 이러한 잠재적 민감 데이터 노출은 조직에 큰 위험을 초래합니다 ([2017 OWASP Top Ten #3 - 민감 데이터 노출](https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure)). **SEDATED&#174;**은 들어오는 모든 코드 변경을 자동으로 검토하고 개발자에게 즉각적인 피드백을 제공함으로써 이 문제를 해결합니다. 민감한 데이터를 식별하면 커밋이 Git 서버로 푸시되는 것을 차단합니다.

\*\**참고: 커밋 푸시에서 **오직** 추가되거나 수정된(패치 파일에서 `+`로 시작하는) 줄만 **SEDATED&#174;**이 검사합니다. 커밋 푸시에서 제거되는(패치 파일에서 `-`로 시작하는) 줄은 **SEDATED&#174;**이 검사하지 **않습니다**.*

## <a id="setup">설정</a>
#### <a id="setup1">1. **SEDATED&#174;** 클론하기</a>
`git clone https://github.com/OWASP/SEDATED.git`

`cd SEDATED/`
#### <a id="setup2">2. `.example` 파일 업데이트</a>
`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`
#### <a id="setup3">3. `/config/custom_configs.sh` 변수 및 함수 사용자 정의(원하는 대로)</a>

#### <a id="setup4">4. 조직별 구현을 포함한 **SEDATED&#174;** 푸시</a>
조직별 **SEDATED&#174;** 구현을 조직이 원하는 Git 저장소(GitHub, GitLab, Git 등)로 푸시하세요.

#### <a id="setup5">5. **SEDATED&#174;**의 `pre-receive.sh` 파일로 pre-receive 훅 지정</a>
GitHub Enterprise 인스턴스에서 이를 수행하는 방법에 대한 지침은 [GitHub_Enterprise_Setup.md](https://github.com/owasp/sedated/blob/master/docs/GitHub_Enterprise_Setup.md)에서 확인할 수 있습니다.

## <a id="localTesting">로컬 테스트</a>
- [GitHub Docker Setup](https://help.github.com/en/enterprise/2.16/admin/developer-workflow/creating-a-pre-receive-hook-script#testing-pre-receive-scripts-locally) - 로컬 테스트를 위해 pre-receive 훅이 활성화된 Git 서버 역할을 하는 GitHub docker 컨테이너를 설정하기 위한 일반적인 지침입니다.
  - **SEDATED&#174;**이 설계된 대로 작동하려면 몇 가지 수정이 필요합니다.
    - `always_reject.sh`는 **SEDATED&#174;**의 `pre-receive.sh` 스크립트로 대체해야 합니다.
    - **SEDATED&#174;**의 관련 파일/폴더 구조가 같은 디렉터리에 포함되거나 `pre-receive.sh` 스크립트에서 액세스할 수 있어야 합니다.
    - 추가적인 조정도 필요할 수 있지만 위에 링크된 지침은 로컬 테스트를 위한 좋은 출발점입니다.

## <a id="fileDescriptions">파일 설명</a>
##### <a id="preReceive">`pre-receive.sh`</a>
- **SEDATED&#174;**의 핵심입니다.
- **SEDATED&#174;**의 regexes(config/regexes.json)와 함께 사용되는 **SEDATED&#174;** pre-receive Git 훅 스크립트로, Git 인스턴스로 푸시되는 추가되거나 수정된 코드 줄에서 하드코딩된 자격 증명/민감한 데이터(config/regexes.json에 정의된 대로)를 식별하고, 하드코딩된 자격 증명/민감한 데이터가 포함된 줄이 발견되면 푸시를 차단합니다.
##### <a id="customConfigs">`/config/custom_configs.sh`</a>
- `pre-receive.sh`와 함께 사용되는 **SEDATED&#174;** 사용자 정의 구성 파일로, `pre-receive.sh`에서 소싱되는 기본 제공 사용자 정의 변수와 함수를 제공하여 조직이 **SEDATED&#174;**의 `pre-receive.sh` 파일 내 소스 코드를 수정하지 않고도 자체 **SEDATED&#174;** 구현을 사용자 정의할 수 있게 합니다.
##### <a id="enforcedReposList">`/config/enforced_repos_list.txt`</a>
- **SEDATED&#174;**(pre-receive 훅)의 `config/custom_configs.sh`에 있는 `use_enforced_repo_check_custom` 플래그가 "True"로 설정된 경우 사용됩니다.
- **SEDATED&#174;**이 엔터프라이즈 내에서 전역적으로 "활성화"되지만, 이 파일에 나열된 저장소에서만 선택적으로 "강제 적용"되도록 합니다.
- 특정 조직 또는 사용자 이름 아래의 모든 저장소에 강제 적용하려면 조직 또는 사용자 이름 끝에 `/*`를 추가하면 됩니다.
- **SEDATED&#174;**이 조직 내에서 전역적으로 활성화되어 있고 `/config/enforced_repos_list.txt` 파일에 없는 경우, 푸시하는 사람(명령줄에서 푸시하는 경우)은 사용자 정의 가능한 메시지(`/config/custom_configs.sh` 파일로 사용자 정의)를 보게 되며 **SEDATED&#174;**은 푸시에 포함된 코드를 검사하지 않습니다.
- 이 기능을 활성화/비활성화하는 플래그는 `/config/custom_configs.sh`에서 확인할 수 있으며 "True" 또는 "False"로 설정할 수 있습니다.
  - "False" - **SEDATED&#174;**이 "활성화"된 모든 저장소에는 **SEDATED&#174;**이 "강제 적용"됩니다.
  - "True" - **SEDATED&#174;**이 "활성화"되어 있고 `/config/enforced_repos_list.txt` 파일에 나열된 저장소에만 **SEDATED&#174;**이 "강제 적용"됩니다. **SEDATED&#174;**이 "활성화"되어 있지만 `/config/enforced_repos_list.txt` 파일에 나열되지 않은 다른 모든 저장소는 사용자 정의 메시지만 표시되며 해당 저장소의 푸시에 대한 코드는 검사되지 않습니다.
- 이 파일은 비어 있어도 되며, `config/custom_configs.sh`에서 `use_enforced_repo_check_custom` 플래그가 "True"로 설정된 경우에만 존재하면 됩니다.
##### <a id="regexes">`/config/regexes.json`</a>
- 하드코딩된 자격 증명/민감한 데이터를 플래그하는 데 사용되는 정규식(regexes)을 포함합니다.
- 이 정규식은 `pre-receive.sh`에서 GNU grep이 `-P` 플래그와 함께 사용하여 Perl 호환 정규식(PCRE)으로 처리합니다.
- 필요에 따라 이 파일에서 정규식을 추가하거나 제거할 수 있습니다. 다만 `/testing/regex_testing/regex_test_script.sh` 스크립트를 사용하는 경우, 업데이트된 정규식과 관련된 테스트 케이스를 추가하거나 제거하여 `/testing/regex_testing/test_cases.txt` 파일을 업데이트해야 `/testing/regex_testing/regex_test_script.sh`의 결과가 정확합니다.
- 이 파일에서 정규식을 추가/수정하는 경우, 파일이 JSON 형식이므로 원하는 정규식에 따라 추가 이스케이프 문자 `\`가 필요할 수 있습니다.
##### <a id="commitWhitelist">`/config/whitelists/commit_whitelist.txt`</a>
- 오탐(false positive)의 경우, 이 파일에 커밋 ID가 포함된 하나 이상의 커밋을 검사 과정에서 제외할 수 있습니다.
- 커밋 ID는 `/config/whitelists/commit_whitelist.txt.example` 파일에 표시된 것처럼 이 파일에서 캐리지 리턴으로 구분해야 합니다.
- 이 파일은 비어 있어도 되지만 존재해야 합니다.
##### *선택 사항: 개발자가 오탐을 발견하면 이(`commit_whitelist.txt`) 파일에 대한 풀 리퀘스트를 제출하여 검토를 받을 수 있도록 요청하세요.*
##### <a id="repoWhitelist">`/config/whitelists/repo_whitelist.txt`</a>
- 이 파일에 포함된 (조직/사용자 이름)/저장소는 이 목록에서 제거될 때까지 민감한 데이터/하드코딩된 자격 증명 검사에서 완전히 제외됩니다.
- 대규모 푸시(예: 저장소 마이그레이션)의 경우에 사용됩니다. 이러한 경우 **SEDATED&#174;**은 푸시에 포함된 새 코드/수정된 코드를 5초 창(5초 창은 GitHub 특정 값이며 다른 Git 인스턴스에서는 다를 수 있음) 내에 검사할 수 없습니다.
- (조직/사용자 이름)/저장소 이름은 `/config/whitelists/repo_whitelist.txt.example` 파일에 표시된 것처럼 이 파일에서 캐리지 리턴으로 구분해야 합니다.
- 이 파일은 비어 있어도 되지만 존재해야 합니다.
##### <a id="regexTestScript">`/testing/regex_testing/regex_test_script.sh`</a>
- `testing/regex_testing/test_cases.txt`와 함께 사용되는 **SEDATED&#174;** 정규식 테스트 스크립트로, `config/regexes.json` 내부의 정규식이 유효하고 원하는 패턴과 일치하는지, 그리고 원하지 않는 패턴을 제외/불일치하는지 테스트/검증할 수 있는 간단하고 빠른 오프라인 방법입니다.
  - 정규식이 예상대로 작동하는지 확인하기 위해 테스트 케이스 목록(`/testing/regex_testing/test_cases.txt`)에 대해 정규식을 테스트합니다.
  - 긍정 및 부정 테스트 케이스(`/testing/regex_testing/test_cases.txt`)를 모두 테스트합니다.
  - 스크립트를 실행할 때 **GNU grep을 사용해야 합니다**. 그렇지 않으면 스크립트가 실패합니다(BSD grep에는 `-P` 플래그가 없습니다).
  - 이 스크립트에 사용되는 테스트 케이스는 `/testing/regex_testing/test_cases.txt`에서 가져옵니다.
##### <a id="testCases">`/testing/regex_testing/test_cases.txt`</a>
- 소비를 위해 `/testing/regex_testing/regex_test_script.sh`에 전달할 테스트 케이스 목록입니다.
- 각 테스트 케이스에는 `>>pass` 또는 `>>fail`이 추가되어 `/testing/regex_testing/regex_test_script.sh` 스크립트가 정규식에 대한 기대치를 알 수 있습니다.
  - `>>pass`는 앞의 문자열을 포함하는 푸시가 **SEDATED&#174;**에 의해 승인됨을 의미합니다(즉, 정규식이 앞의 문자열을 플래그하지 않음).
  - `>>fail`은 앞의 문자열을 포함하는 푸시가 **SEDATED&#174;**에 의해 거부됨을 의미합니다(즉, 정규식이 앞의 문자열을 플래그함).

## <a id="customization">사용자 정의</a>
사용자 정의 변수와 함수는 모든 무거운 작업을 수행하는 기본 pre-receive 훅 파일을 변경하지 않고 조직이 **SEDATED&#174;**의 자체 특정 구현을 쉽게 사용자 정의할 수 있도록 설계되었습니다. 모든 사용자 정의 변수와 함수는 [`/config/custom_configs.sh`](#customConfigs)에서 찾을 수 있으며 이 파일에 포함된 변수에 대한 설명은 아래에 나열되어 있습니다.
#### <a id="customVars">사용자 정의 변수</a>
- `show_SEDATED_link_custom` - OWASP/SEDATED GitHub 저장소에 대한 링크를 표시하려면 "True"(대소문자 구분), 그렇지 않으면 "False"로 설정합니다.
- `documentation_link_custom` - 조직이 거부된 푸시를 처리하는 방법 및/또는 **SEDATED&#174;**에 대한 조직별 일반 정보에 대한 조직별 문서 링크를 추가합니다.
  - 푸시가 거부되었을 때 개발자에게 다시 표시됩니다.
  - 적용 저장소 검사(enforced repo check)가 true로 설정되고 저장소가 `/config/enforced_repos_list.txt` 파일에 포함되지 않은 경우 개발자에게 다시 표시됩니다.
- `use_enforced_repo_check_custom` - "True" 또는 "False"(대소문자 구분).
  - 이 플래그의 의미에 대한 자세한 내용은 위의 [`/config/enforced_repos_list.txt`](#enforcedReposList) 파일 설명을 참조하십시오.
- `enforced_repo_check_true_message_custom` - 사용자 정의 메시지 포함(`use_enforced_repo_check_custom`이 "True"로 설정된 경우에만 필요).
- `obfuscate_output_custom` - "True" 또는 "False"(대소문자 구분). 이 옵션을 사용하면 **SEDATED&#174;** 출력에 표시되는 민감한 데이터를 마스킹할 수 있습니다.
#### <a id="customFuncs">사용자 정의 함수</a>
- `SET_USER_REPO_NAME_CUSTOM`
  - 사용자/조직/그룹 및 저장소 이름을 설정합니다.
  - GitHub를 사용하는 경우 GITHUB_REPO_NAME 변수를 사용하여 사용자/조직/그룹 및 저장소 이름을 설정합니다.
  - GitHub를 사용하지 않는 경우 사용자 정의 변수를 설정하여 이러한 이름을 얻을 수 있습니다.
  - 제공된 비-GitHub 이름은 기본 Git에서 이름을 가져오기 위한 것이지만 다양한 구현(Git SCM)에 따라 조정이 필요할 수 있습니다.
- `PRINT_ERROR_MESSAGE_CUSTOM`
  - 오류가 발생할 때 사용자 정의 오류 메시지를 출력할 수 있습니다.
- `EXIT_SEDATED_CUSTOM`
  - **SEDATED&#174;**을 종료할 때 추가 사용자 정의 작업을 수행합니다(예: 로그, 메트릭 전송 등).
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.
- `UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM`
  - **SEDATED&#174;**이 저장소 화이트리스트 파일에 액세스할 수 없을 때 추가 사용자 정의 작업을 수행합니다(예: 오류 메시지 출력, 로그, 메트릭 전송 등).
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.
- `PUSH_ACCEPTED_CUSTOM`
  - 푸시가 승인되었을 때 추가 사용자 정의 작업을 수행합니다(예: 로그, 메트릭 전송 등).
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.
- `UNABLE_TO_ACCESS_REGEXES_CUSTOM`
  - **SEDATED&#174;**이 regexes.json 파일에 액세스할 수 없을 때 추가 사용자 정의 작업을 수행합니다.
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.
  - **SEDATED&#174;**은 정규식에 액세스할 수 없으면 `exit 1`을 수행하고 오류 메시지를 출력하지만, 원하는 경우 이러한 경우에 추가 사용자 정의 작업을 수행할 수 있습니다(예: 추가 오류 메시지 출력, 로그, 메트릭 전송 등).
- `PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM`
  - 위반 사항이 포함되어 푸시가 거부되었을 때 추가 사용자 정의 작업을 수행합니다(예: 로그, 메트릭 전송 등).
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.
- `UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM`
  - **SEDATED&#174;**이 커밋 화이트리스트 파일에 액세스할 수 없을 때 추가 사용자 정의 작업을 수행합니다(예: 로그, 메트릭 전송 등).
  - 기본값은 추가 작업 없이 `:` "아무것도 하지 않음"이며 변경할 필요는 없습니다.

## <a id="compatibility">호환성</a>
*Git 버전 제어 시스템을 사용하는 SCM 도구와만 호환됩니다.*
- <a id="github">**GitHub**</a>
  - 완전히 테스트됨(Enterprise v2.15.3).
  - [**SEDATED®** GitHub Enterprise 설정](https://github.com/owasp/sedated/blob/master/docs/GitHub_Enterprise_Setup.md).
- <a id="gitlab">**GitLab**</a>
  - 예비 테스트 완료.
  - 사용자/조직 및 저장소 이름을 설정하려면 [`SET_USER_REPO_NAME_CUSTOM`](#customFuncs) 수정이 필요합니다.
- <a id="git">**Git**</a>
  - 예비 테스트 완료.
  - 모든 **SEDATED&#174;** 파일/폴더를 `.git/hooks/` 디렉터리에 배치해야 합니다(문서 폴더/파일 제외).
  - `pre-receive.sample`에서 `.sample`을 제거하고, **SEDATED&#174;**의 `pre-receive.sh` 파일의 코드를 `.sample` 파일로 방금 만든 `pre-receive` 파일에 복사합니다.
  - 구현에 따라 [git-template](https://git-template.readthedocs.io/en/latest/) 또는 이와 유사한 것을 사용하는 것이 좋을 수 있습니다.
- <a id="anyother">**기타 Git SCM 도구**</a>
  - 테스트되지 않음.
  - 사용자/조직 및 저장소 이름을 설정하려면 [`SET_USER_REPO_NAME_CUSTOM`](#customFuncs) 수정이 필요할 수 있습니다.
  - 작동하려면 추가 수정이 필요할 수 있습니다.

## <a id="contribute">기여</a>
### 이 프로젝트에 기여해 주세요!
다음 두 가지 방법 중 하나로 기여할 수 있습니다:
- **SEDATED&#174;**을 개선할 수 있다고 생각하는 아이디어를 저희(또는 아이디어를 **SEDATED&#174;** 코드 베이스 내에서 현실로 만들고 싶은 커뮤니티 구성원)에게 제출하려면 [이슈를 등록](https://github.com/OWASP/SEDATED/issues)하고 **SEDATED&#174;**을 어떻게 개선할 수 있다고 생각하는지, 코드 베이스 내에서 실제로 어떻게 가능할지 잘 설명해 주세요.
- **SEDATED&#174;**을 더 나게 만들기 위한 코드 변경 사항이 포함된 풀 리퀘스트를 제출해 주시면 검토, 테스트, 병합하겠습니다. :)

## <a id="authors">작성자</a>
- Dennis Kennedy
- Simeon Cloutier

## <a id="license">라이선스</a>
**SEDATED&#174;**은 [BSD 3-Clause "New" or "Revised" License](https://github.com/owasp/sedated/blob/master/LICENSE.md)에 따라 라이선스가 부여됩니다.

<hr />

\*\****SEDATED&#174;**은 하드코딩된 자격 증명, 키, 시크릿 등의 모든 사례를 플래그한다고 보장하지 않습니다. 정규식 패턴 매칭을 사용하며 대부분의 사례를 포착할 만큼 꽤 좋아졌지만 완벽하지는 않습니다. 하지만 **SEDATED&#174;**을 더욱 개선하는 데 도움이 되는 아이디어 및/또는 풀 리퀘스트는 언제나 환영합니다.*
도구 다운로드