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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE_2026_31694 — CVE-2026-31694用のパッシブLinuxホスト脆弱性スキャナ: 実行中のカーネル、FUSE設定、パッケージメタデータ、パッチ適用の証跡をチェックし、カスタマイズされた緩和策ガイダンスを生成します。 | Kitploit
ツール/GitHubGitHub/zenzue/cve_2026_31694
防御ツール脆弱性スキャナー脆弱性分析構成監査
GitHubzenzue/cve_2026_31694

CVE_2026_31694

CVE-2026-31694用のパッシブLinuxホスト脆弱性スキャナ: 実行中のカーネル、FUSE設定、パッケージメタデータ、パッチ適用の証跡をチェックし、カスタマイズされた緩和策ガイダンスを生成します。

リポジトリを見る
31ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-31694 パッシブスキャナ

CVE-2026-31694(LinuxカーネルのFUSE readdirキャッシュにおける領域外書き込み)向けのパッシブなLinuxホスト評価ツールです。

このスキャナは、実行中のカーネル、FUSEの露出状況、ローカルのパッケージメタデータ、カーネルソースの証跡、実行環境、OSファミリーを評価します。ホストが影響を受ける可能性がある場合、検出されたディストリビューションに合わせた緩和策ガイドを生成します。

作者: Aung Myat Thu [w01f]


目次

  • 概要
  • 脆弱性概要
  • セキュリティモデル
  • 機能
  • 要件
  • インストール
  • 使用方法
  • コマンドラインオプション
  • 評価ワークフロー
  • 判定
  • 終了コード
  • 検出ソース
  • 対応ディストリビューション
  • 緩和策の生成
  • コンテナおよびWSLでの動作
  • レポート形式
  • 自動化と統合
  • 運用ガイダンス
  • 制限事項
  • トラブルシューティング
  • 参考情報

概要

cve_2026_31694_scanner.py は、ローカルで動作する非エクスプロイト型の脆弱性評価ユーティリティです。

影響を受けるFUSEコードパスを実行して脆弱性を確認するものではありません。代わりに、複数のパッシブ指標を組み合わせます。

  • 実行中のカーネルリリース;
  • 上流の修正済みバージョンのベースライン;
  • 現在のメモリページサイズ;
  • CONFIG_FUSE_FS カーネル設定;
  • 登録済みのFUSEファイルシステムタイプ;
  • /dev/fuse の存在と現在のユーザーのアクセス権;
  • FUSEマウントヘルパーの有無;
  • アクティブなFUSEマウント;
  • インストール済みカーネルソースの検査;
  • カーネルパッケージの所有関係;
  • ローカルのパッケージ変更履歴(changelog)の証跡;
  • キャッシュされたパッケージ更新メタデータ;
  • インストール済みカーネルと実行中カーネルの比較;
  • ディストリビューションとパッケージマネージャーの検出;
  • コンテナ、仮想マシン、WSLの検出。

結果はエクスプロイトに基づく証明ではなく、曝露評価です。


脆弱性概要

CVE-2026-31694 は、LinuxカーネルのFUSE readdirキャッシュに影響を与えます。

脆弱なロジックは、サーバーが制御する名前長からディレクトリエントリのシリアライズ後のサイズを計算し、そのレコードを単一のページキャッシュページにコピーします。名前長が 4095 のディレクトリエントリは、シリアライズ後のサイズが 4120 バイトになる可能性があります。

4096 バイトのページを使用するシステムでは、そのレコードは1ページを 24 バイト超えます。

上流の修正では、キャッシュコピーが行われる前に、単一のページ内に収まらないディレクトリレコードを拒否します。

