문서

발견 사항 및 그 라이프사이클

보안 기능이 어떻게 하나의 발견 사항 목록을 유지하고, 발견 사항이 언제 열리고 닫히며, 코드 내에서 수정되는 경우와 배포된 환경에서 수정되는 경우의 차이, 그리고 예외 처리 방식에 대해 설명합니다.

보안 → 발견 사항은 보안 기능이 탐지한 모든 항목을 담은 하나의 목록으로, 탐지한 도구와 관계없이 모두 포함됩니다. 모든 소스가 동일한 저장소에 데이터를 기록하며, 두 개의 소스에서 보고된 동일한 문제는 하나의 발견 사항으로 취급됩니다.

발견 사항, 발생 위치 및 소스

  • 하나의발견 사항은 하나의 저장소 내에 존재하는 별개의 문제를 의미합니다. 취약한 패키지, 유출된 인증 정보, 또는 코드 내의 취약한 패턴 등이 해당됩니다.
  • 그러한 발견 사항의발생 위치는 해당 문제가 존재하는 위치를 나타냅니다. 매니페스트 및 의존성 경로, 파일 및 줄 번호, 또는 비밀번호가 포함된 커밋 및 경로 등이 해당되며, 동일한 패키지의 두 가지 설치 버전도 별개의 발생 위치로 간주됩니다.
  • 그러한 발견 사항의소스는 해당 발견 사항을 탐지한 주체, 시점 및 탐지 범위를 명시합니다. OSV-Scanner, GitHub Dependabot, GitHub 코드 스캔, GitHub 비밀번호 스캔, Coroid의 비밀번호 스캔, Coroid의 코드 규칙 검사, 사용자 정의 스캔 명령어, Coroid 리뷰, 그리고 보안 감사 등이 여기에 해당됩니다.

이 목록은 프로젝트별로 그룹화되며, 프로젝트, 종류, 심각도, 상태, 소스, 공개 여부 및 증거를 기준으로 필터링할 수 있습니다. 의존성 관련 발견 사항은 패키지별로 그룹화되며, 수정에 필요한 업데이트 정보도 함께 표시됩니다.

심각도 및 마감일

각 발견 사항은 열린 시점으로부터 지정된 기간 내에 처리되어야 합니다:

심각도마감 기한
치명적2일 이내
높음7일 이내
중간30일 이내
낮음90일 이내

개요 화면에서는 기한이 초과된 발견 사항과 3일 이내에 처리해야 하는 발견 사항을 집계하여 표시합니다.

상태

상태의미
열림기본 브랜치에 해당 문제가 존재하는 상태입니다.
코드 내에서 수정됨완전한 스캔 결과에 따라 기본 브랜치에 있는 모든 발생 위치에서 해당 문제가 사라진 상태입니다.
교체 확인 완료유출된 인증 정보의 경우, 관련 담당자가 교체 또는 폐기했음을 확인한 상태입니다. 자세한 내용은유출된 비밀번호.
더 이상 적용되지 않음해당 발견 사항과 관련된 모든 권고 사항이 철회된 상태입니다. 이는 '수정됨'을 의미하지는 않습니다.
pull request 상에만 존재함pull request에서만 관찰되는 발견 사항으로, 해당 pull request에 속하며 변경 사항이 병합되면 다음 기본 브랜치 스캔에서 해당 문제가 확인됩니다.

무단으로 '정상'으로 표시되지 않음

특정 발생 위치가 사라지는 것은완전한현재 헤드에 대한 스캔 결과에서 그렇게 나타날 때만 해당됩니다. 부분적인 스캔, 실패한 스캔, 권한이 없는 스캔, 또는 브랜치가 이미 넘어간 커밋에 대한 스캔 결과는 아무런 영향을 주지 않습니다. 각 경우는 커버리지 정보로 확인할 수 있습니다:

  • 부분적: 일부 파일을 완전히 읽을 수 없어 커버리지 정보에 명시된 경우입니다.
  • 오래됨: 현재 기본 브랜치 헤드의 정보가 아니거나, 1일 이상 지난 데이터인 경우입니다.
  • …이후로 상태를 알 수 없음: 관련 소스의 접근 권한이 상실되었거나 데이터를 읽을 수 없는 경우입니다. 해당 소스에서만 보고된 발견 사항은 그 시점부터 '상태를 알 수 없음'으로 표시됩니다.
  • 권고 사항 피드 지연: 해당 기간 동안에는 어떤 프로젝트도 완전한 커버리지를 보여주지 못합니다.

