SD-08

🧮 허용된 범위 내 메모리 접근 (설계)

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

위험도: 상
💡 쉽게 말하면
입력 길이를 확인하지 않고 메모리에 담으면, 정해진 칸보다 큰 짐을 욱여넣어 옆 칸을 망가뜨리는 것과 같습니다. 경계 검사와 안전 함수를 쓰고 정수 오버플로우까지 점검하도록 설계해야 합니다.

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

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

현재: 취약한 설정 — 공격이 통할까요?
# 버퍼 크기를 넘는 긴 입력을 보내 메모리를 덮어쓴다 # [공격 실행] 버튼을 누르면 시작합니다.

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

✗ 취약한 설정
# 설계 결정 길이 검사 없이 버퍼 복사 크기 계산에 오버플로우 방치 → 버퍼/정수 오버플로우 → 임의코드 실행
✓ 안전한 설정
# 설계 결정 경계 검사·안전 함수 표준화 크기 연산 오버플로우 점검 → 메모리 침범 차단

🔧 조치 방법

  1. 모든 버퍼/배열 접근에 길이·인덱스 경계 검사를 설계 규칙으로 포함합니다.
  2. 안전한 길이제한 함수(strncpy_s 등)를 표준으로 지정합니다.
  3. 크기 계산 시 정수 오버플로우를 점검하도록 설계합니다.

✅ 점검 체크리스트

  • 경계 검사가 설계 규칙에 포함됨
  • 안전 함수 표준이 정의됨
  • 정수 오버플로우 점검이 설계됨
점검기준: 개발보안 설계기준 1.8 허용된 범위 내 메모리 접근