flawopen.com/Teardowns/cve-2015-3306-proftpd-mod-copy-unauthenticated-file-copy
CVE-2015-3306:ProFTPD mod_copyの未認証ファイルコピー
CVE-2015-3306では、未認証のクライアントがProFTPD mod_copyのコマンドを使ってサーバー上のファイルをコピーできました。上流修正はSITE CPFRとSITE CPTOの両ハンドラーで認証状態を確認します。CISAは2026-10-08に本件をKEVへ追加しました。 2026年10月8日公開のFBI、CISA、NSAなどの共同勧告は、CVE-2015-3306をMicroScanのスクリプトから確認された悪用成功CVEの一覧に含めています。このCVEについて、個別の被害者やインシデントの日付は示していません。[1], [2], [5], [6]
書庫の担当者が、誰からでも「このファイルを複製して」「コピーをここに置いて」という依頼を受ける状況を想像してください。片方だけを確認しても不十分です。コピー元とコピー先の両方の処理を、認証済みセッションに結び付ける必要があります。[3]
主要な概念と専門用語
CWE-284- 不適切なアクセス制御。必要な認可を満たさずに保護対象の操作へ到達できる弱点。[1]
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-284
- CISA KEV — 追加日 2026-10-08 — CVE-2015-3306
根本原因の分析 (Root Cause)
影響を受けるProFTPD 1.3.5の構成でmod_copyが利用可能かつ有効な場合、copy_cpfr()とcopy_cpto()は、セッション認証を要求せずにSITE CPFR/SITE CPTOの処理を受け付けていました。上流PR #109は、基本的なコマンド振り分けチェックの後、最小引数数の検証、コピー元/コピー先パスの処理、およびコピー操作の前に両ハンドラーで認証状態を確認する処理を追加し、未認証ならFTP 530 / EPERMを返します。モジュールの操作範囲はProFTPDプロセスのOS権限に制限されるため、ファイルへの影響はその権限と構成によって異なります。Debianは任意コード実行を自動的な結果ではなく「可能性」として記載しています。コードとして処理される書き込み可能なパスなど、構成固有の追加条件が必要です。[3], [5], [4]
運用マトリクス:露出条件と修正済みパッケージの確認
| デプロイ状態 | 情報源で確認できる内容 | 防御側の対応 |
|---|---|---|
ProFTPD 1.3.5 で mod_copy が利用可能かつ有効 | Ubuntu の記録は SITE CPFR と SITE CPTO によるリモートのファイル読み書きを説明し、NVD は ProFTPD 1.3.5 を影響対象として掲載しています。 | 正確なパッケージビルド、モジュールのロード状態、コマンドの公開状態を確認し、ディストリビューションの修正版へ更新してください。 |
upstream 修正:PR #109 / commit 35b65aa | このパッチはコピー処理の前に copy_cpfr() と copy_cpto() の両方へ認証チェックを追加します。 | 両コマンドが未認証セッションを拒否することを確認し、ファイルシステム権限は別の境界として扱ってください。 |
| Debian wheezy / jessie / stretch / sid | Debian は各系列をそれぞれ 1.3.4a-5+deb7u3、1.3.5-1.1+deb8u1、1.3.5-2 で修正しました。 | インストール済み Debian パッケージのリビジョンを該当する修正版と照合し、upstream のバージョン番号だけに頼らないでください。 |
CopyEngine off のサポート | PR #109 でこのディレクティブが追加され、モジュール文書は 1.3.6rc1 以降の互換性を示しています。 | 導入版が対応し機能が不要なら CopyEngine off を使い、それ以外はモジュールを外すか更新してください。 |
ステップ・バイ・ステップの攻撃フロー
ソースコード比較:脆弱 vs 堅牢化
脆弱な抜粋ではcopy_cpfr()に認証確認がありません。修正版は引数検証や状態変更の前に、上流のセッション状態確認を挿入します。PR #109はcopy_cpto()にも同じ保護を追加しています。単独で動作するプログラムではなく、ソースコードの抜粋です。[3]
/* 上流 PR #109 適用前の copy_cpfr() の抜粋。 */
if (cmd->argc < 3 ||
strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
return PR_DECLINED(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);
/* 認証確認なしでソースパスの処理が続行される。 */
/* copy_cpfr() の上流修正(PR #109)の抜粋。 */
unsigned char *authenticated = NULL;
if (cmd->argc < 3 ||
strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
return PR_DECLINED(cmd);
}
authenticated = get_param_ptr(cmd->server->conf, "authenticated", FALSE);
if (authenticated == NULL || *authenticated == FALSE) {
pr_response_add_err(R_530, _("Please login with USER and PASS"));
pr_cmd_set_errno(cmd, EPERM);
errno = EPERM;
return PR_ERROR(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);
エンジニアリング&システム堅牢化チェックリスト
- ✓修正を含む、ベンダーサポート対象のProFTPDパッケージへ更新してください。上流のバージョン番号だけでなく、ディストリビューションの告知でバックポートを確認します。[4], [5], [3]
- ✓mod_copyがビルド、ロード、有効化されているホストを特定します。不要なら、対応バージョンではCopyEngine offを設定し、このディレクティブがないバージョンではモジュールを削除します。[3], [5]
- ✓許可されたテスト環境でSITE CPFRとSITE CPTOの両方が未認証セッションを拒否し、認証済みユーザーも想定したファイル権限に制限されることを確認します。[3]
- ✓FTPログとファイル整合性ログで予期しないコピーを調査し、デーモンのファイル権限やアプリケーションの書き込み可能パスを基に影響を評価します。
参考資料
- NVD — CVE-2015-3306, CWE-284 and CISA KEV status
- CISA Known Exploited Vulnerabilities Catalog — CVE-2015-3306
- ProFTPD upstream fix — PR #109, commit 35b65aa
- Debian Security Advisory DSA-3263-1
- Ubuntu security record — CVE-2015-3306
- FBI/CISA/NSA and partner agencies — AA26-281A joint advisory (2026-10-08)