SD-04
⚙️ 시스템 자원 접근 및 명령어 수행 입력값 검증 (설계)
설계단계 보안설계 · 입력검증
위험도: 상💡 쉽게 말하면
입력값을 시스템 명령에 끼워 실행하면, 심부름 쪽지에 몰래 다른 명령을 덧붙여 보내는 것과 같습니다. 가능하면 명령 호출 대신 안전한 API를 쓰고, 경로는 정규화하여 상위 폴더 이동(..)을 막도록 설계해야 합니다.
입력값을 시스템 명령에 끼워 실행하면, 심부름 쪽지에 몰래 다른 명령을 덧붙여 보내는 것과 같습니다. 가능하면 명령 호출 대신 안전한 API를 쓰고, 경로는 정규화하여 상위 폴더 이동(..)을 막도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 파일 이름 입력에 명령어와 경로 이동 기호를 끼워 넣는다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
입력값으로 OS 명령/파일 경로 구성
→ 명령 삽입 / 경로 조작(Traversal)
✓ 안전한 설정
# 설계 결정
OS 명령 호출 금지·대체 API 사용
경로 정규화 + 기준 디렉토리 검증
→ 명령 삽입·경로 이탈 차단
🔧 조치 방법
- 가능하면 OS 명령 실행을 피하고 언어 표준 라이브러리 API로 대체하도록 설계합니다.
- 파일 경로는 정규화 후 허용된 기준 디렉토리 내부인지 검증하도록 설계합니다.
- 명령 인자는 화이트리스트로 제한합니다.
✅ 점검 체크리스트
- OS 명령 실행 회피가 설계됨
- 경로 정규화·기준 검증이 설계됨
- 인자 화이트리스트가 정의됨
점검기준: 개발보안 설계기준 1.4 시스템 자원 접근 및 명령어 수행 입력값 검증