Security & Hacking

CodeQL

zeroone-kr 2025. 2. 11. 17:01

 

본 글은 CodeQL의 입문자들에게 도움이 되고자 정리한 글입니다.

 

[1] Database

1.1) 다양한 분석 지원

codeql에서는 data flow anlaysis, control flow analysis, taint anlaysis, range anlaysis를 수행할 수 있다. 와...

database에는 abastrct syntax tree, data flow graph, control flow graph를 포함하고 있다. 
언어별로 다른 scheme을 지원하니 걱정하지말고 사용하자

 

1.2) 라이브러리 지원

Declaration, Statement , Expression, Type, Preprocessor class들을 지원
기본적으로, library(.qll)들은 stmt, expr 두 클래스들을 base로 구현

 

[2] Metadata

metadata가 쿼리 결과를 어떻게 표시하는지 지정할 수 있으니까, 쿼리할때 명확히 작성해주는 것이 좋다.

 

[3] 다양한 결과 포맷 지원

query result는 다양한 파일 형식으로 뽑을 수 있다.

 

[4] 학습법

class, predicate, module은 코드 보면 느낌이 뽝 온다.
predicate을 정의하기 위해서는 논리
근데, 딱 봐도 느낌이 제대로 안오는게 몇 개 있음

predicate의 집합이 class이고, 
class의 집합이 module이다.  
즉, predicate부터 잘 정의할 줄 알아야 뭔가를 만들 수 있다.
그런데, predicate의 body는 formula로 정의된다.
따라서, 뭔가를 만들려면, formula부터 알아야한다.

4.1) instanceof
4.2) exists
4.3) in
4.4) forall
4.5) forex

 


SSA, CFG
https://codeql.github.com/docs/codeql-language-guides/detecting-a-potential-buffer-overflow/

'Security & Hacking' 카테고리의 다른 글

Android Security - exported 편  (0) 2025.02.16
command injection  (0) 2025.02.11
00_angr_find  (0) 2025.02.10
angr 핵심 개념  (0) 2025.02.10
SSL Stripping  (0) 2025.02.10