위키득계정 ↗
기술

CodeQL

CodeQL기술
분석 기반
소스에서 추출한 데이터베이스
질의 언어
QL
주요 용도
보안 검사와 취약점 변형 탐색
사용 도구
명령행 도구와 VS Code 확장
CodeQL은 소스를 분석용 데이터베이스로 변환하고 질의를 실행해 코드의 문제를 찾는 언어와 도구 체계다. 알려진 취약점과 비슷한 패턴을 다른 코드에서도 찾거나 개발 과정의 보안 검사를 자동화하는 데 쓰인다.

코드를 질의 대상으로 만들기

먼저 소스의 구문과 의미 정보를 추출해 분석용 데이터베이스를 만든다. 이 데이터베이스는 서비스가 사용하는 업무 데이터 저장소와 목적이 다르다. 코드의 구조와 관계를 질의하기 위한 자료이며 여러 언어로 구성된 프로젝트는 언어별로 데이터베이스를 생성한다.

규칙 대신 질의로 질문하기

QL로 작성한 질의를 데이터베이스에 실행하고 결과를 해석하는 흐름이다. 제공되는 표준 질의를 사용하거나 직접 질의를 작성할 수 있다. 이미 발견한 취약점의 특징을 질의로 표현한 뒤 비슷한 문제가 다른 코드에도 있는지 찾는 변형 분석에 활용한다.

도구와 라이브러리의 구분

명령행 도구와 편집기 확장을 통해 질의를 실행할 수 있다. 공개 저장소의 표준 라이브러리와 질의는 분석 엔진을 포함하는 명령행 도구와 구분된다. 따라서 저장소가 공개되어 있다는 사실만으로 모든 구성 요소의 이용 조건이 같다고 판단해서는 안 된다.

관련 문서

Infer 정적 분석 / Semgrep / Coccinelle / 컴파일러