정수 오버플로우 또는 랩어라운드
Integer Overflow or Wraparound
설명
프로그램이 계산 중에 정수 오버플로우 또는 랩어라운드를 일으켜 예측하지 못한 작은 값이나 음수를 생성할 수 있는 취약점입니다.
잠재적 영향
서비스 거부 (서비스 불가, 프로그램 종료 또는 재시작): 이 취약점은 프로세스가 너무 많은 자원을 요청해 서비스를 중단시킬 수 있습니다.
메모리 수정 (메모리 변경): 데이터 무결성이 중요한 경우, 데이터가 손상되거나 버퍼 오버플로우로 인해 메모리가 수정될 수 있습니다.
보호 메커니즘 우회 (접근 제어 우회): 보안에 중요한 결정을 내릴 때 정수값이 잘못 계산되어 보안상의 결정을 잘못하게 할 수 있습니다.
실행 논리 변경 (실행 논리 변경): 반복문에서 변경된 인덱스 값으로 인해 반복이 예상보다 더 많이 또는 적게 반복될 수 있습니다.
해결 방법
정수 오버플로우를 방지하기 위해 주의 깊게 데이터 타입을 선택합니다.
가능한 경우 BigInteger와 같은 데이터 타입을 사용하여 큰 수를 다룹니다.
라이브러리나 유틸리티 함수를 사용하여 오버플로우를 방지합니다.
수치 연산 전 값의 범위를 명확히 검증하여 오버플로우가 발생하지 않도록 합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드: 기존 코드는 정수 타입을 사용하므로 값이 너무 커지면 오버플로우가 발생할 수 있습니다.
안전한 코드: 개선된 코드는 BigInteger를 사용하여 오버플로우 없이 큰 수를 안전하게 처리합니다.
취약한 코드
안전한 코드
설명:
취약한 코드: 정수 오버플로우 방지를 위한 범위 검증 과정이 없어 큰 값 계산 시 문제가 발생할 수 있습니다.
안전한 코드: 오버플로우가 발생하지 않도록 계산 전에 값의 범위를 검증하여 안전성을 확보하세요.
관련 CVE
참조
Last updated