Skip to main content

코드 검사 경고 정보

다양한 유형의 코드 검사 경고 및 각 경고가 강조 표시하는 문제를 이해하는 데 도움이 되는 정보에 대해 알아봅니다.

누가 이 기능을 사용할 수 있나요?

쓰기 권한이 있는 사용자

Code scanning은 다음 리포지토리 유형에서 사용할 수 있습니다.

  • GitHub.com에 대한 퍼블릭 리포지토리
  • GitHub Team, GitHub Enterprise Cloud 또는 GitHub Enterprise Server에 대한 조직 소유의 리포지토리로, GitHub Code Security 가 활성화되어 있습니다.

기업에서 코드 스캐닝 사용 설정하기

code scanning의 경고 정보

기본 CodeQL 분석, 제3자 분석 또는 다양한 분석 유형을 활용하여 리포지토리의 코드를 점검하도록 code scanning을 구성할 수 있습니다. 분석이 완료되면 결과 경고가 리포지토리의 보안 보기에 나란히 표시됩니다. 타사 도구 또는 사용자 지정 쿼리의 결과에는 GitHub의 기본 CodeQL 분석에서 감지한 경고에 대해 표시되는 속성 중 일부가 포함되지 않을 수 있습니다. 자세한 내용은 코드 검사에 대한 기본 설정 구성코드 검사에 대한 고급 설정 구성을(를) 참조하세요.

기본적으로 code scanning은 기본 분기 및 끌어오기 요청 중에 주기적으로 코드를 분석합니다. 풀 리퀘스트에서 경고를 관리하는 방법에 대한 자세한 정보는 끌어오기 요청에서 코드 검사 경고 심사을(를) 참조하세요.

CodeQL 분석의 code scanning 경고에 대해 보안 개요를 사용하면 조직 전체 리포지토리에서 CodeQL이(가) pull request에서 어떻게 작동하는지 확인하고 조치가 필요한 리포지토리를 식별할 수 있습니다. 자세한 내용은 CodeQL pull request alert metrics을(를) 참조하세요.

GitHub 도구를 사용하여 code scanning 경고에 대한 응답으로 수행된 작업을 감사할 수 있습니다. 자세한 내용은 보안 경고 감사을(를) 참조하세요.

경고 세부 정보

각 경고는 코드 관련 문제 및 이를 식별한 도구 이름을 강조 표시합니다. 경고를 트리거한 코드 줄과 경고 속성(예: 경고 심각도, 보안 심각도 및 문제의 특성)을 볼 수 있습니다. 또한 경고는 문제가 처음 발생한 시간을 알려줍니다. CodeQL 분석에서 식별한 경고의 경우 문제를 해결하는 방법에 대한 정보도 표시됩니다.

기본 브랜치에 대한 코드 스캔 경고

code scanning 경고 스크린샷에는 경고 제목과 함께 왼쪽에는 관련 코드 줄이, 오른쪽에는 메타데이터가 포함되어 있습니다.

CodeQL로 code scanning을 구성하면 코드 내의 데이터 흐름 문제를 탐지할 수 있습니다. 데이터 흐름 분석은 코드에서 잠재적인 보안 문제(예: 안전하지 않은 데이터 사용, 함수에 위험한 인수 전달, 중요한 정보 유출)를 찾습니다.

code scanning에서 데이터 흐름 경고를 보고하면 GitHub에서 데이터가 코드를 통해 이동하는 방법을 보여 줍니다. Code scanning을(를) 사용하면 중요한 정보가 유출될 수 있는 코드 영역을 식별할 수 있으며, 이러한 영역은 악의적인 사용자의 공격 진입점이 될 수 있습니다.

여러 구성의 경고에 대해

다양한 도구를 활용하여 여러 언어와 코드 영역을 대상으로 리포지토리에서 여러 코드 분석 구성을 실행할 수 있습니다. code scanning의 각 구성은 고유한 경고 집합을 생성합니다. 예를 들어, GitHub Actions를 활용한 기본 CodeQL 분석에서 생성된 경고는 code scanning API를 통해 외부에서 업로드된 경고와는 서로 다른 구성에서 비롯됩니다.

여러 구성을 사용해 파일을 분석할 경우, 동일한 쿼리에서 검색된 모든 문제는 여러 구성에서 생성된 경고로 보고됩니다. 경고가 둘 이상의 구성에 있는 경우, 경고 페이지 오른쪽의 ‘영향을 받는 분기’ 섹션에서 분기 이름 옆에 구성 수가 표시됩니다. 경고 구성을 보려면 “영향을 받는 분기” 섹션에서 분기를 클릭합니다. “구성 분석” 모달은 해당 분기에 대한 경고를 생성하는 각 구성의 이름과 함께 표시됩니다. 각 구성 아래에서 해당 구성의 경고가 마지막으로 업데이트된 시점을 확인할 수 있습니다.

