Skip to main content

코드 검사 경고 정보

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

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

쓰기 권한이 있는 사용자

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

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

          code scanning의 알림에 대하여

          code scanning을(를) 구성하여 기본 CodeQL 분석, 타사 분석 또는 여러 유형의 분석을 사용하여 리포지토리에서 코드를 확인할 수 있습니다. 분석이 완료되면 결과 경고가 리포지토리의 보안 보기에 나란히 표시됩니다. 타사 도구 또는 사용자 지정 쿼리의 결과에는 '기본 GitHub 분석에서 검색된 CodeQL경고에 대해 표시되는 모든 속성이 포함되지 않을 수 있습니다. 자세한 내용은 [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning) 및 [AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning)을(를) 참조하세요.

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

          GitHub Copilot Autofix을(를) 사용하여 code scanning 경고(경고 중 CodeQL 경고 포함)에 대한 수정 사항을 자동으로 생성할 수 있습니다. 자세한 내용은 [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts#generating-suggested-fixes-for-code-scanning-alerts)을(를) 참조하세요.

라이선스 GitHub Copilot Enterprise를 사용하면 조직의 리포지토리에서 code scanning 경고를 더 잘 이해하기 위해 GitHub Copilot Chat에게 도움을 요청할 수도 있습니다. 자세한 내용은 GitHub에서 GitHub Copilot에 질문하기을(를) 참조하세요.

          code scanning 경고가 CodeQL 분석에서 발생한 경우, 보안 개요를 사용하여 조직의 다양한 리포지토리에서 끌어오기 요청이 CodeQL 수행되고 있는지를 확인하고, 조치가 요구될 수 있는 리포지토리를 식별할 수 있습니다. 자세한 내용은 [AUTOTITLE](/code-security/concepts/code-scanning/pull-request-alert-metrics)을(를) 참조하세요.

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

경고 세부 정보

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

경고 페이지에 있는 상태와 세부 정보는 경고가 다른 분기에 있는 경우에도 리포지토리의 기본 분기에 있는 경고의 상태만 반영합니다. 경고 페이지의 오른쪽에 있는 영향받는 분기 섹션에서 기본 분기가 아닌 분기에 대한 경고 상태를 볼 수 있습니다. 경고가 기본 분기에 없는 경우 경고 상태가 "끌어오기 요청 내" 또는 "분기 내"로 표시되고 회색으로 표시됩니다. Development 섹션에서는 경고를 수정할 연결된 분기 및 끌어오기 요청을 보여 줍니다.

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

경고의 영향을 받는 분기뿐만 아니라, 해당 수정 사항과 연결된 풀 리퀘스트도 확인할 수 있습니다. 이러한 방식을 통해 사용자와 팀은 경고 수정 진행 상황을 지속적으로 파악할 수 있습니다.

경고를 수정할 수 있는 풀 리퀘스트의 제목이 포함된 code scanning 경고의 “개발” 섹션 스크린샷

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

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

팀의 워크플로에서 벗어나지 않고 GitHub 수정 작업을 추적하려면 경고를 문제에 연결할 수 있습니다. 코드 검사 경고를 GitHub 문제에 연결을(를) 참조하세요.

여러 구성의 경고에 대해

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

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

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

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

          GitHub 는 애플리케이션 코드에서 찾을 수 없는 경고에 범주 레이블을 할당합니다. 레이블은 경고의 위치와 관련이 있습니다.
  • 생성됨: 빌드 프로세스에서 생성된 코드

  • 테스트: 테스트 코드

  • 라이브러리: 라이브러리 또는 타사 코드

  • 설명서: 설명서

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

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

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

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

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

참고

실험적 경고는 JavaScript에 대한 릴리스를 공개 미리 보기 사용하여 code scanning 작업에서 실험적 기술을 사용하여 제공되었습니다. 이 기능은 사용 중지됨였습니다. 자세한 내용은 CodeQLcode scanning ML 기반 경고의 사용 중단에 대한 참조를 참조하세요.

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

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

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

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

보안 심각도 수준 계산

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

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

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

끌어오기 요청의 알림 정보

          Code scanning 경고는 끌어오기 요청에 검사 결과 및 주석으로 표시될 수 있습니다. 이 문제는 리포지토리에서 발생합니다. code scanning의 경우에 해당합니다.
  • 끌어오기 요청 검사로 구성됩니다(기본적으로 기본 분기를 대상으로 하는 끌어오기 요청으로 제한됨).
  • 코드가 푸시될 때마다 검색하도록 구성됩니다(결과는 열려 있는 끌어오기 요청에 매핑됨).

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

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