CodeQL ํฉ ์ ๋ณด
์ฐธ๊ณ ํญ๋ชฉ
์ด ๋ฌธ์์์๋ CodeQL CLI 2.20.7 ๋ฒ๋ค์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ GitHub Enterprise Server 3.17์ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋์ด ์์ต๋๋ค.
์ฌ์ดํธ ๊ด๋ฆฌ์๊ฐ CodeQL CLI ๋ฒ์ ์ ์ต์ ๋ฆด๋ฆฌ์ค๋ก ์ ๋ฐ์ดํธํ ๊ฒฝ์ฐ ์ต์ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด ๋ฌธ์์ GitHub Enterprise Cloud ๋ฒ์ ์ ์ฐธ์กฐํ์ธ์.
CodeQL ํฉ์ CodeQL ์ฟผ๋ฆฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ๊ณต์ ํ๊ณ , ์ฌ์ฉํ๊ณ , ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. CodeQL ํฉ์๋ ์ฟผ๋ฆฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ, ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ง๋ ํฉ์ ๋ค์ด๋ก๋ํ๊ณ ์ฝ๋๋ฒ ์ด์ค์์ ์คํํ์ฌ CodeQL ๋ถ์์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
CodeQL ํฉ์๋ ์ฟผ๋ฆฌ ํฉ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉ, ๋ชจ๋ธ ํฉ์ ์ธ ์ ํ์ด ์์ต๋๋ค.
-
์ฟผ๋ฆฌ ํฉ์๋ CodeQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ๊ฐํ ์ ์๋ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ์ฟผ๋ฆฌ ์งํฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ฟผ๋ฆฌ ํฉ์ ์คํ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฟผ๋ฆฌ ํฉ์ด ๊ฒ์๋๋ฉด ๋ฒ๋ค์ ์ฟผ๋ฆฌ ์๋ณธ ์ธ์๋ ๊ฐ ์ฟผ๋ฆฌ์ ๋ชจ๋ ์ ์ด์ ์ข ์์ฑ๊ณผ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํํ์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํฉ์์ ์ฟผ๋ฆฌ๋ฅผ ์ผ๊ด๋๊ณ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉ์ ์ฟผ๋ฆฌ ํฉ(๋๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉ)์์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ ์ฟผ๋ฆฌ ์์ฒด๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณ๋๋ก ์ปดํ์ผ๋์ง ์์ต๋๋ค.
-
code scanning ๋ถ์์ ํ์ฅํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ธ์ํ๋ ๋ฐ ๋ชจ๋ธ ํฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ธ ํฉ์ ํ์ฌ ๊ณต๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ์ ์ด๋ฉฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๊ณต๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์ ๋ชจ๋ธ ํฉ์ C/C++, C#, Java/Kotlin, Python, Ruby ๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ ๋ง์ ๋ชจ๋ธ ํฉ์ ๋ง๋๋ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๋ง๋ค๊ธฐ ๋ฐ ์์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ง์๋๋ ๋ชจ๋ ์ธ์ด์ ๋ํ ํ์ค CodeQL ํฉ์ด Container registry์ ๊ฒ์๋ฉ๋๋ค. CodeQL CLI๋ฅผ ํ์ค ๋ฐฉ์์ผ๋ก ์ค์นํ ๊ฒฝ์ฐ CodeQL CLI ๋ฒ๋ค์ ์ฌ์ฉํ์ฌ ํต์ฌ ์ฟผ๋ฆฌ ํฉ์ ์ด๋ฏธ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
codeql/cpp-queries
codeql/csharp-queries
codeql/go-queries
codeql/java-queries
codeql/javascript-queries
codeql/python-queries
codeql/ruby-queries
codeql/swift-queries
CodeQL CLI๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด CodeQL ํฉ์ ๋ง๋ค๊ณ , ํฉ์ ์ข ์์ฑ์ ์ถ๊ฐํ๊ณ , ์ข ์์ฑ์ ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๋ง๋ค๊ธฐ ๋ฐ ์์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
CodeQL CLI์ ์ฌ์ฉํ์ฌ ๋ง๋ CodeQL ํฉ์ ๊ฒ์ํ ์ ์์ต๋๋ค. CodeQL ํฉ ๊ฒ์ ๋ฐ ๋ค์ด๋ก๋์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๊ฒ์ ๋ฐ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
CodeQL ์ฟผ๋ฆฌ ํฉ ๋ค์ด๋ก๋ ๋ฐ ์ฌ์ฉ
CodeQL CLI ๋ฒ๋ค์๋ GitHub ์ ๋ฌธ๊ฐ, ๋ณด์ ์ฐ๊ตฌ์ ๋ฐ ์ปค๋ฎค๋ํฐ ๊ธฐ์ฌ์๋ค์ด ์ ์ง ๊ด๋ฆฌํ๋ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ค๋ฅธ ์กฐ์ง์์ ๊ฐ๋ฐํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ ๊ฒฝ์ฐ, CodeQL ์ฟผ๋ฆฌ ํฉ์ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ํจ์จ์ ์ด๊ณ ์์ ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์คํํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ธ ํฉ(๊ณต๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ)์ ์ฌ์ฉํ๋ฉด code scanning ๋ถ์์ ํ์ฅํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ธ์ํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ํฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL์ ์ฌ์ฉํ๋ ์ฝ๋ ๊ฒ์ฌ ์๋ด์(๋ฅผ) ์ฐธ์กฐํ์ธ์. ์์ฒด ๋ชจ๋ธ ํฉ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๋ง๋ค๊ธฐ ๋ฐ ์์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
CodeQL ์ฟผ๋ฆฌ ํฉ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ๋ ค๋ฉด GitHub Container registry์์ ํ์ํ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ์ด ์์
์ codeql database analyze
๋ช
๋ น์์ --download
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ codeql pack download
๋ฅผ ์คํํ์ฌ ์ํํ ์ ์์ต๋๋ค. ํจํค์ง๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ GitHub App ๋๋ personal access token์ ์ฌ์ฉํ์ฌ ์ธ์ฆํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ๊ณผ ์์ ๋ GitHub์ CodeQL ๋ถ์ ๊ฒฐ๊ณผ ์
๋ก๋์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ต์ | ํ์ | ์ฌ์ฉ |
---|---|---|
<scope/name@version:path> | ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ ์ฌ์ฉํ์ฌ ๋ค์ด๋ก๋ํ ํ๋ ์ด์์ CodeQL ์ฟผ๋ฆฌ ํฉ์ ๋ฒ์์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ๋ค์ด๋ก๋ํ๊ณ ์์ถ์ ํ ๋ฒ์ ์ ํฌํจ์ํต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ํฉ์ ์ต์ ๋ฒ์ ์ด ๋ค์ด๋ก๋๋ฉ๋๋ค. ํ์์ ๋ฐ๋ผ ์คํํ ์ฟผ๋ฆฌ, ๋๋ ํฐ๋ฆฌ ๋๋ ์ฟผ๋ฆฌ ๋ชจ์์ ๊ฒฝ๋ก๋ฅผ ํฌํจ์ํต๋๋ค. ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด ์ด ํฉ์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. | |
--github-auth-stdin | ํ์ค ์
๋ ฅ์ ํตํด ๋น๋ฐ ์ ์ฅ์์์ GitHub์ REST API๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์ํด ๋ง๋ GitHub App ๋๋ personal access token์(๋ฅผ) CLI์ ์ ๋ฌํฉ๋๋ค. ๋ช
๋ น์ด ์ด ํ ํฐ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ GITHUB_TOKEN ํ๊ฒฝ ๋ณ์์ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ด ํญ๋ชฉ์ด ํ์ํ์ง ์์ต๋๋ค. |
์ฐธ๊ณ ํญ๋ชฉ
์ฌ์ฉํ ํน์ ๋ฒ์ ์ ์ฟผ๋ฆฌ ํฉ์ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ง์ ํ ๋ฒ์ ์ด ๋๋ฌด ์ค๋๋์ด ์ต์ ๋ฒ์ ์ CodeQL์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ ์ ์์ต๋๋ค. ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ค๋ฉด ์ ํํ ์ฟผ๋ฆฌ ํฉ ๋ฒ์ ์ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ ์ค์ธ CodeQL CLI๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ๋๋ง๋ค ๊ณ ์ ํ ๋ฒ์ ์ ๋ค์ ํ๊ฐํด์ผ ํฉ๋๋ค.
ํฉ ํธํ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๊ฒ์ ๋ฐ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฟผ๋ฆฌ ํฉ ๋ค์ด๋ก๋ ๋ฐ ์ฌ์ฉ์ ๊ธฐ๋ณธ ์
์ด ์์ ์์๋ codeql database analyze
๋ช
๋ น์ ์คํํ๊ณ --download
์ต์
์ ์ ํํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.
- ์ต์ ๋ฒ์ ์
octo-org/security-queries
ํฉ์ ๋ค์ด๋ก๋ํฉ๋๋ค. - ๋ฒ์ 1.0.1๊ณผ _ํธํ_๋๋
octo-org/optional-security-queries
ํฉ ๋ฒ์ (์ด ์์ ์์๋ ๋ฒ์ 1.0.2)์ ๋ค์ด๋ก๋ํฉ๋๋ค. semver ํธํ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ npm์ ์๋ฏธ ์ฒด๊ณ ๋ฒ์ ๋ฒ์ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์. octo-org/security-queries
์์ ๋ชจ๋ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.octo-org/optional-security-queries
์์queries/csrf.ql
์ฟผ๋ฆฌ๋ง ์คํํฉ๋๋ค.
$ echo $OCTO-ORG_ACCESS_TOKEN | codeql database analyze --download /codeql-dbs/example-repo \
octo-org/security-queries \
octo-org/optional-security-queries@~1.0.1:queries/csrf.ql \
--format=sarif-latest --output=/temp/example-repo-js.sarif
> Download location: /Users/mona/.codeql/packages
> Installed fresh octo-org/security-queries@1.0.0
> Installed fresh octo-org/optional-security-queries@1.0.2
> Running queries.
> Compiling query plan for /Users/mona/.codeql/packages/octo-org/security-queries/1.0.0/potential-sql-injection.ql.
> [1/2] Found in cache: /Users/mona/.codeql/packages/octo-org/security-queries/1.0.0/potential-sql-injection.ql.
> Starting evaluation of octo-org/security-queries/query1.ql.
> Compiling query plan for /Users/mona/.codeql/packages/octo-org/optional-security-queries/1.0.2/queries/csrf.ql.
> [2/2] Found in cache: /Users/mona/.codeql/packages/octo-org/optional-security-queries/1.0.2/queries/csrf.ql.
> Starting evaluation of octo-org/optional-security-queries/queries/csrf.ql.
> [2/2 eval 694ms] Evaluation done; writing results to octo-org/security-queries/query1.bqrs.
> Shutting down query evaluator.
> Interpreting results.
CodeQL ํฉ ์ง์ ๋ค์ด๋ก๋
CodeQL ํฉ์ ์ฆ์ ์คํํ์ง ์๊ณ ๋ค์ด๋ก๋ํ๋ ค๋ฉด codeql pack download
๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ธํฐ๋ท์ ์ก์ธ์คํ์ง ์๊ณ CodeQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ์ ์ฉํฉ๋๋ค. CodeQL ๋ถ์์ ์คํํ๋ ๊ฒฝ์ฐ ์ด์ ์์ ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ํฉ, ๋ฒ์ ๋ฐ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
echo $OCTO-ORG_ACCESS_TOKEN | codeql pack download <scope/name@version:path> <scope/name@version:path> ...
์ฌ๋ฌ GitHub ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์์ CodeQL ํฉ ๋ค์ด๋ก๋
CodeQL ํฉ์ด ์ฌ๋ฌ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ CodeQL CLI์ ๊ฐ ํฉ์ ์ฐพ์ ์์น๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝ๋ ๊ฒ์์ ์ํ ๊ณ ๊ธ ์ค์ ์ฌ์ฉ์ ์ง์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
CodeQL ํฉ์์ ์คํํ ์ฟผ๋ฆฌ ์ง์
์ฟผ๋ฆฌ ์ง์ ์๋ codeql database analyze
๋ฐ ์ฟผ๋ฆฌ ์งํฉ์์ ์๋ํ๋ ๊ธฐํ ๋ช
๋ น์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ง์ ์์ ์ ์ฒด ํ์์ scope/name@range:path
์
๋๋ค. ์ฌ๊ธฐ์์:
scope/name
(์)๋ CodeQL ํฉ์ ์ ๊ทํ๋ ์ด๋ฆ์ ๋๋ค.range
(์)๋ semver(์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ) ๋ฒ์์ ๋๋ค.path
๋ ๋จ์ผ ์ฟผ๋ฆฌ, ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ ๋๋ ํฐ๋ฆฌ ๋๋ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์ ํ์ผ์ ๋ํ ํ์ผ ์์คํ ๊ฒฝ๋ก์ ๋๋ค.
scope/name
(์)๋ฅผ ์ง์ ํ๋ฉด range
๋ฐ path
(์)๋ ์ ํ ์ฌํญ์
๋๋ค. range
์(๋ฅผ) ์๋ตํ๋ฉด ์ง์ ๋ ํฉ์ ์ต์ ๋ฒ์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. path
(์)๋ฅผ ์๋ตํ๋ฉด ์ง์ ๋ ํฉ์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
path
๋ .ql
์ฟผ๋ฆฌ ํ์ผ, ํ๋ ์ด์์ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ ๋๋ ํฐ๋ฆฌ ๋๋ .qls
์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์ ํ์ผ ์ค ํ๋๊ฐ ๋ฉ๋๋ค. ํฉ ์ด๋ฆ์ ์๋ตํ๋ฉด ํ์ฌ ํ๋ก์ธ์ค์ ์์
๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์๋๋ path
(์)๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. Glob ํจํด์ ์ง์๋์ง ์์ต๋๋ค.
scope/name
๊ณผ path
๋ฅผ ๋ชจ๋ ์ง์ ํ๋ฉด path
๋ ์ ๋๊ฐ์ด ๋ ์ ์์ต๋๋ค. CodeQL ํฉ์ ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ ๋ ค๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ง์ ์ ์
-
codeql/python-queries
-codeql/python-queries
ํฉ ์ต์ ๋ฒ์ ์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
codeql/python-queries@1.2.3
-codeql/python-queries
ํฉ ๋ฒ์ 1.2.3
์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
codeql/python-queries@~1.2.3
-codeql/python-queries
ํฉ ์ต์ ๋ฒ์ (1.2.3
์ด์1.3.0
๋ฏธ๋ง)์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
codeql/python-queries:Functions
-codeql/python-queries
ํฉ ์ต์ ๋ฒ์ ์ ์๋Functions
๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
codeql/python-queries@1.2.3:Functions
-codeql/python-queries
ํฉ ๋ฒ์ 1.2.3์Functions
๋๋ ํฐ๋ฆฌ์ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
codeql/python-queries@1.2.3:codeql-suites/python-code-scanning.qls
-codeql/python-queries
ํฉ ๋ฒ์ 1.2.3์codeql-suites/python-code-scanning.qls
๋๋ ํฐ๋ฆฌ์ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค. -
suites/my-suite.qls
- ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋suites/my-suite.qls
ํ์ผ์ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋๋ค.
ํ
ํ์ค CodeQL ์ฟผ๋ฆฌ ํฉ์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ codeql-suites/<lang>-code-scanning.qls
์
๋๋ค. ๋ค๋ฅธ ๋ช ๊ฐ์ง ์ ์ฉํ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ๊ฐ ํฉ์ codeql-suites
๋๋ ํฐ๋ฆฌ์์๋ ์ฐพ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด codeql/cpp-queries
ํฉ์๋ ๋ค์ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ด ํฌํจ๋ฉ๋๋ค.
cpp-code-scanning.qls
- C++์ฉ ํ์ค ์ฝ๋ ๊ฒ์ฌ ์ฟผ๋ฆฌ์ ๋๋ค. ์ด ํฉ์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ๋๋ค.- C++์ฉ
cpp-security-extended.qls
๊ธฐ๋ณธ ์ ํ๊ตฐ์ ์ฟผ๋ฆฌcpp-code-scanning.qls
์ ๋ฎ์ ์ฌ๊ฐ๋, ์ ๋ฐ๋ ์ฟผ๋ฆฌ์ ๋๋ค. cpp-security-and-quality.qls
-cpp-security-extended.qls
์ ์ฟผ๋ฆฌ์ ์ ์ง ๊ด๋ฆฌ ๊ธฐ๋ฅ ๋ฐ ์์ ์ฑ ์ฟผ๋ฆฌ์ ๋๋ค.
CodeQL ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ด๋ฌํ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์์ ์๋ณธ์ ๋ณผ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ธ์ด์ ์ฟผ๋ฆฌ ๋๊ตฌ ๋ชจ์๋ ๋น์ทํฉ๋๋ค.
๋ชจ๋ธ ํฉ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์ข ์์ฑ ํธ์ถ ๋ถ์
code scanning ๋ถ์์ ๊ฒ์๋ ๋ชจ๋ธ ํฉ์ --model-packs
์ต์
๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์:
$ codeql database analyze /codeql-dbs/my-company --format=sarif-latest \
--model-packs my-repo/my-java-model-pack \
--output=/temp/my-company.sarif codeql/java-queries
์ด ์์์ ํ์ค ์ฟผ๋ฆฌ ํฉ codeql/java-queries
์ ๊ด๋ จ ์ฟผ๋ฆฌ๋ ๋ชจ๋ธ ํฉ my-repo/my-java-model-pack
์ ์ข
์์ฑ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ข
์์ฑ์ ํธ์ถํ๋ ์ฝ๋์ ์ทจ์ฝ์ฑ์ ํ์ธํฉ๋๋ค.
์ฌ๋ฌ ๋ฒ ๊ฒ์๋ ๋ชจ๋ธ ํฉ์ ๋ถ์์์ ์ง์ ํ ์ ์์ต๋๋ค.
์์ฒด ๋ชจ๋ธ ํฉ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ CodeQL ํฉ ๋ง๋ค๊ธฐ ๋ฐ ์์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ฒ์๋ ํฉ ์ ๋ณด
ํฉ์ด ๋ถ์์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฒ์๋๋ฉด codeql pack create
๋๋ codeql pack publish
๋ช
๋ น์ ์ฝํ
์ธ ๊ฐ ์๋ฃ๋์๋์ง ํ์ธํ๊ณ ์ฝํ
์ธ ์ ์ผ๋ถ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
-
์ฟผ๋ฆฌ ํฉ์ ๊ฒฝ์ฐ ํด๋น ์ฟผ๋ฆฌ ํฉ์ด ๊ฐ๋ฐ๋ ์ ํํ ๋ฒ์ ์ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉ์ ๋ณต์ฌ๋ณธ์ ๋๋ค. ์ฟผ๋ฆฌ ํฉ ์ฌ์ฉ์๋ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฉ์ ๋ณ๋๋ก ๋ค์ด๋ก๋ํ ํ์๊ฐ ์์ต๋๋ค.
-
์ฟผ๋ฆฌ ํฉ์ ๊ฒฝ์ฐ ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ปดํ์ผํ ํํ์ ๋๋ค. ๊ฐ ๋ถ์์์ ์ฟผ๋ฆฌ์ ๋ํ QL ์๋ณธ์ ์ปดํ์ผํ๋ ๊ฒ๋ณด๋ค ์คํํ๋ ๊ฒ์ด ๋ ๋น ๋ฆ ๋๋ค.
์ด ๋ฐ์ดํฐ์ ๋๋ถ๋ถ์ ๊ฒ์๋ ํฉ์ .codeql
๋๋ ํฐ๋ฆฌ์ ์์ง๋ง ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ์ฟผ๋ฆฌ๋ ๊ฐ ์ฟผ๋ฆฌ์ .ql
์๋ณธ ์์ .qlx
์ ๋ฏธ์ฌ๊ฐ ์๋ ํ์ผ์ ์์ต๋๋ค. ๊ฒ์๋ ํฉ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ ๋ CodeQL์ .ql
์๋ณธ ๋์ ์ด ํ์ผ์ ๋ก๋ํฉ๋๋ค. ๊ฒ์๋ ํฉ์ ์ฝํ
์ธ ๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ .ql
ํ์ผ์ ์์ ์ด ์ ์ฉ๋์ง ์๊ฒ ํ ์ ์์ผ๋ฏ๋ก .qlx
ํ์ผ์ ๋ชจ๋ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.