影響を受けるコンポーネント```text

fs/fuse/readdir.c fuse_add_dirent_to_cache()

root@kitploit:~
### スキャナのベースラインデータ

スキャナには、以下の上流の安定版修正ベースラインが含まれています:

| カーネルシリーズ | 修正済みベースライン |
|---|---:|
| 5.10 | 5.10.258 |
| 5.15 | 5.15.209 |
| 6.1 | 6.1.175 |
| 6.6 | 6.6.136 |
| 6.12 | 6.12.84 |
| 6.18 | 6.18.25 |
| 7.0 | 7.0.2 |
| Mainline | 7.1 以降 |

これらのバージョンは評価入力の 1 つとして使用されます。ディストリビューションベンダーが修正をバックポートしつつ、より古い上流バージョン番号を維持する場合があるため、これらは唯一の情報源とは見なされません。

---

## セキュリティモデル

スキャナは、脆弱な操作を呼び出さないように設計されています。

### スキャナが行わないこと

- FUSE ファイルシステムをマウントしません。
- `/dev/fuse` を開いたり通信したりしません。
- FUSE サーバを起動しません。
- 細工されたディレクトリレコードを送信しません。
- ページ配置テスト用のメモリを割り当てません。
- カーネルアロケータを操作しません。
- `/etc/passwd` を変更しません。
- カーネル設定を変更しません。
- カーネルモジュールをロードまたはアンロードしません。
- `/dev/fuse` のパーミッションを変更しません。
- パッケージをインストールまたは削除しません。
- システムを再起動しません。
- 権限昇格を試みません。

### スキャナが行う場合があること

- `/proc`、`/boot`、`/lib/modules`、`/usr/lib/modules`、`/usr/src` 配下のファイルやパッケージメタデータディレクトリを読み取ります。
- 制限付きの読み取り専用パッケージクエリを実行します。
- アクティブなマウントとファイルシステム登録を検査します。
- `--output` が明示的に指定された場合のみレポートを書き込みます。
- 管理者が確認するための緩和策コマンドを出力します。

緩和策コマンドはドキュメント出力です。自動的に実行されることはありません。

---

## 機能

### ホストとカーネルの識別

- `platform.release()` を読み取り、上流スタイルのカーネルバージョンを解析します。
- `/etc/os-release` または `/usr/lib/os-release` を読み取ります。
- CPU アーキテクチャとメモリページサイズを検出します。
- スキャン対象のカーネルが現在のオペレーティングシステムに属しているかどうかを識別します。

### FUSE エクスポージャ評価

- 利用可能なカーネル設定ソースから `CONFIG_FUSE_FS` を読み取ります。
- 組み込みの FUSE サポートとロード可能モジュール設定を検出します。
- `/proc/filesystems` を読み取ります。
- `/dev/fuse` のメタデータと現在のユーザーの読み取り/書き込みアクセスを確認します。
- `fusermount3` または `fusermount` を特定します。
- `/proc/self/mountinfo` からアクティブな FUSE マウントを解析します。

### パッチの証拠

- 実行中のバージョンを上流の修正済みベースラインと比較します。
- インストール済みのカーネルソース内で oversized-record ガードを検索します。
- ローカルの RPM または Debian パッケージのチェンジログで以下を確認します:
  - `CVE-2026-31694`;
  - 上流パッチのタイトル。

### パッケージと再起動状態

- 実行中のカーネルを所有するパッケージを特定しようとします。
- リポジトリを更新せずにローカルのパッケージマネージャメタデータを照会します。
- ホスト環境が信頼できる場合に、より新しいインストール済みカーネルを検出します。
- 該当する場合、`/var/run/reboot-required` を確認します。

### 環境認識

- Docker 互換コンテナを検出します。
- Podman 互換コンテナを検出します。
- コンテナ関連の cgroups を検出します。
- WSL を検出します。
- 利用可能な場合は `systemd-detect-virt` を使用して仮想マシンを検出します。

### レポート

- 人間が読み取れるテキスト出力。
- 機械可読な JSON 出力。
- Markdown レポート出力。
- 緩和策のみの出力。
- 任意のファイル出力。
- 意味のあるプロセス終了コード。

---

## 要件

### 必須

- カーネル評価のための Linux。
- Python 3.9 以降。
- 通常のシステムメタデータへの読み取りアクセス。

スキャナは Python 標準ライブラリのみを使用します。

### オプションのコマンド

次のツールが存在する場合、追加の証拠が収集されます:

| Tool | Purpose |
|---|---|
| `dpkg-query` | Debian/Ubuntu カーネルパッケージの所有者とチェンジログの発見 |
| `rpm` | Fedora/RHEL/SUSE パッケージの所有者とチェンジログの検査 |
| `pacman` | Arch 系カーネルパッケージと更新メタデータ |
| `apt` | Debian 系のキャッシュ済み更新クエリ |
| `dnf` or `dnf5` | Fedora/RHEL のキャッシュ済み更新クエリ |
| `zypper` | SUSE のキャッシュ済み CVE パッチクエリ |
| `apk` | Alpine のパッケージ/更新クエリ |
| `systemd-detect-virt` | コンテナと仮想マシンの検出 |

通常のスキャンには root 権限は必要ありません。

システム固有のファイルパーミッションにより、一部の証拠は非特権アカウントでは利用できない場合があります。

---

## インストール

スキャナを作業ディレクトリに配置します:```bash
chmod +x cve_2026_31694_scanner.py

直接実行:```bash ./cve_2026_31694_scanner.py

root@kitploit:~
または Python で呼び出します:```bash
python3 cve_2026_31694_scanner.py

Pythonパッケージのインストールは不要です。


使い方

標準評価```bash

python3 cve_2026_31694_scanner.py

root@kitploit:~
### JSON出力```bash
python3 cve_2026_31694_scanner.py --format json

以下の互換エイリアスも同じ形式を生成します:```bash python3 cve_2026_31694_scanner.py --json

root@kitploit:~
### Markdown レポート```bash
python3 cve_2026_31694_scanner.py --format markdown

レポートを保存```bash

python3 cve_2026_31694_scanner.py
--format markdown
--output cve-2026-31694-report.md

root@kitploit:~
### 修復ガイダンスのみを出力```bash
python3 cve_2026_31694_scanner.py --mitigation-only

パッケージ更新の問い合わせをスキップ```bash

python3 cve_2026_31694_scanner.py --no-package-query

root@kitploit:~
### 報告後は常に成功を返す```bash
python3 cve_2026_31694_scanner.py --no-exit-status

