
DirtyAH6
CVE-2026-80844 は、IPv6 Authentication Header (AH6) / XFRM サブシステムに影響を与えるLinuxカーネルの脆弱性です。
この脆弱性は、IPv6ルーティングヘッダの segments_left フィールドの検証が不十分であることが原因で、範囲外のメモリ操作やカーネルメモリの破壊を引き起こす可能性があります。
このリポジトリは、許可されたセキュリティ研究、脆弱性分析、CTF、および防御的テストのみを目的としています。
所有していないシステム、または明示的なテスト許可を得ていないシステムに対してこの研究を使用しないでください。
| 項目 | 詳細 |
|---|---|
| CVE | CVE-2026-80844 |
| コードネーム | DirtyAH6 |
| コンポーネント | Linuxカーネル |
| サブシステム | IPv6 / XFRM / AH6 |
| 脆弱性の種類 | ローカル権限昇格 |
| 攻撃ベクトル | ローカル |
| 攻撃の複雑さ | 低 |
| 必要な権限 | 低 |
| ユーザー操作 | なし |
| CVSS v3.1 | 7.8 — 高 |
| 影響を受けるコード | net/ipv6/ah6.c |
| ステータス | 修正済み |
この脆弱性は、IPv6 AH6の処理パスに存在します。
影響を受けるコードは、以下を通じてルーティングヘッダの操作を実行します:
net/ipv6/ah6.c
具体的には、脆弱なロジックには以下が含まれます:
ipv6_rearrange_rthdr()
この関数は、以下の間の関係を適切に検証できませんでした:
hdrlen
and:
segments_left
特別に細工された IPv6 パケットを送り込める攻撃者は、それによってカーネルに、想定されるルーティングヘッダーの境界を越えたメモリを操作させることができます。
これにより、次のような問題が発生する可能性があります:
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
根本的な問題は、IPv6 ルーティングヘッダーの segments_left 値の検証が不十分であることです。
概念的には、脆弱な条件は次のように表すことができます:
segments_left > available routing-header addresses
カーネルは、関連するアドレスデータを操作する前に、ルーティングヘッダーによって要求されたセグメント数が実際のヘッダー長と整合していることを確認する必要があります。
この検証がない場合、後続のメモリ操作が有効なバッファ境界を超えて動作する可能性があります。
悪用に成功すると、必要なローカル権限/環境を持つ攻撃者がカーネルメモリを破壊できる可能性があります。
想定される影響は以下のとおりです。
実際の悪用可能性は、カーネル設定、利用可能な名前空間/ケーパビリティ、その他の環境条件によって異なります。
net/ipv6/ah6.c
関連する処理:
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
問題のあるシナリオは、一貫性のないルーティングヘッダーのメタデータを含みます。
例えば、概念的には次のようになります。
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
この不一致は、カーネルがアドレスの再配置を実行する前に拒否されなければなりません。
上流の修正では、カーネルが脆弱な操作を実行する前に、Routing Header の segments_left 値に対する検証が導入されています。
関連する上流のコミットは次のとおりです:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
セキュリティ修正は次のように要約できます:
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
影響を受けるバージョンは、アップストリームおよびベンダーのバックポート履歴によって異なります。
ユーザーは、アップストリームのバージョン番号だけに頼るのではなく、自身のディストリビューションのセキュリティアドバイザリを確認する必要があります。
修正済みのアップストリーム安定版リリースの例を以下に示します:
| カーネルブランチ | 修正済みリリース |
|---|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
実行中のカーネルを確認します:
uname -a
または:
uname -r
カーネルの詳細情報を確認します:
cat /proc/version
Debian/Kaliベースのシステムの場合:
apt-cache policy linux-image-amd64
RPMベースのシステムの場合:
rpm -q kernel
ディストリビューションのカーネルは、上流のバージョンを明白に変更することなくセキュリティ修正をバックポートすることがよくあります。必ずベンダーのアドバイザリ/変更履歴を確認してください。
主な緩和策は、セキュリティ修正を含むカーネルにアップグレードすることです。
Debian/Kali:
sudo apt update
sudo apt full-upgrade
その後、再起動します:
sudo reboot
検証:
uname -r
本番システムでは、カーネル更新を適用する前にLinuxディストリビューションの公式セキュリティアドバイザリを参照してください。
推奨される隔離環境:
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
便利なデバッグツール:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
カーネルデバッグ:
sudo dmesg -w
カーネルシンボルを検査します:
cat /proc/kallsyms
CVE-2026-80844-DirtyAH6/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── vulnerability.md
│ ├── root-cause.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable.patch
│ └── fixed.patch
│
├── docs/
│ └── research-notes.md
│
├── screenshots/
│
└── LICENSE
PoC の素材は、隔離された実験環境内でのみ実行してください。
この研究実装は、不正な形式の IPv6 Routing Header の状態を実証し、その結果生じるカーネルの挙動を観察することに焦点を当てています。
想定される研究ワークフロー:
Craft malformed IPv6 header
↓
Transmit inside isolated lab
↓
AH6/XFRM processing
↓
Observe kernel behavior
↓
Capture dmesg / crash information
↓
Compare vulnerable vs patched kernel
監視の例:
sudo dmesg -w
パッチを適用したカーネルは、脆弱なメモリ操作に到達することなく、不正な入力を拒否するはずです。
| 動作 | 脆弱なカーネル | パッチ適用済みカーネル |
|---|---|---|
不正な segments_left | 検証が不十分 | 検証済み |
| ルーティングヘッダーの処理 | 継続する可能性あり | 無効な場合は拒否 |
| OOB メモリ操作 | 到達可能な可能性あり | 防止 |
| カーネルの破損 | 発生する可能性あり | 緩和 |
| 権限昇格 | 可能性あり | 緩和 |
この脆弱性は、カーネルのネットワークパーサーが攻撃者から提供された長さやカウントのフィールドを決して信頼してはならない理由を示しています。
セキュリティ上重要なパース処理は、以下に従うべきです:
Input
↓
Bounds validation
↓
Relationship validation
↓
State validation
↓
Memory operation
ではなく:
Input
↓
Memory operation
↓
Validation
2つのパケットメタデータフィールド間のわずかな不整合でさえ、 カーネルレベルのメモリ安全性脆弱性になり得ます。
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftLinux Kernel Security Research
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
Research • Analyze • Understand • Harden