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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
dirtyfrag-arm64 — V4bel/dirtyfrag (CVE-2026-43284) の arm64/aarch64 ポート。ESPのみ - rxrpcパスは arm64 上で flush_dcache_page に起因するカーネルoopsを発生させる。 | Kitploit
ツール/GitHubGitHub/linnemanlabs/dirtyfrag-arm64
特権昇格脆弱性分析エクスプロイトペネトレーションテスト論文と研究学習と教育レッドチーミングバイナリエクスプロイト
GitHublinnemanlabs/dirtyfrag-arm64

dirtyfrag-arm64

V4bel/dirtyfrag (CVE-2026-43284) の arm64/aarch64 ポート。ESPのみ - rxrpcパスは arm64 上で flush_dcache_page に起因するカーネルoopsを発生させる。

リポジトリを見る
2883ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

dirtyfrag-arm64

arm64/aarch64 向けの V4bel/dirtyfrag の移植 (CVE-2026-43284, CVE-2026-43500)。

Ubuntu 24.04.4 LTS、linux-aws 6.17.0-1013-aws、AWS Graviton でテスト済み(本記事執筆時点で最新)。

AppArmor バイパス解析、ハードニングノート、検出ノートを含む完全な記事: linnemanlabs.com/posts/porting-dirtyfrag-arm64

⚠️ Ubuntu AppArmor userns の制限はこのエクスプロイトを確実に防げない

Ubuntu には 2 つの AppArmor sysctl があります:

  • kernel.apparmor_restrict_unprivileged_userns
  • kernel.apparmor_restrict_unprivileged_unconfined

どちらも、テストした標準的な Ubuntu クラウドおよびインストーライメージに存在するプロファイルを使用して、aa-exec を自身で連鎖させることでバイパスできます:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

詳細は Two Hops and a Shell で Ubuntu AppArmor バイパスの完全な分析をご覧ください。

arm64 での違い

上流の x86_64 PoC は 2 つのエクスプロイトパスを使用します: /usr/bin/su を破壊する ESP/xfrm パスと、/etc/passwd を破壊する rxrpc/rxkad フォールバックです。arm64 では rxrpc パスはカーネルで oops を引き起こし使用できません。ESP パスは正常に動作します。

rxrpc クラッシュ: flush_dcache_page

x86_64 では flush_dcache_page() は何もしません。x86 はハードウェアで一貫性のあるデータ/命令キャッシュを持っています。arm64 では実際の dcache メンテナンスを実行し、struct page* メタデータを逆参照します。rxrpc 暗号パス (rxkad_secure_packet -> crypto_pcbc_encrypt -> skcipher_walk_done) が splice/vmsplice チェーンを通じて参照が操作されたページに対して flush_dcache_page を呼び出すと、x86_64 は静かにスキップしますが、arm64 は変換フォールトにヒットして oops します:

root@kitploit:~
pc : flush_dcache_page+0x18/0x58
lr : skcipher_walk_done+0xbc/0x260
     crypto_pcbc_encrypt+0xe8/0x1c8 [pcbc]
     crypto_skcipher_encrypt+0x48/0xb8
     rxkad_secure_packet+0x108/0x270 [rxrpc]
     rxrpc_send_data+0x264/0x550 [rxrpc]

テストした arm64 システムでは、uid_map 書き込みを拒否すると動作する ESP パスが削除されました。名前空間は作成されても、プロセスは内部で自身を root にマッピングできず、XFRM セットアップに必要な名前空間ケーパビリティを得られません。rxrpc フォールバックは arm64 で機能する名前空間不要の権限昇格パスを提供せず、代わりにカーネルで oops を引き起こしました。

ESP のみの動作

arm64 では、私のテストで動作したのは ESP パスのみでした。このパスは、ユーザー名前空間とネットワーク名前空間を作成し、呼び出し元ユーザーをその内部で root に正常にマッピングする必要があります。ディストリビューションのハードニングはさまざまな方法でそのパスを壊す可能性があります: Ubuntu は AppArmor userns 制限を通じて uid_map 書き込みを拒否できます。Debian/RHEL ではテストしていません。

AppArmor: デフォルトでブロックされるが、Ubuntu ではバイパス可能

テストした Ubuntu 24.04 AWS イメージでは、apparmor_restrict_unprivileged_userns=1 が、新しい名前空間内の uid_map 書き込みを拒否することで、通常の SSH シェルからの直接的なエクスプロイトをブロックしました。

しかし、デフォルトの apparmor_restrict_unprivileged_unconfined=0 では、非制限ユーザーが aa-exec を介して既存の complain モードプロファイル(例: runc)に移行し、制限をバイパスできます:

root@kitploit:~
aa-exec -p runc -- ./dirtyfrag_arm64 --force-esp

kernel.apparmor_restrict_unprivileged_unconfined=1 を設定するとこのパスはブロックされ、現在すべてのパスをブロックする解決策として広く推奨されています。ただし、別の aa-exec を追加するとそれもバイパスされます:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

詳細は前述のリンク記事を参照してください。

アーキテクチャ固有のペイロード

