Out of Bounds(OOB)

이동규·2026년 8월 9일

Layer7과제

목록 보기
14/22

Out of Bounds

배열의 임의의 인덱스에 접근할 수 있게 되었을 때 여러 문제들이 발생할 수 있다.

배열의 속성

배열은 연속된 메모리 공간을 점유하며

점유하는 공간의 크기는 요소의 개수와 요소의 자료형의 크기를 곱한 것이다.

예를 들어 int형 배열이 10개의 요소를 가지고 있다면 int의 크기가 4바이트인 환경에서는 총 40바이트의 공간을 사용하게 된다.

또한 배열의 각 요소는 일정한 간격으로 배치되어 있기 때문에 인덱스를 이용하여 원하는 요소에 접근할 수 있다.

발생

배열의 요소들의 범위에서 벗어나는(음수 혹은 범위보다 큰 수) 참조가 일어나고

이것을 경고해주거나 막아주는 컴파일러가 아닐 때 범위를 명시하지 않을시 발생한다.

예를 들어 크기가 10인 배열에서 0 ~ 9가 아닌 -1이나 10과 같은 인덱스에 접근하면 배열의 정상적인 범위를 벗어나게 된다.

이때 프로그램이 해당 접근을 막아주지 않는다면 배열에 인접해 있는 다른 메모리 영역을 읽거나 쓰게 될 수 있다.

정의

이처럼 요소를 참조할때 배열의 범위를 벗어나는 인덱스 값이 사용되는 것을 OOB라고 한다.

OOB는 단순히 잘못된 값을 읽는 것에서 끝나지 않고 프로그램의 동작에 영향을 줄 수도 있다.

특히 배열의 범위를 벗어난 메모리에 값을 쓸 수 있는 경우에는 다른 변수나 중요한 데이터가 변경될 수 있으며, 상황에 따라 메모리 손상이나 보안 취약점으로 이어질 수 있다.

따라서 배열을 사용할 때는 항상 인덱스가 배열의 유효한 범위 안에 있는지 확인하는 것이 중요하다.

0개의 댓글