Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
vfs-hook-impersonate — VFS for Git ab95cf51 - 高 - ローカル - 権限残留 - フック CreateFileW SecurityImpersonation | Kitploit
ツール/GitHubGitHub/abraxas/vfs-hook-impersonate
特権昇格脆弱性分析エクスプロイトペネトレーションテスト論文と研究レッドチーミングラボと実践
GitHubabraxas/vfs-hook-impersonate

vfs-hook-impersonate

VFS for Git ab95cf51 - 高 - ローカル - 権限残留 - フック CreateFileW SecurityImpersonation

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - vfs-hook-impersonate

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vfs-hook-impersonate

vfs-hook-impersonate

クラス: 特権の残存 到達範囲: ローカル

VFS for Git master ab95cf51 (タグ v2.0.26259.1) - Microsoft

ネイティブ git フック (read-object、virtual-filesystem、post-index-changed) は、CreateFileW と dwFlagsAndAttributes = 0 で、enlistment ごとのマウントパイプを開きます。これにより SECURITY_SQOS_PRESENT が省略されるため、Windows はクライアントをデフォルトで SecurityImpersonation に設定します。残存 #2 が使用するのと同じパイプ ACL は、BUILTIN\Users に ReadWrite | CreateNewInstance を付与します。

2 人目のローカルユーザーは、\\.\pipe\GVFS_<ENLISTMENT> を追加インスタンス化または占有し、ImpersonateNamedPipeClient を実行して、被害者として書き込むことができます。

IDCVE 未割り当て
クラス特権の残存 (名前付きパイプの偽装)
到達範囲ローカル
CWECWE-284, CWE-300
CVSSHigh: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
製品VFS for Git
影響を受けるバージョンmaster ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (リリース v2.0.26259.1 に対しても現行)。Windows のみ。
認証ローカル。被害者は GVFS enlistment を持つ。攻撃者は任意の BUILTIN\Users プリンシパル。被害者は後で git を実行する。
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ。how=gadget (ライブ Windows VM / インストール済み VFS for Git なし)。

これはローカルです。SYSTEM ではありません。残存 #4 の Automount は別のパイプ (GVFS.Service.pipe) です。この同じマウントパイプ上の Dehydrate/unmount は残存 #2 です。

攻撃者ができること

被害者は GVFS enlistment を持つ。攻撃者は任意の BUILTIN\Users プリンシパル。被害者は後で git を実行する (status、checkout、VFS フックを発火させるあらゆる操作)。

特権メソッド / シンク付与されるもの偵察 / 完全性 / 可用性ラボ実証済みまたは推測
被害者を偽装してそのプロファイルに書き込む\\.\pipe\GVFS_C_\REPOS\FOO を追加インスタンス化 / 占有; フック CreateFileW flags=0; ImpersonateNamedPipeClient; %USERPROFILE%\VFS-HOOK-IMPERSONATE-WITNESS を作成被害者 UID として書き込み完全性ガジェット上でラボ実証済み。Witness の所有者は被害者 uid。デフォルトフラグは SecurityImpersonation。攻撃者 uid は偽装なしではそのホームに書き込めない
占有後も git を動作させ続けるMPL|1 に S|\x03 を返信し、GVFS.VirtualFileSystemHook がハングしないようにするGit が継続被害者 git の可用性ラボ実証済み。脆弱パスとパッチ適用パスの両方でフック reply_ok
enlistment ルートからパイプ名を推測するGetGVFSPipeName が CWD から .gvfs まで遡り、CharUpper、: -> _、プレフィックス \\.\pipe\GVFS_推測可能な IPC 名偵察ラボ実証済み。C:\Repos\Foo\src -> \\.\pipe\GVFS_C_\REPOS\FOO
ライブインスタンスを奪取せずにパイプを再ターゲットする追跡対象の src\.gvfs ディレクトリを設置し、遡りが別の名前をバインドするようにするマウントと競合せずに占有完全性common.windows.cpp の遡りから推測。ラボでは実際の enlistment .gvfs を使用
MPL だけでなく DLO / PICN にも応答する同じパイプ、ReadObjectHook / PostIndexChangedHookオブジェクトについて偽る / skip-worktree完全性推測。ラボは MPL|1 のみ送信
2 バイトの S\x03 でフックをクラッシュさせるVirtualFileSystemHook の messageLength -= 2 の後 -= 1 でアンダーフローし、fwrite が約 4GiB を書き込むクラッシュ / OOB 読み取り可用性main.cpp 69-90 から推測。これはオラクルではない。このクラッシュを出荷しないこと

ここで除外: SYSTEM (マウントは enlistment ユーザー)。リモート未認証 RCE。ライブ Windows VM / インストール済み VFS for Git (このラボはコピーされた関数のガジェット)。

同じピンの残存: vfs-quote-breakout、vfs-mount-dehydrate、vfs-clone-acl、vfs-service-sid、vfs-install-cwd。

発見の経緯

2026-09-28 のマージ後、VFSForGit master ab95cf51 をピン留めしました。ネイティブフックは flags 0 で CreateFileW を呼びます。すると Windows はデフォルトで SecurityImpersonation になります。マウントパイプはすでに Users に追加インスタンス化を許可しています。これが残存です。

すでに記録済みの誤った道: これを残存 #2 の dehydrate として扱う (同じ ACL、異なるシンク: トークンであり、MoveDirectory ではない); SYSTEM と主張する; 4GiB アンダーフローをオラクルとして出荷する。茶番です。ネイティブ Windows が欠けていたため、ラボはそれらの関数のガジェットです。Unix ソケットが名前付きパイプの代役を務めます。

ラボ

python3 vfs-hook-impersonate-Abraxas-Labs.py

または

cd lab
./run.sh

ガジェット HTTP は 127.0.0.1:19670。GetGVFSPipeName、CreatePipeToGVFS のフラグ、Users の CreateNewInstance ACL、および MPL|1 / S| フックプロトコルをコピーします。SQOS identification を備えたパッチ適用済みクライアントは witness に書き込みません。最終行は how=gadget を使用します。

SUCCESS vfs-hook-impersonate how=gadget createfile-flags=0 impersonation=SecurityImpersonation extra-instance=yes owner=victim patched-sqos-ident-no-write=yes VFS-HOOK-IMPERSONATE-WITNESS

修正

フックの CreateFileW で SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION を渡します。CreatePipeByName を enlistment 所有者 SID と LocalSystem に制限します。Users に対する CreateNewInstance を削除します。フック応答長を境界チェックします。

参考資料

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a
  • common.windows.cpp CreatePipeToGVFS
  • WindowsPlatform.cs CreatePipeByName
  • CWE-284 · CWE-300

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード