Skip to main content

CodeQL 분석을 위한 C 및 C++ 쿼리

          `default` 또는 `security-extended` 쿼리 도구 모음을 선택할 때 CodeQL에서 C 또는 C++로 작성된 코드를 분석하는 데 사용하는 쿼리를 탐색합니다.

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

CodeQL은(는) 다음 리포지토리 유형에 사용할 수 있습니다.

  • GitHub.com의 퍼블릭 리포지토리, GitHub CodeQL 사용 약관 참조
  • GitHub Team가 활성화된 GitHub Enterprise Cloud 또는 GitHub Code Security의 조직 소유 리포지토리

CodeQL에는 C 및 C++ 코드를 분석하기 위한 여러 쿼리가 포함되어 있습니다. default 쿼리 도구 모음의 모든 쿼리는 기본적으로 실행됩니다. security-extended 쿼리 도구 모음을 사용하도록 선택하면 추가 쿼리가 실행됩니다. 자세한 내용은 CodeQL 쿼리 도구 모음을(를) 참조하세요.

C 및 C++ 분석을 위한 기본 제공 쿼리

이 표에는 CodeQL 작업과 CodeQL CLI의 최신 릴리스에서 사용할 수 있는 쿼리가 나열되어 있습니다. 자세한 내용은 CodeQL 설명서 사이트에서 CodeQL 변경 로그를 참조하세요.