このエクスプロイトは、ページキャッシュ内の /usr/bin/su を最小限の静的 ELF で上書きします。上流 PoC は x86_64 シェルコードを含む x86_64 ELF を埋め込んでいます。この移植では、同等の aarch64 ELF に置き換えています:

  • ELF e_machine: EM_X86_64 (62) の代わりに EM_AARCH64 (183)
  • シェルコード: syscall の代わりに svc #0 を使用する aarch64 命令
  • システムコール番号: setgid=144, setuid=146, setgroups=159, execve=221 (x86_64 では 106, 105, 116, 59)
  • 固定 4 バイト命令幅 (x86_64 の可変長に対して)、その結果ペイロードがわずかに大きくなります (~216 バイト vs 192)

ビルドと実行

root@kitploit:~
# クローン
git clone https://github.com/linnemanlabs/dirtyfrag-arm64.git

# ビルド
cd dirtyfrag-arm64
gcc -O0 -Wall -o dirtyfrag_arm64 dirtyfrag_arm64.c -lutil

# 実行
./dirtyfrag_arm64 --force-esp

--force-esp フラグは rxrpc パスを完全にスキップし、arm64 カーネルの oops を回避します。

テスト環境

2026-05-09 現在、利用可能な最新の Ubuntu 24.04 AWS カーネル (6.17.0-1013-aws、4 月 24 日ビルド) は、Copy Fail (CVE-2026-31431、4 月 29 日開示) と Dirty Frag (CVE-2026-43284/43500、5 月 7 日開示) のいずれのパッチも適用せずに出荷されています。

緊急緩和策

脆弱なモジュールをブラックリスト化し、お使いのディストリビューションに適したシステムハードニングを適用してください。

脆弱なモジュールをブラックリスト化

IPsec トランスポートモードや AFS を積極的に使用していないシステムでは安全です。モジュールのロードを防ぐには、以下を /etc/modprobe.d/dirtyfrag.conf に記述します:

root@kitploit:~
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false

initramfs の更新

Ubuntu は、ブラックリストが初期ブート時に存在するように initramfs の再生成も推奨しています:

root@kitploit:~
update-initramfs -u -k all

SUID バイナリから読み取り権限を削除

この splice ベースのページキャッシュ攻撃クラスをそれらの SUID バイナリターゲットに対してブロックします。エクスプロイトは splice() のためにターゲットファイルへの読み取り権限を必要とします。ユーザーはバイナリを実行することは引き続き可能です。

環境全体およびすべてのツールでテストせずにこれを実装しないでください。

root@kitploit:~
chmod o-r /usr/bin/su

これは修正ではなく、緩和策にすぎません。権限昇格へのパスは他にも多数あります。

モジュールをアンロード

実行中のシステムからモジュールをアンロードするには:

root@kitploit:~
rmmod esp4 esp6 ipcomp4 ipcomp6 rxrpc 2>/dev/null

アンロードされたことを確認:

root@kitploit:~
grep -qE '^(esp4|esp6|rxrpc) ' /proc/modules \
  && echo "影響を受けるモジュールがロードされています" \
  || echo "影響を受けるモジュールはロードされていません"

ページキャッシュのフラッシュ

ページキャッシュをフラッシュすると、悪意のある内容が削除され、ファイルがディスクから再読み取りされるはずです。

root@kitploit:~
echo 3 > /proc/sys/vm/drop_caches

注意: これについては結果に一貫性がない場合がありましたが、再現を試みるほど期待通りに動作するようになっています。この PoC では、/usr/bin/su の md5sum を確認し、一致しない場合は再起動してください。

テスト後のクリーンアップ

ページキャッシュフラッシュの手順を実行し、その後以下で確認します:

root@kitploit:~
sha256sum /usr/bin/su

# またはパッケージマネージャから:

dpkg -V util-linux    # Debian/Ubuntu
rpm -V util-linux     # RHEL/Amazon Linux

予防策

この特定の CVE だけでなく、この脆弱性クラス全体に対処するためのより積極的な姿勢については、完全な記事で AppArmor userns 制限、モジュールプリロード防止、Tetragon ベースのランタイム検出、および YARA ルールを参照してください。

クレジット

  • Hyunwoo Kim (@v4bel) - オリジナルの脆弱性研究、開示、x86_64 PoC
  • SiCk - Ubuntu AppArmor バイパスに関する bypass-pwn 研究
  • Keith Linneman / LinnemanLabs - arm64 移植、flush_dcache_page クラッシュ解析、AppArmor 研究、検出ノート

法的注意

このツールは、許可されたセキュリティテストおよび研究のみを目的としています。

あなたが所有していない、または明示的なテスト許可がないシステムに対する不正使用は違法かつ非倫理的です。

ライセンス

MIT。コピーして、盗んで、修正して、学んで、改善点を私と共有してください。あるいはしなくても構いません。コードです、好きに使ってください。

ツールをダウンロード
プロパティ値
インスタンスAWS t4g.micro (Graviton2)
OSUbuntu 24.04.4 LTS
カーネル6.17.0-1013-aws #13~24.04.1-Ubuntu (2026-04-24 ビルド)
アーキテクチャaarch64
unprivileged_userns_clone1 (有効)
esp4 モジュール利用可能、ロード可能
rxrpc モジュール利用可能、ロード可能 (ただし arm64 ではクラッシュ)
設定標準の Ubuntu 24.04 クラウドイメージ、デフォルトのカーネルモジュール