---
title: Code QLで始めるソースコードの静的解析
tags:  #code ql #静的解析 #device driver  
author: [サイエンスパークの勉強会](https://convert.docswell.com/user/study-group-spc)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/L27VGQMX7Q.jpg?width=480
description: 次のイベントの講演資料です。 https://sciencepark.connpass.com/event/246432/
published: June 17, 22
canonical: https://convert.docswell.com/s/study-group-spc/K1EY3Z-SP2206-E22
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/L27VGQMX7Q.jpg)

WDDDS 2022
Code QLで始めるソースコードの静的解析
デバイスドライバ課
SP2206-E22


# Page. 2

![Page Image](https://bcdn.docswell.com/page/Z5JG8WGRJL.jpg)

WDDDS 2022
目次
1. CodeQLとは
2. 動かしてみる
3. Queryをカスタムしてみる
4. Gihtubとの連携
5. WDKとCodeQL
6. 脆弱性あれこれ
7. まとめ


# Page. 3

![Page Image](https://bcdn.docswell.com/page/V47Q93XY7P.jpg)

WDDDS 2022
１. CodeQLとは
1.1 CodeQLはこんなやつ
 静的解析のエンジン
ツールではなく技術自体
https://codeql.github.com/docs/
 Semmleが開発
LGTMという静的解析フレームワークで使用
Microsoft傘下のGithubがSemmleを買収した
https://lgtm.com/
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/DKE4X16ZE1.jpg)

WDDDS 2022
１. CodeQLとは
1.2 なぜCodeQLなのか
 WHCPの要件になった
認証取得においてCodeQLの検査が必須になった
https://docs.microsoft.com/en-us/windowshardware/drivers/devtest/static-tools-and-codeql
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PL71NGVDEG.jpg)

WDDDS 2022
１. CodeQLとは
1.3 特徴は？
 CodeQLは静的解析のエンジン
解析手法そのもの。DBを作りこれにQueryを行うという方式が革
新的（らしい）
 OSSで解析Queryが増え続けている
独自言語で拡張可能
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/8G7W4KL8J2.jpg)

WDDDS 2022
１. CodeQLとは
1.4 CodeQLって無料？
学習や研究用途で使用する？
NO
YES
YES
OSSで使用する？
無料
NO
WHCPで使用する？
YES
NO
有料
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/W4JZ2ZM973.jpg)

WDDDS 2022
２. 動かしてみる
2.1 前提知識
 CodeQLはCLI（Comand Line Interface）を使います
 基本Stepは、DB作成→Query実行、のみ
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/KYE6VZNDJV.jpg)

WDDDS 2022
２. 動かしてみる
2.2 Microsoftの手順をやってみる
 癖がある（感想）
not foundエラーなど
 Cloneするだけのリポジトリを作ってみた！
https://github.com/mkado-spc/wddds-2022-codeql
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/5GE5DW58E4.jpg)

WDDDS 2022
２. 動かしてみる
2.3 create database
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/V9728QNV7R.jpg)

WDDDS 2022
２. 動かしてみる
2.4 analyze database
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5DJY6WPQEM.jpg)

WDDDS 2022
２. 動かしてみる
2.5 結果を確認する
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/2V7NZ95278.jpg)

WDDDS 2022
３. Queryをカスタムしてみる
3.1 Write Queryするには？
 QL languageという独自言語を使用
 suites, packs といった単位で管理できる
 言語としての学習コストはそれなりに高い！
https://codeql.github.com/docs/
https://lab.github.com/githubtraining/codeql-u-boot-challenge-(cc++)
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GYJ9Z2YDJ3.jpg)

WDDDS 2022
３. Queryをカスタムしてみる
3.2 hogeのQueryを実装してみた
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/5GJ815657D.jpg)

WDDDS 2022
３. Queryをカスタムしてみる
3.3 hogeを検出できた
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/MLJLQY937R.jpg)

WDDDS 2022
４. GitHubとの連携
4.1 Code Scanning
 CodeQLを使うならGithub
GitHub上でのCI/CDが用意されている
 ドライバでやろうとすると障壁が。。。
WDK導入必要
HLK向けは特定バージョンのCodeQLを使用が必要
https://github.com/microsoft/Windows-Driver-Developer-Supplemental-Tools
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/547M1NZMEW.jpg)

WDDDS 2022
５. WDKとCodeQL
5.1 HLKとの関係
 すでに22H2のブランチがある
https://github.com/microsoft/Windows-Driver-DeveloperSupplemental-Tools/tree/WHCP_22H2
 CodeQLのバージョンは更新していく模様
OSごとにQueryを行う環境を作らないといけない
 Queryした後にもう1Stepファイル変換！
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/ZP7RLD6L79.jpg)

WDDDS 2022
６. 脆弱性あれこれ
6.1 Log4j 問題-勃発
https://scan.netsecurity.ne.jp/article/2021/12/16/46826.html
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/NPJXW1D67X.jpg)

WDDDS 2022
６. 脆弱性あれこれ
6.2 Log4j 問題-どうなった？
 SPCにも問い合わせが続々と来ました
お宅の製品で（略
 もちろん対策済みです
最初に火がついたのが2021/12/10頃
日本で周知され始めたのが12/12～12/14頃
検知するQLが作成されたのが12/11で初版が12/14に完成！
https://github.com/github/codeql/blob/main/java/ql/src/experimental/Securi
ty/CWE/CWE-020/Log4jJndiInjection.ql
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/63JKV2XG7D.jpg)

WDDDS 2022
７. まとめ
 WHCPにはCodeQL必須
 Queryの自作はハードル高い
 OSSを効果的に活用していきましょう
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4LE3M455J5.jpg)

WDDDS2022
ご清聴ありがとうございました
20


