Skip to main content

코드 검사 경고 정보

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

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

Code scanning는 GitHub.com의 모든 퍼블릭 리포지토리에 사용할 수 있습니다. Code scanning는 또한 GitHub Enterprise Cloud를 사용하고 GitHub Advanced Security에 대한 라이선스가 있는 조직이 소유한 프라이빗 리포지토리에서 사용할 수 있습니다. 자세한 내용은 "GitHub Advanced Security 정보"을(를) 참조하세요.

code scanning의 경고 정보

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

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

CodeQL 분석에서 code scanning 경고에 대한 수정 사항을 자동으로 생성하기 위해 GitHub Copilot Autofix를 사용할 수 있습니다. 자세한 내용은 "리포지토리에 대한 코드 검사 경고 관리"을(를) 참조하세요.

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에 대한 실험적 경고는 CodeQL 작업에서 실험 기술을 사용하는 JavaScript용 beta 릴리스에서 사용 가능했습니다. 이 기능은 sunset되었습니다. 자세한 내용은 CodeQL code scanning의 ML 기반 경고 사용 중지를 참조하세요.

경고 심각도 및 보안 심각도 수준 정보

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

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

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

code scanning 경고에 대한 끌어오기 요청 검사 실패

다음 조건 중 하나가 충족될 경우 규칙 집합을 사용하여 당겨받기 요청이 병합되지 않도록 할 수 있습니다.

  • 필수 도구가 규칙 집합에 정의된 심각도에 대한 code scanning 경고를 발견했습니다.

  • 필수 code scanning 도구의 분석이 아직 진행 중입니다.

  • 필수 code scanning 도구가 리포지토리에 대해 구성되지 않았습니다.

자세한 내용은 "코드 검사 병합 보호 설정"을(를) 참조하세요. 규칙 집합에 대한 일반적인 정보는 "규칙 세트 정보"을(를) 참조하세요.

보안 심각도 수준 계산

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

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

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