このオプションは、脆弱性ステータスによってオーケストレーションジョブが失敗しないようにしながらレポートを収集する場合に便利です。


コマンドラインオプション


評価ワークフロー

スキャナーは以下の順序で証拠を評価します。

1. オペレーティングシステムと環境の検出

スキャナーは以下を判定します:

  • オペレーティングシステムが Linux であるかどうか;
  • ディストリビューション ID とファミリー;
  • パッケージマネージャー;
  • プロセスが次のいずれで実行されているか:
    • 通常のホスト;
    • 仮想マシン;
    • コンテナ;
    • WSL.

環境検出により、パッケージおよび再起動データの解釈が変わります。

例えば、コンテナはホストのカーネルを確認できますが、通常はコンテナのファイルシステムからホストのカーネルパッケージを特定することはできません。

2. FUSE 設定

スキャナーは、実行中のカーネル設定を以下から探します:```text /proc/config.gz /boot/config-$(uname -r) /lib/modules/$(uname -r)/build/.config /usr/lib/modules/$(uname -r)/build/.config

root@kitploit:~
以下を評価します:```text
CONFIG_FUSE_FS=y
CONFIG_FUSE_FS=m
CONFIG_FUSE_FS is not set

解釈:

値意味
yFUSE はカーネルに組み込まれています。モジュールのブラックリスト登録では無効化できません。
mFUSE はロード可能なモジュールとして利用できます。
nFUSE は検出された設定では無効になっています。
unknown

3. 実行時の露出

スキャナーは以下を確認します:```text /proc/filesystems /dev/fuse PATH for fusermount3 or fusermount /proc/self/mountinfo

root@kitploit:~
`/dev/fuse` または `fusermount3` が存在しない場合、現在の環境からの即時的な利用可能性は低下しますが、カーネルがパッチ適用済みであることを証明するものではありません。

### 4. ページサイズの幾何学的性質

文書化された過大レコードは `4120` バイトです。

ホストのページサイズが少なくとも `4120` バイトである場合、文書化されたレコードはページ境界をまたぎません。スキャナは、文書化されたページ幾何学的性質によってシステムが露出していないと報告する場合があります。

この結論は、文書化されたレコードと評価された実装の動作にのみ適用されます。これは、より大きなページのシステムで FUSE のメモリ安全性の問題がすべて不可能であるという一般的な声明ではありません。

### 5. インストール済みソースの検査

インストール済みソースが利用可能な場合、スキャナは以下を検索します。```text
fs/fuse/readdir.c

影響を受ける関数と、reclen > PAGE_SIZE を拒否するのに相当するガードを探します。

直接のソース証拠は、バージョン比較よりも信頼性が高いです。

結果が信頼できるものとなるには、検査対象のソースが実行中のカーネルに対応している必要があります。/usr/src 配下のディストリビューションソースツリーは、インストールされている別のカーネルを表している可能性があります。

6. カーネルパッケージの証拠

スキャナは、検出されたディストリビューションのパッケージデータベースを使用して、実行中のカーネルイメージをその所有者パッケージにマッピングしようとします。

考えられるメカニズムは次のとおりです:```text dpkg-query -S rpm -qf pacman -Qo apk info -W

root@kitploit:~
パッケージが特定された場合、ローカルの変更ログメタデータを調べて、CVE ID またはパッチタイトルを確認できる場合があります。

変更ログの一致がないことは、脆弱性の証明にはなりません。ベンダーは、ローカルにインストールされた変更ログに個々の CVE 参照を常に含めるとは限らないためです。

### 7. アップストリームバージョンの比較

解析されたカーネルバージョンは、スキャナの固定ベースラインテーブルと比較されます。

バージョン比較は、以下の理由からヒューリスティックな結果を生成します:

- ベンダーカーネルにはバックポートが含まれる場合がある;
- カーネルパッケージのリリースリビジョンはディストリビューション固有である;
- クラウド、リアルタイム、ハードニング、およびハードウェアイネーブルメントカーネルには、それぞれ別のパッチタイムラインがある場合がある;
- バージョン文字列は、変更されていないアップストリームリリースではなく、ベンダーがメンテナンスするブランチを表す場合がある。

### 8. パッケージ更新メタデータ

サポートされている場合、スキャナは既存のローカルメタデータに対して読み取り専用クエリを実行します。

リポジトリは更新されません。

例:```text
apt list --upgradable
pacman -Qu
dnf --cacheonly --quiet check-upgrade
zypper --no-refresh list-patches --all --cve=CVE-2026-31694
apk version -l <

9. 再起動状態

通常のホストまたは仮想マシンでは、スキャナは実行中のカーネルを検出されたインストール済みカーネルと比較し、Debian系システムで使用される再起動マーカーを確認します。

コンテナまたはWSLゲスト内では、このチェックはゲストファイルとホストカーネルを比較する代わりに、ホスト管理としてマークされます。

10. 判定の生成

