SD-10
📁 업로드·다운로드 파일 검증 (설계)
설계단계 보안설계 · 입력검증
위험도: 상💡 쉽게 말하면
업로드 파일을 검사 없이 받고 실행 가능한 자리에 두면, 위험물 가방을 검색대 없이 들여보내는 것과 같습니다. 확장자와 MIME을 화이트리스트로 거르고 실행권한을 제거해 웹루트 밖에 저장하도록 설계해야 합니다.
업로드 파일을 검사 없이 받고 실행 가능한 자리에 두면, 위험물 가방을 검색대 없이 들여보내는 것과 같습니다. 확장자와 MIME을 화이트리스트로 거르고 실행권한을 제거해 웹루트 밖에 저장하도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 서버에서 실행되는 스크립트 파일을 업로드한다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
확장자 검증 없이 웹 경로에 저장
다운로드 경로를 입력값으로 결정
→ 웹쉘 / 임의 파일 다운로드
✓ 안전한 설정
# 설계 결정
확장자·MIME 화이트리스트 + 실행권한 제거
저장은 웹루트 외부, 식별자 매핑 다운로드
→ 업로드 실행·경로 이탈 차단
🔧 조치 방법
- 업로드는 확장자/콘텐츠 타입 화이트리스트와 크기 제한을 설계에 포함합니다.
- 저장 위치는 웹 실행경로 밖으로, 실행권한을 제거하도록 설계합니다.
- 다운로드는 실제 경로 대신 식별자→경로 매핑으로 처리하도록 설계합니다.
✅ 점검 체크리스트
- 업로드 화이트리스트가 설계됨
- 웹루트 외부 저장이 설계됨
- 식별자 매핑 다운로드가 설계됨
점검기준: 개발보안 설계기준 1.10 업로드·다운로드 파일 검증