Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
codeql-workshop — CVE-2024-32022を検出するクエリを作成して、Python向けCodeQLの最初の一歩を踏み出す | Kitploit
ツール/GitHubGitHub/sylwia-budzynska/codeql-workshop
静的分析脆弱性分析コード分析学習と教育厳選リソース学習パスとコースラボと実践
GitHubsylwia-budzynska/codeql-workshop

codeql-workshop

CVE-2024-32022を検出するクエリを作成して、Python向けCodeQLの最初の一歩を踏み出す

リポジトリを見る
128157日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CodeQL を使用した脆弱性の発見

元のワークショップ: Sylwia Budzynska

前提条件 • リソース • ワークショップ

  • 対象者: セキュリティエンジニア、セキュリティ研究者、開発者。
  • 学べること: コード探索とセキュリティ問題の発見に CodeQL を使用する方法を学びます。
  • 作成するもの: セキュリティアドバイザリに基づく CodeQL クエリを作成して、コマンドインジェクションを発見します。

📣 前提条件

ワークショップの演習を実行するには、次の2つのオプションから選択できます:

  • オプション A: ローカルインストール (VS Code を使用 - CodeQL はお使いのマシン上でローカルに実行されます)
  • オプション B: GitHub Codespace (ブラウザまたは VS Code を使用 - CodeQL はクラウド内の Linux ベースの GitHub Codespace 上でリモート実行されます)

オプション A: ローカルインストール

ローカルの CodeQL インストールを使用して、ワークショップの演習に取り組みます。

前提条件

  • Visual Studio Code (VS Code) と git がローカルマシンにインストールされていること。

