코드 자체를 검사하는 보호 장치는 두 가지입니다:코드 스캔은 모든 변경 사항과 기본 브랜치에 대해 고정된 규칙을 적용하며,풀 요청에 대한 보안 리뷰는 Coroid Review가 탐지한 보안 문제가 pull request를 실패시키기 전에 이를 확인합니다.
코드 스캔
Coroid의 규칙
보안 팀이 이러한 규칙을 관리합니다. 이 규칙들은 이전에 품질 관리에서 반슬롭 방지 기능의 일부였으며 현재는 여기에 통합되어 각각의 소속이 명확해졌습니다:
| 규칙 | 탐지 대상 |
|---|---|
security.hardcoded-secret | 코드에 작성된 인증 정보. 다음을 참조하세요:유출된 비밀번호. |
security.tls-disabled | TLS 인증서 검증이 비활성화된 경우. |
security.auth-removed | 인증 또는 권한 제어용 데코레이터나 미들웨어가 제거되거나 주석 처리된 경우. |
security.cors-wildcard-credentials | 인증 정보와 함께 임의의 출처가 허용되는 경우. |
security.sql-concat | 보간된 문자열로 구성된 SQL이 쿼리 함수에 전달되는 경우. |
security.eval | 입력값으로부터 실행되는 코드:eval, new Function, 무단 처리된dangerouslySetInnerHTML. |
security.remote-script-exec | 다운로드한 스크립트가 쉘이나 인터프리터에 직접 파이프되는 경우. |
security.policy-changed | 스캐너 설정 변경. 다음을 참조하세요:보호 장치 및 적용 방식. |
deps.nonexistent | 해당 레지스트리에 존재하지 않는 신규 종속성. |
deps.known-malicious | 악성 패키지 경고가 있는 신규 종속성. |
deps.suspicious-new | 게시된 지 30일 미만이고 다운로드 횟수가 매우 적으며, 인기 있는 패키지와 이름이 한두 글자 차이 나거나 최근에 유지관리자가 변경된 신규 종속성. |
deps.install-script | 설치 시 스크립트를 실행하는 신규 npm 종속성. |
종속성 위생 규칙, 고정되지 않은 버전, 매니페스트 및 잠금 파일 불일치 문제는 반슬롭 방지 기능과 함께 품질 관리에 남아 있습니다. 다음을 참조하세요:반슬롭 방지.
이 규칙들은 변경 사항에 대해 적용되며, 품질 관리의 반슬롭 검사와 동일한 스캔 과정에서 실행되고, 푸시 시마다 및 하루에 한 번 기본 브랜치에서도 실행됩니다. 반슬롭 기능이 활성화되어 있지 않아도 동일하게 적용됩니다. 각 규칙의 동작은 보안 팀이 아닌 반슬롭 설정이 결정합니다. 보안 → 설정 → 코드 스캔에서 이 규칙들을 확인할 수 있습니다. 코드 스캔이 적용되기 전까지는 각 규칙은 품질 관리에서 설정된 동작을 유지하므로 블록으로 설정된 규칙은 계속 블록 기능을 수행합니다.
사용자 지정 스캔 명령어
프로젝트에 이미 보안 스캐너가 있다면 해당 명령어를사용자 지정 스캔 명령어아래에 입력하세요. 이 명령어는 프로젝트의security_scan검사로서 각 변경 사항에 대해 실행됩니다. 비활성화하려면 필드를 비워두세요.
SonarQube, Snyk, Semgrep와 같은 외부 도구의 결과도 리뷰 증거로서 Coroid에 전달될 수 있습니다. 다음을 참조하세요:리뷰 증거 제공업체.
풀 요청에 대한 보안 리뷰
Coroid Review는 품질 관리 내에서 풀 요청을 검토합니다. 보안 문제를 발견하면 이를 서술형 텍스트로 리뷰에 기재하지 않고 구조화된 데이터로 보고합니다: 취약점 유형, 파일 및 줄 번호, 심각도 등입니다. 보안 팀은 각 데이터를 "아직 확인되지 않음" 상태로 기록합니다.아직 확인되지 않음.
독립적인 검증 과정
중요 및 심각 등급의 데이터의 경우 Coroid는 독립적인 검증을 수행합니다: 별도의 제한된 모델이 해당 데이터가 언급한 파일을 pull request의 최신 커밋에서 확인하고 문제를 직접 재추론해야 합니다. 이 과정에서 문제가 확인되면 해당 데이터는 검증된 정적 결과로 간주됩니다. 문제를 판단하는 코드가 다른 파일에 있다면 검증 과정에서 확인할 수 없으며, 데이터는 "아직 확인되지 않음" 상태로 남습니다.
이 검증 과정은 다른 모델 작업과 마찬가지로 조직의 크레딧을 사용하며 pull request별로 정해진 한도 내에서 진행됩니다. 크레딧이나 시간이 소진되면 검증이 수행되지 않으며, 리뷰에는 "잠재적 보안 문제를 확인할 수 없었습니다: 조직의 크레딧이나 시간이 소진되었기 때문입니다."라는 메시지가 표시됩니다.
리뷰에서 실패로 판정되는 사항
| 관찰 | 강제 적용 | |
|---|---|---|
| 임계값 이상(기본적으로 심각)의 확인된 데이터 | 중립, "FINDING CONFIRMED" | Coroid Review 검증이 실패하여 "FINDING CONFIRMED"가 발생함 |
| 확인되지 않은 데이터 | 절대 실패로 판정되지 않음 | 절대 실패로 판정되지 않음 |
강제 적용된 확인된 중요 또는 심각 등급의 데이터는 품질 관리에서 리뷰를 권고 모드로 설정하더라도 Coroid Review에서 실패로 판정됩니다. 이는 권고형 리뷰가 절대 실패로 판정되지 않는다는 원칙의 유일한 예외입니다. 확인되지 않은 보안 데이터로 인해 변경이 요구되는 리뷰는 권고형으로 간주됩니다.
보안 리뷰를 사용하려면 프로젝트에 Coroid Review가 활성화되어 있어야 합니다. Coroid Review가 비활성화된 경우 보안 → 설정에 해당 내용이 표시됩니다.
GitHub에 전달되는 데이터
검토 텍스트, 코멘트 또는 확인 내용이 GitHub에 도달하기 전에 먼저 게시 검증 단계를 거칩니다. 공개 저장소이거나 Coroid가 가시성을 확인할 수 없는 저장소의 경우, 공개되지 않은 보안 문제는 "Coroid에서 잠재적 보안 문제를 발견했습니다. 자세한 내용은 Coroid를 참조하세요"라는 문구로 대체되며 링크가 함께 제공됩니다. 자세히 알아보기정보 공개.