시큐어코딩
- home
- 보안소식
- 시큐어코딩
37. [코드오류] Null Pointer 역참조
2019.07.17 15:19
안녕하세요 지에스인포입니다.
오늘 살펴 볼 보안 취약점 항목은 '코드오류' 카테고리의 'Null Pointer 역참조' 항목입니다.
# Null Pointer 역참조 : 일반적으로 객체가 널(Null)이 될 수 없다는 가정을 위반했을 때 발생하는 보안 취약점
널 포인터 (Null Pointer) 역참조는 프로그램에서 일반적으로 객체가 Null이 될 수 없다는 가정을 위반했을 때 발생합니다. 이게 무슨 뜻인지를 이해하려면 먼저 시스템과 프로그래밍의 원리를 알아야 하는데요.
프로그램의 객체(Objection)는 생성이 되면 메모리 공간에 할당되어 저장됩니다. 그래서 해당 객체를 불러 올 때 그 객체가 저장 된 메모리의 위치에 가서 해당 내용을 호출하는 원리로 시스템이 작동하게 되는데요. 이 때 객체의 값을 불러오기 위해서는 반드시 해당 데이터가 저장 된 메모리의 위치 주소가 필요합니다.
그런데 객체가 Null인 경우에는 객체 자체가 아예 없기 때문에, 객체의 내용을 저장하는 메모리의 위치 주소값도 없게 되는데요. 이 때 문제가 발생하게 됩니다. 만약 Null 인 객체를 호출하게 되면, 시스템은 해당 객체의 내용을 불러오기 위해 해당 객체가 저장 된 메모리의 주소값을 따라 가게 되는데, 주소값이 없으므로 프로그램 로직이 갈 곳을 잃어버리게 되는 것이죠. 따라서 갈 곳 잃은 프로그램은 작동을 멈추게 됩니다.
따라서 이러한 널 포인터 역참조를 방지하기 위해서는 미리 해당 값이 Null 값이 아니라는 것을 체크해 주는 로직을 설계해야 하는데요, Null Pointer Exception에 대한 예외처리를 해 주는 것이 필요합니다.
위 소스코드는 파라미터 값을 불러올 때 Null Pointer Exception에 대한 예외처리를 제대로 해 주고 있지 않습니다. 이렇게 하면 널 포인트 역참조 보안취약점이 발생 할 수 있습니다.
따라서 위와 같이 Null 값을 체크 해 주는 로직을 만들어주어야 안전한 코딩이 될 수 있습니다.
오늘은 널 포인트 역참조 항목에 대해 알아보았습니다.
다음에도 새로운 소식으로 찾아뵙는 지에스인포 되겠습니다!