手順

  1. VS Code 用 CodeQL 拡張機能 をインストールします。
  2. ターミナルで次を実行します:```bash git clone https://github.com/sylwia-budzynska/codeql-workshop cd codeql-workshop git submodule init git submodule update --recursive --depth 1

Download CodeQL databases

curl -L -O "https://github.com/sylwia-budzynska/codeql-workshop/releases/download/v1/test-app-db.zip" curl -L -O "https://github.com/sylwia-budzynska/codeql-workshop/releases/download/v1/kohya_ss-db.zip"

3. VS Code で: ファイル -> **ワークスペースをファイルから開く...** を選択し、`vscode-codeql-starter.code-workspace` を開きます。
4. 次に [CodeQL データベースの選択](#select-codeql-database) に進みます。
5. その後 [インストールのテスト](#test-your-installation) を行います。

### オプション B: GitHub Codespace

リモートの GitHub Codespace を使用して、ワークショップの演習に取り組みます。

#### 前提条件

* GitHub アカウント ([無料登録](https://github.com/))
* ブラウザー(ワークショップ全体をブラウザーだけで行えます。これが最速のセットアップです)または、ローカルマシンに [GitHub Codespaces](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) 拡張機能がインストールされた [Visual Studio Code](https://code.visualstudio.com/download) (VS Code)。

注: Codespace の使用は、コアあたり月間 120 時間まで無料です。このワークショップでは、無料アカウントの現在の最大コア数である 4 コアの Codespace を使用します。(Pro アカウントをお持ちの場合は、8 コアのマシンに切り替えることをお勧めします。)

#### 手順

1. [GitHub](https://github.com/login) アカウントにログインします。
2. リポジトリ https://github.com/sylwia-budzynska/codeql-workshop に移動します。
3. Code -> Codespaces をクリックします。
4. プラス記号 (+) をクリックして、新しい Codespace を作成します。

<img src="https://assets.kitploit.com/production/public/readmes/33098/c86e537f9e7891fb6bdb5da727cae5b6ad0b2c9ac94f67854d48296f2dad89cb.png"  width="439" alt="Screenshot: Create Codespace, click on plus">

VS Code がブラウザーで起動し、リモートの Codespace が構築されます。これには数分かかる場合があります。
ワークスペース `vscode-codeql-starter.code-workspace` を開くように求められたら、"Open Workspace" をクリックします。

5. ローカルで VS Code を使用する場合は、左上隅の三本線ボタンを押して、"Open VS Code Desktop" を選択します。このオプションが表示されるまでに数分かかる場合があります。

<img src="https://assets.kitploit.com/production/public/readmes/33098/f2c8c2fe6da80142344b17c208da31a23c3fa68a3917a124f0e2f7871b6a20f7.png" width="300" alt="Screenshot: Press the three lines button and Open in VS Code Desktop">

6. 次に [CodeQL データベースの選択](#select-codeql-database) に進みます。
7. その後 [インストールのテスト](#test-your-installation) を行います。

Codespace は [github.com/codespaces](https://github.com/codespaces) で確認できます。Codespace は数時間使用しないと自動的に停止しますが、無料の 120 時間を追加で消費しないようにするため、ワークショップ終了後は [github.com/codespaces](https://github.com/codespaces) > 三点リーダー > "Stop codespace" の順に操作して停止することを忘れないでください。

#### インストールのトラブルシューティング

次のようなエラーが表示された場合:
* `Failed to run query: Could not resolve library path for [..]`
* `Could not resolve module [..]`
* `Could not resolve type [..]`

git サブモジュール(具体的には ql リポジトリ)のクローンを忘れている可能性が高いです。これを修正するには、`git submodule init && git submodule update --recursive` を実行します。

### CodeQL データベースの選択

1. VS Code でワークスペース `vscode-codeql-starter.code-workspace` が開いていることを確認します。
2. 左側のタブペインにある "QL" アイコンをクリックして、CodeQL ビューに移動します。
3. "Choose Database from Archive" をクリックし、リポジトリのルートにある `test-app-db.zip` ファイルを選択します。
   注: この時点で、VSCode に CodeQL CLI のインストールを求めるポップアップエラーが表示される場合があります。このインストールを受け入れると問題が解決するはずです。CLI のインストールが完了したら、上記のデータベース選択を完了できるようになります。
   <img src="https://assets.kitploit.com/production/public/readmes/33098/65cc5790b8b49113623bc9a9b34a1be61575b05bea2428c46f83115e2271148b.png"  alt="Screenshot: VSCode error msg re. CodeQL">
   <img src="https://assets.kitploit.com/production/public/readmes/33098/c3bf9c304d9c1f6199f591c9bcbf6e446ee4f5388ab209e30887326698129f84.png"  alt="Screenshot: VSCode installing CodeQL CLI">

### インストールのテスト

#### 前提条件

以前に選択した CodeQL データベースが CodeQL ビューで選択されていることを確認します。(選択されていない場合は "Select" をクリックします)

データベースが選択されると、次のようになります(チェックマークに注目):

<img src="https://assets.kitploit.com/production/public/readmes/33098/fee6e47c0d9b0754c7ac9e29e2f0b3a721093aa5ce882615b3839a99f4862506.png"  alt="Screenshot: CodeQL Database selected">

#### 手順

1. VS Code で、ワークスペースフォルダー `codeql-custom-queries-python` に移動します。
2. 新しいファイル `test.ql` を作成します。
3. 次の内容を追加します: `select "Hello World!"`
4. ファイルを保存し、ファイル領域で右クリックして "CodeQL: Run Query on Selected Database" を選択します。
5. 結果 "Hello World!" が表示された新しいタブが開くはずです。

## :books: リソース

- [QL チュートリアル](https://codeql.github.com/docs/writing-codeql-queries/ql-tutorials/)
- [Python 向け CodeQL 言語ガイド](https://codeql.github.com/docs/codeql-language-guides/codeql-for-python/)
- [CodeQL ドキュメント](https://codeql.github.com/docs/)
- [QL 言語リファレンス](https://codeql.github.com/docs/ql-language-reference/)
- [Python 向け CodeQL ライブラリ](https://codeql.github.com/codeql-standard-libraries/python/)
- [Python コードの基本クエリ](https://codeql.github.com/docs/codeql-language-guides/basic-query-for-python-code/)
- [QL クラス](https://codeql.github.com/docs/ql-language-reference/types/#classes)
- [CodeQL zero to hero パート1: 脆弱性調査のための静的解析の基礎](https://github.blog/2023-03-31-codeql-zero-to-hero-part-1-the-fundamentals-of-static-analysis-for-vulnerability-research/)
- [CodeQL zero to hero パート2: CodeQL 入門](https://github.blog/2023-06-15-codeql-zero-to-hero-part-2-getting-started-with-codeql/)
- [CodeQL zero to hero パート3: セキュリティ調査](https://github.blog/2024-04-29-codeql-zero-to-hero-part-3-security-research-with-codeql/)
- [CodeQL zero to hero パート4: Gradio のケーススタディ](https://github.blog/security/vulnerability-research/codeql-zero-to-hero-part-4-gradio-framework-case-study/)
- [CodeQL zero to hero パート5: クエリのデバッグ](https://github.blog/security/vulnerability-research/codeql-zero-to-hero-part-5-debugging-queries/)

## ワークショップ

ワークショップ「CodeQL で脆弱性を見つける」へようこそ!

このセッションでは、ソフトウェアの脆弱性を探す際に使用されるセキュリティ調査と静的解析の基礎を紹介します。単純な脆弱性の例を使用し、CodeQL がそれをどのように検出できるかを説明し、参加者が CodeQL を使って自分自身で脆弱性を見つける方法の例を提供します。

始める前に、ワークショップに参加できるように、すべての前提条件が満たされていることが重要です。

ワークショップは複数のセクションに分かれており、各セクションは最終的なクエリに至るまでの演習で構成されています。
各セクションでは、使用できる QL クラスとメンバー述語への参照を提供する *ガイドライン* を用意しており、演習を完了するのに役立ちます。

### 概要

このワークショップでは、[kohya_ss](https://securitylab.github.com/advisories/GHSL-2024-019_GHSL-2024-024_kohya_ss/) における既知の *コマンドインジェクションの脆弱性* を探します。このような脆弱性は、ユーザーが制御する情報が、コマンドを安全でない方法で構築して実行するアプリケーションコードに到達したときに発生する可能性があります。ユーザー入力から安全でない方法で構築されたコマンドは、任意のコマンド実行や機密情報の開示などの意図しない動作を実行するように書き換えられる可能性があります。

このワークショップで説明するコマンドインジェクションは、[CVE-2024-32022、CVE-2024-32026、CVE-2024-32025、CVE-2024-32027](https://securitylab.github.com/advisories/GHSL-2024-019_GHSL-2024-024_kohya_ss/) です。

## 理論

### ソースとシンク

最もよく知られている脆弱性の 1 つであるコマンドインジェクションについて考えてみましょう。これは、ユーザー入力が、サーバー上で直接シェルでコマンドを実行できる関数で使用された場合に発生します。これにより、攻撃者はアプリケーションを実行しているサーバー上でオペレーティングシステム (OS) コマンドを実行でき、通常はアプリケーションとそのデータを完全に侵害します。

インジェクション脆弱性の主な原因は、信頼できないユーザー制御の入力が、プログラムの機密性の高い、または危険な関数で使用されることです。これを静的解析で表現するために、データフロー、ソース、シンクなどの用語を使用します。

ユーザー入力は一般に、アプリケーションへのエントリポイント、つまりデータの発生源から取得されます。これには、GET や POST などの HTTP メソッドのパラメータや、プログラムへのコマンドライン引数が含まれます。これらは「**ソース**」と呼ばれます。
ツールをダウンロード