본 글은 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 |