SD-08
🧮 허용된 범위 내 메모리 접근 (설계)
설계단계 보안설계 · 입력검증
위험도: 상💡 쉽게 말하면
입력 길이를 확인하지 않고 메모리에 담으면, 정해진 칸보다 큰 짐을 욱여넣어 옆 칸을 망가뜨리는 것과 같습니다. 경계 검사와 안전 함수를 쓰고 정수 오버플로우까지 점검하도록 설계해야 합니다.
입력 길이를 확인하지 않고 메모리에 담으면, 정해진 칸보다 큰 짐을 욱여넣어 옆 칸을 망가뜨리는 것과 같습니다. 경계 검사와 안전 함수를 쓰고 정수 오버플로우까지 점검하도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 버퍼 크기를 넘는 긴 입력을 보내 메모리를 덮어쓴다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
길이 검사 없이 버퍼 복사
크기 계산에 오버플로우 방치
→ 버퍼/정수 오버플로우 → 임의코드 실행
✓ 안전한 설정
# 설계 결정
경계 검사·안전 함수 표준화
크기 연산 오버플로우 점검
→ 메모리 침범 차단
🔧 조치 방법
- 모든 버퍼/배열 접근에 길이·인덱스 경계 검사를 설계 규칙으로 포함합니다.
- 안전한 길이제한 함수(strncpy_s 등)를 표준으로 지정합니다.
- 크기 계산 시 정수 오버플로우를 점검하도록 설계합니다.
✅ 점검 체크리스트
- 경계 검사가 설계 규칙에 포함됨
- 안전 함수 표준이 정의됨
- 정수 오버플로우 점검이 설계됨
점검기준: 개발보안 설계기준 1.8 허용된 범위 내 메모리 접근