エビデンスの優先順位はおおよそ次のとおりです。

  1. 直接のソースまたはパッケージパッチのエビデンス;
  2. FUSE無効;
  3. 文書化されたページジオメトリが露出していない;
  4. アップストリームで修正済みまたは影響を受けないベースライン;
  5. アップストリームで影響を受ける可能性があるバージョン;
  6. 結論が出ないエビデンス。

判定

PATCHED

直接的なローカルエビデンスが修正の存在を示しています。

例:

  • 関連するカーネルソース内の一致するソースガード;
  • ローカルのカーネルパッケージメタデータがCVEまたはパッチを参照している。

信頼度は通常高いですが、ソースと実行中カーネルの整合性は依然として検証する必要があります。

NOT_EXPOSED

検出された実行中カーネルの構成ではFUSEが無効になっています。

これは露出の結果であり、カーネルソース自体に修正が含まれているというエビデンスではありません。

NOT_EXPOSED_BY_DOCUMENTED_PAGE_GEOMETRY

メモリページサイズが、文書化された4120バイトのレコードをページ境界を越えずに収めるのに十分な大きさです。

この判定は文書化された脆弱性のジオメトリに限定されます。

UPSTREAM_BASELINE_SAFE

解析された実行中バージョンは、既知の修正済みアップストリームベースラインを満たしているか、影響を受ける実装より前のものです。

ベンダーパッケージの検証が依然として推奨されます。

POTENTIALLY_VULNERABLE

解析されたカーネルは影響を受けるアップストリームの範囲内にあり、直接的なローカルパッチのエビデンスは見つかりませんでした。

この結果は、インストール済みカーネルを脆弱と宣言する前に、オペレーティングシステムベンダーのアドバイザリを確認する必要があることを意味します。

INCONCLUSIVE

スキャナは十分なエビデンスを取得できませんでした。

一般的な原因:

  • カーネル構成が利用できない;
  • 認識できないバージョン文字列;
  • アクセスできないソースまたはパッケージメタデータ;
  • サポートされていないディストリビューション;
  • コンテナ内での実行;
  • ホスト管理のカーネル;
  • ベンダーのバックポート状況がローカルで利用できない。

NOT_APPLICABLE

現在のオペレーティングシステムはLinuxではありません。


終了コード

コード意味
0パッチ済みのエビデンス、安全なアップストリームベースライン、または文書化された露出なし
1潜在的に脆弱

例:```bash python3 cve_2026_31694_scanner.py status=$?

case "$status" in 0) echo "No actionable exposure detected by the scanner" ;; 1) echo "Potential exposure detected" ;; 2) echo "Assessment inconclusive" ;; 3) echo "Scanner execution failed" ;; esac

root@kitploit:~
When `--no-exit-status` is specified, the scanner returns `0` after producing the report.

---

## 検出ソース

スキャナは、利用可能な場合に以下のローカルソースを使用します:

| ソース | 情報 |
|---|---|
| `/etc/os-release` | ディストリビューションの識別情報 |
| `/usr/lib/os-release` | ディストリビューション識別情報のフォールバック |
| `/proc/version` | カーネルおよび WSL の指標 |
| `/proc/config.gz` | 実行中カーネルの構成 |
| `/boot/config-*` | カーネル構成 |
| `/lib/modules/*/build/.config` | カーネルビルド構成 |
| `/proc/filesystems` | 登録済みファイルシステム |
| `/proc/self/mountinfo` | アクティブな FUSE マウント |
| `/proc/1/cgroup` | コンテナの指標 |
| `/dev/fuse` | デバイスの存在と権限 |
| `/usr/src/*/fs/fuse/readdir.c` | 任意のソースレベルパッチの証拠 |
| `/lib/modules` | インストール済みカーネルの一覧 |
| `/usr/lib/modules` | インストール済みカーネルの一覧 |
| `/boot/vmlinuz-*` | インストール済みカーネルの一覧 |
| `/var/run/reboot-required` | Debian 系の再起動が必要なことを示す指標 |
| package database | カーネルパッケージの所有情報 |
| package changelogs | 任意のローカルバックポートの証拠 |
| package cache | 任意の更新利用可能性の証拠 |

---

## ディストリビューションのサポート

### ディストリビューションファミリーの検出

| ファミリー | 認識されるディストリビューション |
|---|---|
| Ubuntu | Ubuntu, Linux Mint, Pop!_OS, elementary OS, Zorin OS |
| Debian | Debian, Kali Linux, Raspbian, Parrot OS |
| Arch | Arch Linux, Manjaro, Garuda Linux, EndeavourOS, CachyOS |
| Fedora | Fedora Linux |
| RHEL | RHEL, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, Amazon Linux |
| SUSE | openSUSE Tumbleweed, openSUSE Leap, SLES, SLED |
| Alpine | Alpine Linux |
| Gentoo | Gentoo Linux |
| Void | Void Linux |
| NixOS | NixOS |
| 不明 | 一般的な Linux 向けガイダンス |

### ローカル更新クエリのサポート

| ファミリー | 読み取り専用の更新クエリ |
|---|---|
| Debian/Ubuntu | `apt list --upgradable` |
| Arch | `pacman -Qu` |
| Fedora/RHEL | キャッシュされた `dnf check-upgrade` |
| SUSE | `zypper` によるキャッシュされた CVE パッチ一覧 |
| Alpine | `apk version -l <` |
| Gentoo | 未実装 |
| Void | 未実装 |
| NixOS | 未実装 |
| 不明 | 未実装 |

ローカルで更新が見つからないからといって、修正済みパッケージが利用できないわけではありません。リポジトリのメタデータが古いか、ディストリビューションがまだパッケージを公開していない可能性があります。

---

## 緩和策の生成

緩和策のガイダンスは以下に基づいて選択されます:

- ディストリビューションファミリー;
- パッケージマネージャー;
- コンテナまたは WSL の状態;
- FUSE 構成;
- `/dev/fuse` の利用可否;
- アクティブな FUSE マウント;
- 再起動状態;
- 最終判定。

スキャナはコマンドを表示するだけで、実行することはありません。

### Debian および Ubuntu ファミリー

一般的に生成される一連のコマンド:```bash
sudo apt update
sudo apt full-upgrade
sudo reboot

