다음을 통해 공유


안전한 정수 함수 사용

보안 문제를 최소화하는 한 가지 방법은 정수 오버플로 및 언더플로를 방지하는 것입니다. 정수 오버플로는 산술 연산의 결과가 이를 수신하도록 설정된 데이터 형식의 메모리 공간보다 클 때 발생합니다. 이로 인해 정수 잘림과 잘못된 결과가 발생합니다. 언더플로는 작업(일반적으로 빼기)이 잘못된 결과를 제공할 때 발생합니다. 두 데이터 형식 간에 캐스팅하면 새 메모리 공간에 맞지 않는 결과의 잘림으로 인해 잘못된 결과가 발생할 수도 있습니다.

ntintsafe 라이브러리는 커널 모드 코드에서 오버플로 및 언더플로를 방지하기 위해 경계를 검사하여 안전한 정수 산술 연산을 수행하는 C 함수 집합을 제공합니다. 이러한 함수는 애플리케이션 코드에서 사용되는 Windows IntSafe 함수에 해당합니다. 이러한 함수를 사용하여 인덱스 또는 버퍼 크기를 계산하거나 검사 다른 형태의 경계를 계산합니다. 함수는 속도에 최적화되어 있습니다.

안전한 정수 함수는 다음과 같은 이점을 제공합니다.

  • 대상 버퍼의 크기는 함수가 버퍼의 끝을 지나서 작성되지 않도록 항상 함수에 제공됩니다.

  • 버퍼는 작업이 의도한 결과를 자르더라도 null로 종료되도록 보장됩니다.

  • 모든 함수는 하나의 가능한 성공 코드(STATUS_SUCCESS)와 하나의 가능한 오류 조건(STATUS_INTEGER_OVERFLOW)만 사용하여 NTSTATUS를 반환합니다.

ntintsafe 라이브러리에는 두 가지 범주의 함수가 있습니다.

  • 변환 함수 - 이러한 함수는 두 데이터 형식 간에 변환을 수행합니다.

  • 산술 함수 - 이러한 함수는 각 데이터 형식에 대해 더하기, 빼기 및 곱하기 작업을 수행합니다.

Kernel-Mode 안전 정수 함수 요약

Kernel-Mode 안전한 정수 함수 가져오기