
소프트웨어 개발 과정에서 입력 데이터 검증은 필수적인 보안 조치입니다.
적절한 검증이 이루어지지 않을 경우, 예상치 못한 입력값으로 인해 프로그램이 비정상적으로 동작하거나 공격자가 시스템을 악용할 수 있습니다.
보안 취약점을 체계적으로 분류한 CWE(Common Weakness Enumeration)와 웹 보안 가이드라인을 제공하는 OWASP(Open Worldwide Application Security Project)는 입력 검증 실패로 인한 다양한 취약점을 주요 보안 이슈로 다루고 있습니다.
대한민국 정부 또한 행정자치부 발행「소프트웨어 개발보안 가이드」를 통해 개발 초기 단계에서부터 입력 검증과 같은 기본적인 보안 조치의 중요성을 강조하고 있습니다.
이번 글에서는 CWE와 OWASP에서 중점적으로 경고하는 대표적인 입력 검증 취약점인 정수형 오버플로우(Integer Overflow)에 대해 알아보고, Sparrow SAST 와 간단한 C 코드 예제와 함께 안전한 개발 방법을 알아보겠습니다.
정수형 오버플로우 (Integer Overflow)
정수형 오버플로우는 정수형 자료가 표현할 수 있는 최댓값을 초과할 때 발생하는 취약점입니다.
이는 CWE-190 (Integer Overflow or Wraparound)에서 정의하고 있으며, 공격자가 이를 통해 메모리 계산을 우회할 수 있습니다.
취약한 코드 예시 및 해소 방안
다음 코드는 사용자로부터 정수형 입력을 받아 메모리를 할당하는 예제입니다.
그러나 입력값에 대한 유효성 검사가 없어 오버플로우가 발생할 수 있습니다.

취약점 해소 방안으로는 다음과 같은 방법을 이용할 수 있습니다.
- 언어별 정수타입의 범위 확인 후 사용
- 정수형 변수를 연산에 사용하는 경우, 결과값의 범위 체크 모듈 사용
- 외부입력 값을 동적메모리 할당에 사용 시 변수값이 적절한 범위 내에 존재하는 값인지 확인
아래 그림은 위의 취약점 해소방안을 적용한 코드입니다.

CWE, OWASP, 그리고「소프트웨어 개발보안 가이드」등 다양한 기준을 참고하여, 개발 초기 단계부터 철저한 입력 검증 체계를 구축하는 것은 안전한 소프트웨어 개발의 핵심입니다.
Sparrow 정적 분석 도구는 소스 코드를 자동 분석하여 다양한 보안 취약점 탐지 및 수정 방안을 제시합니다.
이를 통해 개발자는 잠재적인 보안 문제를 사전에 예방할 수 있으며, 품질관리자나 QA 조직은 분석 결과를 실시간으로 공유하고 다양한 관리 도구와 연계하여 품질 관리 시스템을 효율적으로 운영할 수 있습니다.
이러한 도구를 통한 정적 분석 기반의 보안 및 품질 점검 활동은 시스템의 안정성과 보안성을 동시에 확보하는 데 효과적인 방법입니다.
문의 및 기술 협력
모아소프트는 오버플로우 현상 해결은 물론, 코딩의 일관된 품질 유지 및 산업별 코딩표준, 보안약점, 취약점을 검사할 수 있는 다양한 도구(LDRA, SPARROW SAST/SAQT 등)를 제공하고 있습니다.
관련 솔루션 및 교육도 함께 제공하고 있어 사이버 보안 사고를 효과적으로 예방할 수 있도록 지원해 드립니다.
- 대표 문의: 02-420-3203
- 홈페이지: https://moasoftware.co.kr/contact-us/
Reference
– CWE – Common Weakness Enumeration (https://cwe.mitre.org/)
– CWE-190: Integer Overflow (https://cwe.mitre.org/data/definitions/190.html)
– OWASP – Open Worldwide Application Security Project (https://owasp.org/)
– 대한민국 행정자치부, 「소프트웨어 개발보안 가이드」