承認する前に、提案されたパッケージトランザクションを確認してください。

再起動後:```bash uname -r python3 cve_2026_31694_scanner.py

root@kitploit:~
### Arch および Manjaro 系

典型的な生成シーケンス:```bash
sudo pacman -Syu
sudo reboot

Arch 系システムは完全なシステムアップグレードが必要です。pacman -Sy でパッケージデータベースを更新してから、アップグレードを完了せずに選択したパッケージをインストールしないでください。

Fedora および RHEL 系

通常生成されるシーケンス:```bash sudo dnf upgrade --refresh sudo systemctl reboot

root@kitploit:~
`yum` を使用するシステムでは、対応する `yum` コマンドが提供される場合があります。

### SUSE ファミリー

典型的な生成シーケンス:```bash
sudo zypper refresh
sudo zypper patch --cve=CVE-2026-31694
sudo zypper patch --category security
sudo systemctl reboot

CVE固有のパッチは、すべてのSUSE製品またはリポジトリ状態で個別のトランザクションとして利用できるとは限りません。

Alpine Linux

典型的な生成シーケンス:```bash doas apk update doas apk upgrade doas reboot

root@kitploit:~
権限プレフィックスは、スキャナーが `sudo`、`doas`、または既にrootのセッションのいずれを検出するかによって異なります。

### Gentoo Linux

典型的に生成されるシーケンス:```bash
sudo emaint sync -a
sudo emerge --ask --update --deep --newuse @world

カーネルのインストールと有効化は、ホストの設定済みGentooカーネルワークフローに依存します。

Void Linux

典型的な生成シーケンス:```bash sudo xbps-install -Suv sudo reboot

root@kitploit:~
### NixOS

典型的な生成シーケンス:```bash
sudo nixos-rebuild switch --upgrade
sudo systemctl reboot

一時的な制御

パッチをすぐに適用できない場合、スキャナは一時的な制御を提案することがあります。

推奨される可能性のある対策は次のとおりです。

  • アクティブなFUSEマウントがない場合にFUSEモジュールをアンロードする;
  • ロード可能なFUSEモジュールをブラックリストに登録する;
  • 一時的に/dev/fuseを制限する;
  • 信頼されていないコンテナから/dev/fuseを削除する;
  • CAP_SYS_ADMINを削除する;
  • --privilegedコンテナを避ける.

これらの制御は、次のような正規のワークロードを妨げる可能性があります。

  • SSHFS;
  • AppImage;
  • rcloneマウント;
  • デスクトップポータル;
  • ルートレスコンテナツール;
  • ユーザー空間ファイルシステム.

一時的な制限は、ベンダーが修正したカーネルのインストールを置き換えてはなりません。


コンテナとWSLの動作

コンテナ

コンテナは通常、ホストカーネルを共有します。

コンテナ内で実行されるスキャナは、以下を検出する可能性があります。

  • ホストカーネルのリリース;
  • コンテナファイルシステムのパッケージメタデータ;
  • 一致するホストカーネルパッケージがない;
  • ホストでFUSEが有効な場合でも、/dev/fuseがない.

このため、スキャナはホスト依存の証拠を非権威のものとしてマークし、緩和策をコンテナホストに指示します。

権威あるパッケージと再起動の評価を行うには、ホスト上でスキャナを直接実行してください。

コンテナの堅牢化ガイドラインには、次の削除が含まれます。```text --device /dev/fuse --cap-add SYS_ADMIN --privileged

root@kitploit:~
同等のCompose設定も確認する必要があります:```yaml
devices:
  - /dev/fuse:/dev/fuse

cap_add:
  - SYS_ADMIN

privileged: true

Let's proceed with translating the chunk. We have a small piece of Markdown content from a Kitploit tool README chunk. The source language is en, target is ja. Rules: translate only natural language, preserve Markdown structure exactly, no preamble etc.

Input chunk:

root@kitploit:~
### WSL

The WSL kernel is managed by Windows rather than the Linux guest distribution's kernel package.

Typical generated guidance:

Let's parse it. It's a heading level 3 "WSL" (a technical term, should remain untranslated), followed by a paragraph, followed by a line "Typical generated guidance:" which is also natural language, ends with a colon. The line after "Typical generated guidance:" is presumably where a code block or list would follow in the original, but in this chunk there's no more content. We shouldn't add ellipsis or anything. Just translate the natural language text.

Translate:

  • "The WSL kernel is managed by Windows rather than the Linux guest distribution's kernel package." → "WSL カーネルは、Linux ゲストディストリビューションのカーネルパッケージではなく、Windows によって管理されます。" or more natural: "WSL カーネルは Windows によって管理され、Linux ゲストディストリビューションのカーネルパッケージによって管理されるわけではありません。" Let's keep concise and idiomatic. Something like "WSL カーネルは、Linux ゲストディストリビューションのカーネルパッケージではなく、Windows によって管理されます。"

  • "Typical generated guidance:" → "典型的に生成されるガイダンス:" or "典型的な生成ガイダンス:" Hmm. "Typical generated guidance" – guidance generated typically. I'd say "典型的に生成されるガイダンス:" since it's a label before a sample output.

Note heading "### WSL" – keep "WSL" untranslated. "### WSL" stays as is.

Preserve blank line between heading and paragraph? In source: there's a blank line after "### WSL", then paragraph, then blank line, then "Typical generated guidance:". Actually input shows:

root@kitploit:~
### WSL

The WSL kernel is managed by Windows rather than the Linux guest distribution's kernel package.

Typical generated guidance:

There's a blank line after the heading, and after the paragraph, then the line "Typical generated guidance:" and then presumably EOF (chunk ends). No trailing blank line specified after that? The blank line is between paragraph and "Typical...". Preserve exactly.

So output:

root@kitploit:~
### WSL

WSL カーネルは、Linux ゲストディストリビューションのカーネルパッケージではなく、Windows によって管理されます。

典型的に生成されるガイダンス:

Need to make sure not to add anything else. Just return this.

Double-check punctuation: The original sentence ends with a period. We keep a period. The "Typical generated guidance:" keeps colon, Japanese full-width colon? The source has ":" ASCII colon. Should we preserve punctuation exactly? Rule says preserve all Markdown syntax exactly; punctuation that doesn't change code. Natural language translation can adjust punctuation for idiomatic Japanese. Using ":" vs ":" – probably keep ASCII colon to match structure. Let's use "典型的に生成されるガイダンス:" with ASCII colon.

Ensure no leading/trailing whitespace changes. The output should start with the heading.### WSL

WSL カーネルは、Linux ゲストディストリビューションのカーネルパッケージではなく、Windows によって管理されます。

典型的に生成されるガイダンス:```powershell wsl --update wsl --shutdown

root@kitploit:~
これらのコマンドをWindows PowerShellから実行し、ディストリビューションを再起動して、スキャナーを再実行してください。

`apt`、`dnf`、または別のLinuxパッケージマネージャーでゲストパッケージのみを更新しても、WSLカーネルは置き換えられません。

### 仮想マシン

仮想マシンは通常、ゲストカーネルを所有しています。ディストリビューション固有のパッケージおよび再起動チェックは、ゲスト内で引き続き適用されます。

ハイパーバイザーホストは別途評価する必要があります。

---

## レポート形式

### テキスト

テキスト出力は、直接ターミナルで使用することを目的としています。```bash
python3 cve_2026_31694_scanner.py --format text

レポートには以下が含まれます:

  • ホストサマリー;
  • 証拠チェック;
  • 表示可能な場合のパッケージ更新;
  • 判定と信頼度;
  • 緩和ガイド;
  • 検証コマンド;
  • 注意事項;
  • メモ;
  • 終了コード。

JSON

JSON出力には、完全なdataclassベースのレポートが含まれます。```bash python3 cve_2026_31694_scanner.py
--format json
--output report.json

root@kitploit:~
フィールド選択の例:```bash
python3 cve_2026_31694_scanner.py --format json --no-exit-status |
  python3 -c '
import json
import sys

report = json.load(sys.stdin)
print(report["hostname"])
print(report["verdict"])
print(report["confidence"])
print(report["kernel_release"])
'

Markdown

Markdown 出力は、技術記録、チケット、および評価レポートに適しています。```bash python3 cve_2026_31694_scanner.py
--format markdown
--output report.md

root@kitploit:~
### 緩和策のみのレポート```bash
python3 cve_2026_31694_scanner.py \
  --mitigation-only \
  --format markdown

JSON形式の場合、mitigation-onlyモードは完全なホストレポートではなく、mitigationオブジェクトを返します。


自動化と統合

