FlawOpen

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

● CVE-2015-3306 · CVSS 10.0 · अति गंभीर
सुरक्षा अनुसंधान · FlawOpen

CVE-2015-3306: ProFTPD mod_copy में बिना प्रमाणीकरण फ़ाइल कॉपी

CVE-2015-3306 में बिना प्रमाणीकरण वाले क्लाइंट ProFTPD mod_copy कमांड से सर्वर पर फ़ाइलें कॉपी कर सकते थे। upstream सुधार SITE CPFR और SITE CPTO, दोनों हैंडलर में प्रमाणीकरण जाँचता है। CISA ने 2026-10-08 को इसे KEV में जोड़ा। 8 अक्तूबर 2026 को प्रकाशित FBI, CISA, NSA और साझेदार एजेंसियों की संयुक्त सलाह में CVE-2015-3306 को MicroScan स्क्रिप्ट से प्राप्त सफलतापूर्वक शोषित CVE की सूची में शामिल किया गया है; इसमें इस CVE के लिए किसी पीड़ित या घटना की तारीख नहीं बताई गई है।[1], [2], [5], [6]

💡 आसान भाषा में (ELI5)

ऐसे अभिलेख-कक्ष कर्मचारी की कल्पना करें जो किसी से भी “यह फ़ाइल कॉपी करें” और “कॉपी यहाँ रखें” अनुरोध स्वीकार करता है। केवल एक अनुरोध जाँचना पर्याप्त नहीं है; स्रोत और गंतव्य, दोनों चरण प्रमाणित सत्र से जुड़े होने चाहिए।[3]

इस पेज के मुख्य शब्द

SITE CPFR / SITE CPTO
सर्वर पर कॉपी के स्रोत और गंतव्य चुनने वाले ProFTPD mod_copy कमांड।[3], [5]
mod_copy
सर्वर-पक्ष फ़ाइल कॉपी कमांड देने वाला वैकल्पिक ProFTPD मॉड्यूल।[3], [5]
CWE-284
अनुचित अभिगम नियंत्रण: आवश्यक अनुमति के बिना संरक्षित कार्रवाई तक पहुँचना।[1]

फ्रेमवर्क मैपिंग

मूल कारण विश्लेषण (Root Cause)

प्रभावित ProFTPD 1.3.5 परिनियोजन में, जहाँ mod_copy उपलब्ध और सक्षम था, copy_cpfr() और copy_cpto() बिना प्रमाणित सत्र की माँग किए SITE CPFR/SITE CPTO कमांड पथ स्वीकार करते थे। upstream PR #109 ने कमांड-डिस्पैच की शुरुआती जाँचों के बाद, लेकिन न्यूनतम तर्क-संख्या के सत्यापन, स्रोत/लक्ष्य पथ के प्रसंस्करण और कॉपी कार्रवाई से पहले दोनों हैंडलर में प्रमाणीकरण स्थिति की जाँच जोड़ी; सत्र प्रमाणित न होने पर FTP 530 / EPERM लौटता है। मॉड्यूल की पहुँच ProFTPD प्रक्रिया की ऑपरेटिंग-सिस्टम अनुमतियों तक सीमित रहती है, इसलिए फ़ाइलों पर प्रभाव उन अनुमतियों और कॉन्फ़िगरेशन पर निर्भर है। Debian ने मनमाना कोड निष्पादन को संभावित बताया, स्वचालित नहीं; इसके लिए तैनाती-विशिष्ट अतिरिक्त शर्तें चाहिए, जैसे लिखने योग्य पथ जिसे बाद में कोड के रूप में चलाया जाए।[3], [5], [4]

ऑपरेटर मैट्रिक्स: एक्सपोज़र और फिक्स्ड पैकेज की जाँच

डिप्लॉयमेंट स्थितिस्रोत क्या स्थापित करते हैंरक्षक की कार्रवाई
ProFTPD 1.3.5 में mod_copy उपलब्ध और सक्षमUbuntu रिकॉर्ड SITE CPFR और SITE CPTO से दूरस्थ फ़ाइल पढ़ने/लिखने का वर्णन करता है; NVD ProFTPD 1.3.5 को प्रभावित बताता है।सटीक पैकेज बिल्ड, मॉड्यूल लोड स्थिति और कमांड एक्सपोज़र की पुष्टि करें; डिस्ट्रिब्यूशन के फिक्स्ड पैकेज पर अपग्रेड करें।
Upstream fix: PR #109 / commit 35b65aaपैच कॉपी ऑपरेशन से पहले copy_cpfr() और copy_cpto() दोनों में authentication checks जोड़ता है।पुष्टि करें कि दोनों कमांड unauthenticated sessions को अस्वीकार करते हैं; filesystem permissions को अलग सीमा मानें।
Debian wheezy / jessie / stretch और sidDebian ने इन शाखाओं को क्रमशः 1.3.4a-5+deb7u3, 1.3.5-1.1+deb8u1, और 1.3.5-2 में ठीक किया।इंस्टॉल किए Debian package revision को संबंधित fixed version से मिलाएँ; केवल upstream version number पर निर्भर न रहें।
CopyEngine off समर्थनPR #109 यह directive जोड़ता है; module documentation के अनुसार यह 1.3.6rc1 से समर्थित है।जहाँ installed version समर्थन करता हो और feature आवश्यक न हो, CopyEngine off उपयोग करें; अन्यथा module हटाएँ या upgrade करें।

हमले का चरण-दर-चरण प्रवाह

चरण 1

बिना प्रमाणीकरण सत्र mod_copy तक पहुँचता है

प्रभाव तब लागू होता है जब प्रभावित मॉड्यूल मौजूद और कॉपी कमांड उपलब्ध हों।[5], [1]

चरण 2

कॉपी कमांड प्रमाणीकरण नहीं जाँचते

पैच से पहले CPFR और CPTO सत्र की प्रमाणीकरण स्थिति जाँचे बिना आगे बढ़ सकते थे।[3]

चरण 3

सर्वर अपनी अनुमतियों के भीतर कॉपी करता है

सेवा खाते की पहुँच वाली फ़ाइलें उजागर या बदली जा सकती हैं; कोड निष्पादन अतिरिक्त स्थितियों पर निर्भर है।[5], [4]

चरण 4

पैच दोनों कार्रवाइयों की रक्षा करता है

upstream बदलाव हर हैंडलर में कॉपी लॉजिक से पहले प्रमाणीकरण त्रुटि लौटाता है।[3]

सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन

कमज़ोर अंश में copy_cpfr() के भीतर प्रमाणीकरण जाँच नहीं है; सुरक्षित अंश तर्क जाँच और स्थिति परिवर्तन से पहले upstream सत्र-स्थिति जाँच जोड़ता है। PR #109 copy_cpto() में भी यही सुरक्षा जोड़ता है। यह स्रोत कोड का अंश है, स्वतंत्र प्रोग्राम नहीं।[3]

कमज़ोर कार्यान्वयन
/* upstream 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);
/* Authentication जाँचे बिना source-path handling जारी रहती है। */
सुरक्षित और सुदृढ़ फ़िक्स
/* copy_cpfr() के upstream सुधार, 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);

इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट

स्रोत