경고는 다른 구성에서 다른 상태를 표시할 수 있습니다. 경고 상태를 업데이트하려면 오래된 구성은 각각 다시 실행합니다. 또는 분기에서 오래된 구성을 삭제하여 오래된 경고를 제거할 수 있습니다. 부실 구성 및 경고를 삭제하는 방법에 대한 자세한 정보는 코드 검사 경고 해결을(를) 참조하세요.

애플리케이션 코드에 없는 경고에 대한 레이블 정보

GitHub는 애플리케이션 코드에 없는 경고에 범주 레이블을 할당합니다. 레이블은 경고의 위치와 관련이 있습니다.

  • 생성됨: 빌드 프로세스에서 생성된 코드
  • 테스트: 테스트 코드
  • 라이브러리: 라이브러리 또는 타사 코드
  • 설명서: 설명서

Code scanning는 파일 경로에 따라 파일을 분류합니다. 원본 파일은 수동으로 분류할 수 없습니다.

이 예에서 경고는 code scanning 경고 목록에서 “테스트” 코드와 같이 표시됩니다.

code scanning 리스트의 경고 스크린샷. 제목 오른쪽에는 ‘테스트’ 레이블이 진한 주황색 테두리로 강조되어 표시됩니다.

경고 상세 정보를 클릭하면 파일 경로가 “테스트” 코드로 표시되는 것을 확인할 수 있습니다.

경고 상세 정보를 보여주는 스크린샷 파일 경로와 “테스트” 레이블이 짙은 주황색 테두리로 강조되어 표시됩니다.

경고 심각도 및 보안 심각도 수준에 대해

code scanning 경고의 심각도 수준은 코드베이스에 문제가 추가될 위험을 나타냅니다.

  •         **심각도.** 모든 code scanning 경고에는 `Error`, `Warning`, 또는 `Note` 수준이 있습니다.
    
  •         **보안 심각도.** CodeQL을(를) 사용하여 발견된 각 보안 경고의 보안 심각도 수준은 `Critical`, `High`, `Medium`, 또는 `Low`입니다.
    

경고에 보안 심각도 수준이 있는 경우 code scanning은 severity보다 이 수준을 우선하여 표시하고 사용합니다. 보안 심각도 수준은 GitHub Advisory Database의 권고에도 사용되는 업계 표준인 Common Vulnerability Scoring System(CVSS)를 따릅니다. 자세한 내용은 CVSS: 정성적 심각도 등급 규모를 참조하세요.

보안 심각도 수준 계산

보안 쿼리가 CodeQL의 기본값 또는 확장 쿼리 도구 모음에 추가되면, CodeQL 엔지니어링 팀은 다음과 같이 보안 심각도를 계산합니다.

  1. 새로운 보안 쿼리와 연결된 하나 이상의 CWE 태그가 할당된 모든 CVE를 검색합니다.
  2. 해당 CVE에 대한 CVSS 점수의 상위 25%(75번째 백분위수)를 계산합니다.
  3. 해당 점수를 쿼리의 보안 심각도 수준으로 정의합니다.
  4. 쿼리에서 찾은 경고를 표시할 때 CVSS 정의를 사용하여 숫자 점수를 Critical, High, Medium, 또는 Low로 변환합니다.

자세한 내용은 CodeQL 설명서 사이트에서 CodeQL CWE 적용 범위를 참조하세요.

끌어오기 요청의 알림 정보

Code scanning 경고는 끌어오기 요청에서 검사 결과 및 주석으로 의 형태로 나타날 수 있습니다. 해당 현상은 code scanning이(가) 다음 중 하나에 해당하는 저장소에서 발생하게 됩니다.

  • 끌어오기 요청 검사로 구성됩니다(기본적으로 기본 분기를 대상으로 하는 끌어오기 요청으로 제한됨).
  • 코드가 푸시될 때마다 검색하도록 구성됩니다(결과는 열려 있는 끌어오기 요청에 매핑됨).

경고로 식별된 모든 코드 줄이 풀 리퀘스트의 변경 사항에 모두 포함된 경우에만 풀 리퀘스트에 경고가 표시됩니다.

분기 보호 규칙에 따라 "Code scanning 결과" 검사는 끌어오기 요청이 통과될 때까지 이를 병합되지 않도록 차단되는 필수 검사로 설정될 수 있습니다.