flawopen.com/Teardowns/cve-2015-3306-proftpd-mod-copy-unauthenticated-file-copy
CVE-2015-3306: ProFTPD mod_copy의 미인증 파일 복사
CVE-2015-3306으로 미인증 클라이언트가 ProFTPD mod_copy 명령을 사용해 서버 파일을 복사할 수 있었습니다. upstream 수정은 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 명령 경로를 처리했습니다. 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를 영향받는 버전으로 나열합니다. | 정확한 패키지 빌드, 모듈 로드 상태, 명령 노출 여부를 확인하고 배포판의 수정 패키지로 업그레이드하세요. |
업스트림 수정: 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 패키지 리비전을 해당 수정 버전과 비교하고 업스트림 버전 번호만 믿지 마세요. |
CopyEngine off 지원 | PR #109가 이 지시어를 추가했으며 모듈 문서는 1.3.6rc1부터 호환된다고 명시합니다. | 설치 버전이 지원하고 기능이 필요하지 않으면 CopyEngine off를 사용하고, 그렇지 않으면 모듈을 제거하거나 업그레이드하세요. |
단계별 공격 실행 흐름
소스 코드 비교: 취약한 구현 vs 보안 패치
취약한 발췌에는 copy_cpfr()의 인증 검사가 없습니다. 강화된 발췌는 인자 검증과 상태 변경 전에 upstream 세션 상태 검사를 추가합니다. 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 패키지로 업데이트하고, upstream 버전 문자열만 보지 말고 배포판 보안 공지에서 backport 여부를 확인합니다.[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)