CopyMyWrite — DDMAとCopy-On-Writeを悪用したプロセス間コード実行のPoC
概要
CopyMyWriteは、DDMA(Direct Device Memory Access)ライブラリとOSのCopy-On-Write(COW)挙動を組み合わせて、あるプロセスから別プロセスにコードを注入・実行させるための概念実証プロジェクトです。著者はこれを使ってバウンティレポートを提出したことを示しており、PoCは主にWindows上のC++で実装されています。リポジトリには実験用のコード、ビルドファイル、関連資料へのリンクが含まれ、IOMMUやDMA対策の重要性を示す教材としても有用です。
リポジトリの統計情報
- スター数: 8
- フォーク数: 0
- ウォッチャー数: 8
- コミット数: 3
- ファイル数: 12
- メインの言語: C++
主な特徴
- DDMAを使った物理メモリアクセスを応用したクロスプロセス実行のPoC実装。
- OSのCopy-On-Writeメカニズムの挙動を悪用して、対象プロセスにコードを注入・実行させる手法を示す。
- C++/Windows向けのサンプルプロジェクト(Visual Studioソリューション含む)。
- 研究用途・セキュリティ評価用のデモと関連リソースリンクを収録。
技術的なポイント
このプロジェクトの要点は「外部からの物理メモリアクセス(DDMA)」と「仮想メモリのCOW挙動」を組み合わせることにあります。多くのOSでは、プロセス間でページを共有している場合、書き込みが発生するとコピーが作られてプライベートページへ切り替わる(COW)。DDMAはデバイスや専用ドライバを介して物理メモリを直接読み書きできるため、適切にタイミングを合わせればページの物理フレームを差し替える、あるいは物理上の内容を変更して間接的に別プロセスの仮想アドレス空間に影響を与える可能性があります。PoCはこの性質を利用し、ターゲットプロセスの実行可能ページに対して望ましいコードを配置して実行させることを示します。防御側の対策としてはIOMMUやDMA制御の適用、デバイス用ドライバの最小権限化、メモリ保護の強化(実行防止やページ属性管理)、そしてカーネル側の改竄検出や整合性チェックが考えられます。なお、本リポジトリは研究目的のPoCであり、実運用環境での悪用を助長する詳細な手順(低レベルな改竄手順やステップバイステップの攻撃フロー)は提供していません。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- CopyMyWrite.sln: file
- CopyMyWrite.vcxproj: file
- CopyMyWrite.vcxproj.filters: file
- LICENSE.md: file
…他 7 ファイル
READMEの抜粋:
CopyMyWrite
A proof of concept project which allows for cross process execution using DDMA and Copy on Write semantics.
Video
https://github.com/user-attachments/assets/090a0cc3-a3f9-4273-9695-2986bfd9692d
How it works
Read at readcc.net.
Reward
利用上の注意
- このリポジトリはセキュリティ研究と防御評価を目的としたPoCです。実環境での未許可の攻撃や悪用は法的・倫理的に問題があります。
- 実験は隔離されたラボ環境で、適切な許可を得たうえで行ってください。
- 防御策の評価やパッチ作成、バウンティ報告など正当なセキュリティ業務にのみ利用してください。
まとめ
DDMAとCOWを組み合わせた興味深いPoCで、IOMMUやDMA保護の重要性を再認識させる研究成果です(研究・防御評価向け)。
リポジトリ情報:
- 名前: CopyMyWrite
- 説明: Abusing DDMA alongside Copy On Write for Cross Process Code Execution for a 3000$ Bug Bounty
- スター数: 8
- 言語: C++
- URL: https://github.com/LabGuy94/CopyMyWrite
- オーナー: LabGuy94
- アバター: https://avatars.githubusercontent.com/u/37680107?v=4