결과는 커밋 날짜 순서가 아닌 Coroid가 브랜치 헤드를 관찰한 순서에 따라 적용됩니다. 누군가 브랜치를 이전 커밋으로 강제 푸시하면, 해당 커밋에 대한 스캔 결과가 가장 최신 데이터가 되며, 브랜치가 이미 넘어간 헤드에 대한 늦은 결과는 아무런 영향을 주지 않습니다.

코드 내에서 수정됨 및 실행 환경에서 수정됨

수정 사항을 병합했다고 해서 해당 수정이 실제로 적용된 것은 아닙니다. 보안 기능은 이 두 가지 상태를 별도로 추적합니다:

  • 코드 내에서 수정됨기본 브랜치에 더 이상 해당 문제가 존재하지 않는 상태입니다.
  • 환경별로: 각 환경에서 실행되는 버전을 Coroid가 정확히 스캔합니다. 해당 스캔이 완료되고 문제가 발견되지 않아야만 해당 환경에서 수정된 것으로 간주됩니다. 문제를 다시 유발하는 롤백 또는 되돌리기 작업이 발생하면 해당 환경에 대한 발견 사항이 다시 열립니다.

발견 사항의환경은 각 환경별로 '프로덕션에서 실행 중', '코드 내에만 존재', '배포 상태를 알 수 없음' 중 하나의 상태를 표시합니다. '배포 상태를 알 수 없음'은 Coroid가 해당 환경에 대한 관찰된 버전 정보를 갖지 못했거나, 아직 완전한 스캔 결과가 없음을 의미합니다. 배포 추적 기능이 없는 프로젝트의 경우 '저장소 상태만 확인 가능 – 배포 버전 정보는 추적되지 않음'이라고 표시됩니다. 배포를 추적하려면배포 이벤트.

개요 → 수정 진행 상황은 프로덕션 환경에서 아직 실행 중인 항목, 코드에는 수정되었지만 아직 배포되지 않은 항목, 아직 판단할 수 없는 항목, 리뷰를 기다리는 수정용 Pull Request, 그리고 문제 탐지부터 수정 사항 병합 및 배포까지의 평균 소요 시간을 보여줍니다.

예외 사항

예외는 발견 사항을 삭제하지 않고 열린 목록에서 숨깁니다. 소유자와 관리자는 발견 사항에 예외를 추가할 수 있습니다.

유형필요 사항
위험 수용사유, 수용 가능한 최고 심각도, 그리고 미래의 만료일로 구성됩니다.
문제가 아님(오탐지)사유와 수용 가능한 최고 심각도입니다. 만료일은 선택 사항입니다.

예외의 만료일이 도래하거나 누군가 예외를 취소하거나 발견 사항의 심각도가 예외에서 허용하는 수준을 초과하면 해당 발견 사항이 다시 표시됩니다. 심각도 상승 시 예외는 영구적으로 무효화됩니다. 예외로 숨겨졌던 관찰 내용은 그대로 보존되며 이름이 지정됩니다. 모든 예외는 조직의 감사 로그에 기록됩니다.

유출된 자격 증명의 경우는 다릅니다. 해당 자격 증명이 회전되거나 취소되었음을 누군가 확인해야만 처리됩니다. 다음을 참조하세요:유출된 비밀 정보.

발견 사항에 대한 조치

발견 사항을 통해 소유자와 관리자는 다음 작업을 수행할 수 있습니다:

  • 수정: 해당 발견 사항에 대한 수정 작업을 시작합니다. 공개 종속성 발견 사항의 경우 수정용 Pull Request를 생성하거나 고정 버전이 없는 경우 완화 작업을 수행합니다. 코드 발견 사항의 경우 수정 작업을 생성합니다. 유출된 비밀 정보의 경우 회전 체크리스트를 진행합니다. 다음을 참조하세요: 수정용 Pull Request.
  • 위험 수용또는 해당 항목을문제가 아님으로 표시.
  • 열려 있는 수정 작업과 pull request를 추적하세요.

보존

저장소가 연결되어 있는 동안에는 발견 사항, 그 발생 내역 및 관련 증거가 보존됩니다. 저장소가 연결 해제되면 30일 후에 해당 데이터가 삭제되며, 그 안에 다시 연결되면 복원됩니다. 공유된 권고 데이터는 사용자 소유가 아니며 계속 보존됩니다. 예외, 확인 사항 및 공개 관련 감사 항목은 감사 로그의 보존 정책을 따릅니다.