Shell gate```bash

#!/usr/bin/env bash

set -u

report="cve-2026-31694-$(hostname)-$(date +%Y%m%d-%H%M%S).json"

python3 cve_2026_31694_scanner.py
--format json
--output "$report"

status=$?

case "$status" in 0) echo "Assessment completed without a potential-vulnerability verdict" ;; 1) echo "Potential CVE-2026-31694 exposure detected: $report" >&2 ;; 2) echo "Assessment inconclusive: $report" >&2 ;; *) echo "Scanner failure: $report" >&2 ;; esac

exit "$status"

root@kitploit:~
### ジョブを失敗させずにレポートを収集```bash
python3 cve_2026_31694_scanner.py \
  --format json \
  --output /var/tmp/cve-2026-31694.json \
  --no-exit-status

Cron の例```cron

30 3 * * * /usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status

root@kitploit:~
これは同じレポートファイルを上書きします。履歴レポートが必要な場合は、ラッパースクリプトを使用してください。

### Systemdサービスの例```ini
[Unit]
Description=Passive CVE-2026-31694 assessment
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/log

スキャナーはカーネルとパッケージのメタデータへの読み取りアクセスが必要です。追加のサンドボックス制限により、証拠が隠され、結論が出ないレポートが生成される可能性があります。

フリート利用

フリート評価の場合:

  1. 各Linuxホストにスクリプトを配置する。
  2. ローカルで実行する。
  3. JSON出力を収集する。
  4. 以下の基準で結果をグループ化する:
    • ディストリビューション。
    • カーネルリリース。
    • 判定。
    • 信頼度。
    • 環境タイプ。
  5. 影響を受ける可能性のあるホストをベンダーのアドバイザリと照合する。
  6. パッチを適用して再起動する。
  7. 再スキャンする。

コンテナイメージのビルドからのスキャンをホストカーネルの評価として扱わないこと。


運用ガイダンス

POTENTIALLY_VULNERABLE への推奨対応

  1. 実行中の正確なカーネルを特定する: ```bash uname -r

    root@kitploit:~
  2. インストールされているディストリビューションとリリースを特定します: ```bash cat /etc/os-release

    root@kitploit:~
  3. ディストリビューションベンダーのCVEステータスを、正確なカーネルパッケージとフレーバーについて確認します。

  4. パッケージメタデータを更新します。

  5. ベンダーがサポートする修正済みカーネルパッケージをインストールします。

  6. ホストを再起動します。

  7. 実行中のカーネルが変更されたことを確認します: ```bash uname -r

    root@kitploit:~
  8. スキャナーを再実行します。

INCONCLUSIVE に対する推奨対応

不足している証拠を収集します:```bash uname -a getconf PAGE_SIZE cat /etc/os-release grep CONFIG_FUSE_FS /boot/config-"$(uname -r)" 2>/dev/null cat /proc/filesystems ls -l /dev/fuse 2>/dev/null findmnt -t fuse,fuseblk,fusectl

root@kitploit:~
Then verify the exact kernel package against the vendor advisory.

### 再起動の検証

修正されたカーネルパッケージをインストールしても、現在実行中のカーネルは変更されません。

インストール済みカーネルと実行中カーネルの両方を検証し、必要に応じて再起動してください。

例:```bash
uname -r
ls -1 /lib/modules

Debian系システムでは、以下も提供される場合があります:```bash test -e /var/run/reboot-required && cat /var/run/reboot-required

root@kitploit:~
### FUSE 依存関係のレビュー

FUSE を一時的にアンロードまたはブロックする前に:```bash
findmnt -t fuse,fuseblk,fusectl
lsmod | grep '^fuse'
ps aux | grep -E '[f]usermount|[s]shfs|[r]clone'

アクティブなFUSEファイルシステムがマウントされている間は、モジュールをアンロードしないでください。


制限事項

エクスプロイト確認なし

スキャナは意図的に脆弱なコードパスをトリガーしません。

POTENTIALLY_VULNERABLE の判定は、利用可能なパッシブな証拠が曝露と整合していることを意味します。これはエクスプロイトが成功するという証明ではありません。

ベンダーのバックポート

ディストリビューションのカーネルは、セキュリティ修正をバックポートすることがよくあります。

古く見えるアップストリームのバージョンでも、パッチが適用されている場合があります。

ベンダーのアドバイザリと正確なパッケージリリースが、ディストリビューション管理のカーネルにとっては信頼できる情報源です。

ソースツリーの不一致

/usr/src 以下にあるソースツリーは、実行中のカーネルと一致しない場合があります。

ソースパッチの証拠は、以下に対して検証する必要があります:```bash uname -r

root@kitploit:~
および、その正確なカーネルに使用されたソースパッケージまたはビルドディレクトリ。

### 古いパッケージメタデータ

スキャナーはリポジトリを更新しません。

パッケージ更新の確認は、既存のローカルキャッシュの状態に依存します。

最新のパッケージ決定を行うには、生成されたディストリビューション固有の更新およびアップグレードコマンドを使用してください。

### コンテナ

コンテナはホストのカーネルを参照しますが、通常は異なるパッケージメタデータを持ちます。

スキャナーはホスト上で実行してください。

### WSL

Linuxゲストのパッケージ状態は、WSLカーネルのパッチ状態を決定しません。

WSLはWindows側から更新してください。

### カスタムカーネル

