
CVE-2025-5548(FreeFloat FTP Server のバッファオーバーフロー)の分析と悪用を解説する教育用リポジトリです。再利用可能な脆弱性分析手法、静的リバースエンジニアリング、段階的な悪用手順、ファジングおよびデバッグ技術を用いた 0-day アプローチガイドが含まれています。

Anderson Steven — サイバーセキュリティ修士、モジュール6(脆弱性) 個人提出物: 脆弱性分析と悪用の方法論
「動くエクスプロイトはこれだ」とただ提出したくなかった。このリポジトリは、メモリ破壊の脆弱性に直面したときに私がどう仕事をするかをまとめたものだ。最初に何を見るか、どの順番で仮説を排除するか、各フェーズでどのツールを使うか、そしてなぜか。CVE-2025-5548を糸口として使っているのは、それが小さく扱いやすいケースだからだ。しかし、このリポジトリの中核となるドキュメント — METHODOLOGY.md — は「FreeFloat FTPを悪用する方法」のチュートリアルではなく、あらゆるバイナリに対する私の思考法であり、他のケースにも適用できる。
FreeFloat FTP Server 1.0は、10年以上前のWindows向けFTPサーバーで、メンテナンスされておらず、その欠陥が教科書的なものであるため、今でもエクスプロイト開発のラボで使われている。プロトコルの特定のコマンド(ここで扱うのはNOOPだが、これだけではない)を処理する際、クライアントが送信したものをstrcpyでスタック上の固定バッファにコピーし、入力の長さを確認しない。収まりきらないデータを送ると、スタックに保存されたリターンアドレスを上書きしてEIPを制御できる。
このバグの履歴を調査しているときに興味深く思ったことがある: 同じプログラミング上の欠陥が、異なるFTPコマンド(USER、PASS、HOST、NOOP...)からトリガーされ、最終的に複数の異なるCVEとして登録されている(CVE-2025-5548、CVE-2025-5667、CVE-2025-5220、CVE-2025-5075...)。
METHODOLOGY.md — 中核ドキュメント: 分析と悪用の方法論をフェーズごとに、各フェーズで適用するツールとマインドセット、そして未知の脆弱性(0-day)への取り組み方をまとめている。00-Environment/ — ラボの構築方法(被害者Windows、攻撃者Linux、インストール済みソフトウェア、ネットワーク)。脆弱なバイナリはBinaries/に含まれている。01-Vulnerability-Analysis/ — バイナリの診断: 欠陥がどこにあり、なぜ発生するのか。静的リバースエンジニアリングによる分析。02-Exploitation/ — 悪用の全プロセスをステップバイステップで文書化。各段階で使用したスクリプト付き。03-0day-Approach/ — まだ発見されていない脆弱性の探索にどう取り組むか: ファジング、ディフィング、リバースエンジニアリング、環境。images/ — ラボのスクリーンショット。セクションごとにサブフォルダがある。すべてのテストは隔離されたラボ(内部ネットワーク上の仮想マシンで、第三者システムへの接続なし)で実施された。コンテンツは専ら教育目的であり、許可なくインフラに対して使用することを意図したものではない。
基礎としてTheMalwareGuardian/CVE-2025-5548リポジトリを使用した。