FlawOpen

flawopen.com/Teardowns/cve-2015-3306-proftpd-mod-copy-unauthenticated-file-copy

● CVE-2015-3306 · CVSS 10.0 · Kritis
Riset Keamanan · FlawOpen

CVE-2015-3306: penyalinan file tanpa autentikasi pada ProFTPD mod_copy

CVE-2015-3306 memungkinkan klien tanpa autentikasi memakai perintah ProFTPD mod_copy untuk menyalin file di server. Perbaikan upstream memeriksa autentikasi pada kedua handler SITE CPFR dan SITE CPTO; CISA menambahkan kerentanan ini ke KEV pada 08-10-2026. Penasihat bersama FBI, CISA, NSA, dan mitra yang diterbitkan pada 8 Oktober 2026 mencantumkan CVE-2015-3306 di antara CVE yang berhasil dieksploitasi dan ditemukan dari skrip MicroScan; penasihat tersebut tidak menyebut korban atau tanggal insiden untuk CVE ini.[1], [2], [5], [6]

💡 Penjelasan Sederhana (ELI5)

Bayangkan petugas arsip yang menerima permintaan “salin file ini” dan “letakkan salinannya di sini” dari siapa pun. Memeriksa hanya satu permintaan tidak cukup; langkah sumber dan tujuan harus sama-sama terkait dengan sesi yang terautentikasi.[3]

Konsep Kunci & Istilah

SITE CPFR / SITE CPTO
Perintah ProFTPD mod_copy untuk memilih sumber dan tujuan penyalinan file di server.[3], [5]
mod_copy
Modul opsional ProFTPD yang menyediakan perintah penyalinan file di sisi server.[3], [5]
CWE-284
Kontrol akses yang tidak semestinya: operasi terlindungi dapat dicapai tanpa otorisasi yang diwajibkan.[1]

Pemetaan kerangka kerja

Analisis Akar Masalah (Root Cause)

Pada penerapan ProFTPD 1.3.5 yang terdampak, jika mod_copy tersedia dan aktif, copy_cpfr() dan copy_cpto() menerima jalur perintah SITE CPFR/SITE CPTO tanpa mewajibkan sesi terautentikasi. PR upstream #109 menambahkan pemeriksaan status autentikasi pada kedua handler setelah pemeriksaan dasar dispatch perintah, tetapi sebelum validasi jumlah argumen minimum, pemrosesan jalur sumber/tujuan, dan operasi salin; jika belum terautentikasi, handler mengembalikan FTP 530 / EPERM. Modul tetap dibatasi oleh izin sistem operasi proses ProFTPD, sehingga dampak pada file bergantung pada izin dan konfigurasi tersebut. Debian menyebut eksekusi kode arbitrer sebagai kemungkinan, bukan hasil otomatis; diperlukan kondisi tambahan yang spesifik pada penerapan, misalnya jalur yang dapat ditulis dan kemudian diproses sebagai kode.[3], [5], [4]

Matriks operator: paparan dan pemeriksaan paket yang telah diperbaiki

Status deploymentHal yang dipastikan sumberTindakan pertahanan
ProFTPD 1.3.5 dengan mod_copy tersedia dan aktifCatatan Ubuntu menjelaskan pembacaan dan penulisan file jarak jauh melalui SITE CPFR dan SITE CPTO; NVD mencantumkan ProFTPD 1.3.5 sebagai terdampak.Pastikan build paket, status pemuatan modul, dan paparan perintah yang tepat; perbarui ke paket perbaikan dari distribusi Anda.
Perbaikan upstream: PR #109 / commit 35b65aaPatch menambahkan pemeriksaan autentikasi pada copy_cpfr() dan copy_cpto() sebelum operasi penyalinan.Pastikan kedua perintah menolak sesi tanpa autentikasi; perlakukan izin sistem file sebagai batas yang terpisah.
Debian wheezy / jessie / stretch dan sidDebian memperbaiki cabang-cabang tersebut pada 1.3.4a-5+deb7u3, 1.3.5-1.1+deb8u1, dan 1.3.5-2, secara berurutan.Bandingkan revisi paket Debian yang terpasang dengan versi perbaikan yang sesuai; jangan hanya mengandalkan nomor versi upstream.
Dukungan CopyEngine offPR #109 menambahkan direktif ini; dokumentasi modul menyatakan kompatibilitas mulai 1.3.6rc1.Gunakan CopyEngine off jika versi terpasang mendukungnya dan fitur tidak diperlukan; jika tidak, hapus modul atau perbarui.

Alur Serangan Langkah demi Langkah

Langkah 1

Sesi tanpa autentikasi mencapai mod_copy

Masalah berlaku jika modul terdampak tersedia dan perintah penyalinan terbuka.[5], [1]

Langkah 2

Perintah penyalinan tidak memeriksa autentikasi

Sebelum patch, CPFR dan CPTO dapat berlanjut tanpa memeriksa status autentikasi sesi.[3]

Langkah 3

Server menyalin dalam batas izinnya

File yang dapat diakses akun layanan dapat terbuka atau berubah; eksekusi kode bergantung pada kondisi tambahan.[5], [4]

Langkah 4

Patch melindungi kedua operasi

Perubahan upstream mengembalikan galat autentikasi pada setiap handler sebelum logika penyalinan.[3]

Kode Sumber: Rentan vs Aman

Cuplikan rentan tidak memiliki pemeriksaan autentikasi pada copy_cpfr(); cuplikan yang diperkeras memasukkan pemeriksaan status sesi upstream sebelum validasi argumen dan perubahan status. PR #109 menerapkan perlindungan yang sama pada copy_cpto(). Ini cuplikan sumber, bukan program mandiri.[3]

IMPLEMENTASI RENTAN
/* Kutipan ringkas copy_cpfr() sebelum PR #109 upstream. */
if (cmd->argc < 3 ||
    strncasecmp(cmd->argv[1], "CPFR", 5) != 0) {
    return PR_DECLINED(cmd);
}
CHECK_CMD_MIN_ARGS(cmd, 3);
/* Penanganan path sumber berlanjut tanpa pemeriksaan autentikasi. */
PERBAIKAN AMAN & KUAT
/* Kutipan ringkas perbaikan upstream 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);

Daftar Periksa Penguatan Sistem Rekayasa

Sumber