カスタム、組み込み、アプライアンス、ベンダー、および自己ビルドのカーネルには、パッケージメタデータや認識可能なバージョン文字列がない場合があります。

実際のソースコミットまたはベンダーのリリースノートを確認してください。

### ライブパッチ

スキャナーは、ライブパッチフレームワークが実行中のカーネルにこの特定の修正を適用したかどうかを判定しません。

ライブパッチベンダーのステータスツールとアドバイザリデータを使用してください。

### セキュアブートとブートローダーの状態

スキャナーは以下を検証しません:

- ブートローダーが次にどのカーネルを選択するか;
- セキュアブートがインストールされたイメージを受け入れるかどうか;
- 新しいinitramfsが正しく生成されたかどうか;
- マシンが期待どおりのカーネルで正常に再起動したかどうか。

### 分散ファイルシステムと名前空間

スキャナーは現在のプロセス名前空間を評価します。

名前空間によって隠されたマウントやデバイスアクセスは、レポートに表示されない場合があります。

---

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

### `Kernel configuration could not be determined`

次のファイルのいずれかが存在するか確認してください:```bash
ls -l /proc/config.gz
ls -l /boot/config-"$(uname -r)"
ls -l /lib/modules/"$(uname -r)"/build/.config

一部のディストリビューションでは、実行中の設定が /proc/config.gz を通じて公開されていません。

Running kernel package could not be identified

考えられる原因:

  • コンテナ内で実行されている;
  • 現在のファイルシステムにカーネルイメージが存在しない;
  • カスタムカーネル;
  • パッケージデータベースが利用できない;
  • プラットフォームが提供するカーネル;
  • 権限が不十分。

確認:```bash uname -r ls -l /boot ls -l /lib/modules/"$(uname -r)"

root@kitploit:~
### パッケージ更新クエリが更新なしと報告する

生成された緩和ガイドを使用してパッケージメタデータを更新し、スキャナーを再実行してください。

パッシブスキャナーはリポジトリを自動的に更新しません。

### 更新インストール後の `POTENTIALLY_VULNERABLE`

新しいカーネルが実行されていることを確認してください:```bash
uname -r

インストール済みカーネルディレクトリと比較してください:```bash ls -1 /lib/modules

root@kitploit:~
再起動が必要な場合があります。

また、修正されたバックポートがアップストリームのバージョン基準と一致しない可能性があるため、ベンダーのアドバイザリも確認してください。

### FUSE はカーネルに組み込まれている

レポートに次のように表示される場合:```text
CONFIG_FUSE_FS=y

modprobe -r fuse およびモジュールのブラックリスト登録では、FUSE を無効化できません。

パッチ適用済みカーネル、または FUSE サポートなしでビルドされたカーネルを使用してください。

systemd サンドボックス環境下ではスキャナー出力が不完全です

スキャナーには以下への読み取りアクセスが必要な場合があります:```text /proc /boot /lib/modules /usr/lib/modules /usr/src package database directories package cache directories

root@kitploit:~
これらのパスが読み取り可能なままとなるように、サービスのハードニングを調整します。

---

## ファイルレイアウト

推奨プロジェクトレイアウト:```text
cve-2026-31694-scanner/
├── README.md
└── cve_2026_31694_scanner.py

推奨インストールレイアウト:```text /opt/security/cve-2026-31694/ ├── README.md └── cve_2026_31694_scanner.py

root@kitploit:~
例:```bash
sudo install -d -m 0755 /opt/security/cve-2026-31694

sudo install -m 0755 \
  cve_2026_31694_scanner.py \
  /opt/security/cve-2026-31694/

sudo install -m 0644 \
  README.md \
  /opt/security/cve-2026-31694/

参考文献

  • CVE レコード: https://www.cve.org/CVERecord?id=CVE-2026-31694
  • NVD レコード: https://nvd.nist.gov/vuln/detail/CVE-2026-31694
  • Linux stable パッチ参照: https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed
  • Ubuntu ステータス: https://ubuntu.com/security/CVE-2026-31694
  • Debian セキュリティトラッカー: https://security-tracker.debian.org/tracker/CVE-2026-31694
  • Red Hat CVE データベース: https://access.redhat.com/security/cve/CVE-2026-31694
  • SUSE CVE データベース: https://www.suse.com/security/cve/CVE-2026-31694.html

著者

Aung Myat Thu [w01f]

ツールをダウンロード
オプション説明
--format text人間が読めるターミナル出力。デフォルトです。
--format jsonJSON 形式の完全な構造化レポート。
--format markdown技術的な Markdown レポート。
--json--format json のエイリアス。
--output PATHレポートを標準出力ではなくファイルに書き込みます。
--mitigation-only生成された緩和策セクションのみを返します。
--no-package-queryローカルのパッケージマネージャーの更新クエリをスキップします。
--no-exit-status出力生成後、常にステータス 0 で終了します。
-h, --helpコマンドのヘルプを表示します。
読み取り可能な設定ソースがありませんでした。
2
結論が出ない
3スキャナまたはレポート生成エラー