Skip to main content

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

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

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

Code scanning는 GitHub Enterprise Server의 조직 소유 리포지토리에서 사용할 수 있습니다. 이 기능을 사용하려면 GitHub Advanced Security에 대한 라이선스가 필요합니다. 자세한 내용은 "GitHub Advanced Security 정보"을(를) 참조하세요.

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

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

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

참고: GitHub Enterprise Server 3.13의 초기 릴리스에는 CodeQL 작업과 CodeQL CLI 2.16.5이(가) 포함되었는데, 여기에는 이러한 쿼리가 모두 포함되지 않을 수도 있습니다. 사이트 관리자가 CodeQL 버전을 최신 릴리스로 업데이트할 수 있습니다. 자세한 내용은 "어플라이언스에 대한 코드 검사 구성"을(를) 참조하세요.

쿼리 이름관련 CWE기본값확장Copilot Autofix
정수 추가 오버플로에 대한 잘못된 검사190, 192
잘못 바인딩된 쓰기120, 787, 805
memset 호출이 삭제될 수 있음14
루프에서 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
생성자에 안전하지 않은 사용670
포인터 산술 연산에 업캐스트 배열 사용됨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
인증서 검사 안 됨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
제어되지 않은 할당 크기의 오버플로190, 789
쓰기 오버런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
경로 식에 제어되지 않은 데이터 사용됨022, 023, 036, 073
제어되지 않은 처리 작업114
0과 비교한 부호 없는 차이 식191
종결되지 않은 가변 인자 호출121
조건에 대한 신뢰할 수 없는 입력807
잠재적으로 위험한 함수 사용676