쿼리 이름관련 CWE 목록기본값확장코파일럿 자동 수정
정수 추가 오버플로에 대한 잘못된 검사190, 192
잘못 바인딩된 쓰기120, 787, 805
[
          `memset` 호출이 삭제될 수 있음](https://codeql.github.com/codeql-query-help/cpp/cpp-memset-may-be-deleted/) | 014 | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg> |

| 루프에서 alloca 호출 | 770 | | | | | 선언된 매개 변수보다 인수가 적은 함수 호출 | 234, 685 | | | | | HRESULT와 불리언 형식 간의 캐스팅 | 253 | | | | | char에서 wchar_t로 캐스팅 | 704 | | | | | 교차 사이트 스크립팅에 취약한 CGI 스크립트 | 079 | | | | | 파일에 중요한 정보의 일반 텍스트 저장 | 260, 313 | | | | | 중요한 정보의 일반 텍스트 전송 | 319, 359 | | | | | 루프 조건에서 좁은 형식과 넓은 형식 비교 | 190, 197, 835 | | | | | 'cin'의 위험한 사용 | 676 | | | | | 승인되지 않은 제어 영역에 시스템 데이터 노출 | 497 | | | | | HTTPS URL 사용 실패 | 319, 345 | | | | | O_CREAT 플래그가 있지만 모드 인수 없이 열린 파일 | 732 | | | | | 'scanf'와 유사한 함수에 대한 잘못된 반환 값 검사 | 253 | | | | | 만료된 컨테이너에 대한 이터레이터 | 416, 664 | | | | | 쓰기 오버런 가능성 있음 | 120, 787, 805 | | | | | new/free 또는 malloc/delete 일치하지 않음 | 401 | | | | | 곱하기 결과가 큰 형식으로 변환됨 | 190, 192, 197, 681 | | | | | 0 종결자를 위한 공간 없음 | 131, 120, 122 | | | | | 포인터 오버플로 검사 | 758 | | | | | 잠재적 이중 해제 | 415 | | | | | 해제 후 잠재적 사용 가능성 | 416 | | | | | snprintf 호출 오버플로 발생 가능성 있음 | 190, 253 | | | | | 잠재적으로 안전하지 않은 strncat 호출 | 788, 676, 119, 251 | | | | | 이전 역참조로 인한 중복 null 검사 | 476 | | | | | 스택 할당 메모리 반환 | 825 | | | | | SECURITY_DESCRIPTOR에서 DACL을 NULL로 설정 | 732 | | | | | 서명된 오버플로 검사 | 128, 190 | | | | | 정적 배열 액세스로 인해 오버플로 발생 가능 | 119, 131 | | | | | sizeof를 사용한 의심스러운 추가 | 468 | | | | | 타임 오브 체크 타임 오브 유즈 파일 시스템 경합 조건 | 367 | | | | | 서식 함수에 인수가 너무 적음 | 234, 685 | | | | | 산술 식의 제어되지 않은 데이터 | 190, 191 | | | | | SQL 쿼리의 제어되지 않은 데이터 | 089 | | | | | OS 명령에 제어되지 않은 데이터 사용됨 | 078, 088 | | | | | 제어되지 않은 형식 문자열 | 134 | | | | | 생성자에서 'this'의 안전하지 않은 사용 | 670 | | | | | 0과 비교한 부호 없는 차이 식 | 191 | | | | | 포인터 산술 연산에 업캐스트 배열 사용됨 | 119, 843 | | | | | 손상되었거나 위험한 암호화 알고리즘 사용 | 327 | | | | | 키 크기가 부족한 암호화 알고리즘 사용 | 326 | | | | | Heartbleed와 함께 OpenSSL 버전 사용 | 327, 788 | | | | | 위험한 함수 사용 | 242, 676 | | | | | 만료된 스택 주소 사용 | 825 | | | | | 수명 종료 후 문자열 사용 | 416, 664 | | | | | 수명이 종료된 후 고유 포인터 사용 | 416, 664 | | | | | 서식 함수에 잘못된 형식의 인수 | 686 | | | | | XML 외부 엔터티 확장 | 611 | | | | | 범위 확인 전에 사용되는 배열 오프셋 | 120, 125 | | | | | 스푸핑을 통한 인증 우회 | 290 | | | | | boost::asio TLS 설정 잘못된 구성 | 326 | | | | | boost::asio에서 사용되지 않는 하드 코딩된 프로토콜 사용 | 327 | | | | | 메모리 액세스 함수에 대한 호출은 버퍼를 오버플로할 수 있습니다. | 119, 121, 122, 126 | | | | | 인증서 검사 안 됨 | 295 | | | | | 인증서 결과 병합 | 295 | | | | | SQLite 데이터베이스에 중요한 정보의 일반 텍스트 저장 | 313 | | | | | 버퍼에 중요한 정보의 일반 텍스트 저장 | 312 | | | | | 오해의 소지가 있는 들여쓰기 앞의 쉼표 | 1078, 670 | | | | | 권한 제한 없이 생성된 파일 | 732 | | | | | 잘못된 'not' 연산자 사용 | 480 | | | | | 잘못된 할당 오류 처리 | 570, 252, 755 | | | | | 잘못된 포인터 역참조 | 119, 125, 193, 787 | | | | | 'scanf'와 유사한 함수에 대한 반환 값 검사 누락 | 252, 253 | | | | | 비상수 형식 문자열 | 134 | | | | | 포인터 형식의 배열에 할당된 메모리 부족 | 131, 122 | | | | | 포인터 형식에 할당된 메모리 부족 | 131, 122 | | | | | CreateProcess 호출 시 따옴표가 없는 경로가 있는 NULL 응용 프로그램 이름 | 428 | | | | | 초과 작동 쓰기 | 119, 131 | | | | | 문자열 복사에서 버퍼 크기가 잘못되었을 수 있음 | 676, 119, 251 | | | | | 승인되지 않은 제어 영역에 중요한 시스템 데이터 노출 가능성 있음 | 497 | | | | | 쓰기 초과 발생 가능성 | 120, 787, 805 | | | | | 부동에서 문자열로 변환 시 쓰기 오버런 발생 가능성 있음 | 120, 787, 805 | | | | | 잠재적으로 초기화되지 않은 지역 변수 | 665, 457 | | | | | 잠재적으로 안전하지 않은 strcat 사용 | 676, 120, 251 | | | | | 의심스러운 'sizeof' 사용 | 467 | | | | | 의심스러운 포인터 크기 조정 | 468 | | | | | void로 의심스러운 포인터 크기 조정 | 468 | | | | | 형식 혼동 | 843 | | | | | 제한 없는 쓰기 | 120, 787, 805 | | | | | 제어되지 않은 할당 크기 | 190, 789 | | | | | 경로 식에 제어되지 않은 데이터 사용됨 | 022, 023, 036, 073 | | | | | 제어되지 않은 처리 작업 | 114 | | | | | 종결되지 않은 가변 인자 호출 | 121 | | | | | 조건에 대한 신뢰할 수 없는 입력 | 807 | | | | | 잠재적으로 위험한 함수 사용 | 676 | | | |