SD-04

⚙️ 시스템 자원 접근 및 명령어 수행 입력값 검증 (설계)

설계단계 보안설계 · 입력검증

위험도: 상
💡 쉽게 말하면
입력값을 시스템 명령에 끼워 실행하면, 심부름 쪽지에 몰래 다른 명령을 덧붙여 보내는 것과 같습니다. 가능하면 명령 호출 대신 안전한 API를 쓰고, 경로는 정규화하여 상위 폴더 이동(..)을 막도록 설계해야 합니다.

🎯 직접 해보기 — 공격을 실행해 보세요

아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.

현재: 취약한 설정 — 공격이 통할까요?
# 파일 이름 입력에 명령어와 경로 이동 기호를 끼워 넣는다 # [공격 실행] 버튼을 누르면 시작합니다.

📋 설정 비교 (왜 막혔나?)

✗ 취약한 설정
# 설계 결정 입력값으로 OS 명령/파일 경로 구성 → 명령 삽입 / 경로 조작(Traversal)
✓ 안전한 설정
# 설계 결정 OS 명령 호출 금지·대체 API 사용 경로 정규화 + 기준 디렉토리 검증 → 명령 삽입·경로 이탈 차단

🔧 조치 방법

  1. 가능하면 OS 명령 실행을 피하고 언어 표준 라이브러리 API로 대체하도록 설계합니다.
  2. 파일 경로는 정규화 후 허용된 기준 디렉토리 내부인지 검증하도록 설계합니다.
  3. 명령 인자는 화이트리스트로 제한합니다.

✅ 점검 체크리스트

  • OS 명령 실행 회피가 설계됨
  • 경로 정규화·기준 검증이 설계됨
  • 인자 화이트리스트가 정의됨
점검기준: 개발보안 설계기준 1.4 시스템 자원 접근 및 명령어 수행 입력값 검증