NULL 포인터 역참조
NULL Pointer Dereference
설명
프로그램이 유효하다고 예상되는 포인터를 역참조하지만, 그 포인터가 NULL일 때 발생하는 취약점입니다.
잠재적 영향
서비스 거부 (서비스 중단, 종료 또는 재시작): 시스템에서 NULL 포인터 역참조가 발생하면 프로세스가 실패하여 서비스가 중단되거나 예외 처리로 복구할 수 있습니다.
해결 방법
항상 포인터가 NULL이 아닌 지 확인하고 체크하세요.
예외 처리를 사용하여 NULL 포인터 상황을 처리하도록 하세요.
NULL 포인터가 발생할 가능성이 있는 외부 입력을 철저히 검증하세요.
취약한 코드 및 안전한 코드 예시
취약한 코드
public class UserController {
public String getUserById(HttpServletRequest request) {
String userId = request.getParameter("id");
User user = userService.findUserById(userId);
return user.toString(); // user가 NULL이면 NullPointerException 발생
}
}안전한 코드
설명:
취약한 코드: 호출된 findUserById 메서드가 NULL을 반환할 수 있으며, 그 경우 즉시 user.toString() 메서드가 호출되어 NullPointerException을 발생시킬 수 있습니다.
안전한 코드: findUserById 메서드의 결과를 검사하여, user가 NULL인 경우 적절한 예외를 발생시키므로 NullPointerException을 방지할 수 있습니다.
관련 CVE
참조
Last updated