NULL 포인터 역참조

NULL Pointer Dereference

설명

프로그램이 유효하다고 예상되는 포인터를 역참조하지만, 그 포인터가 NULL일 때 발생하는 취약점입니다.

잠재적 영향

  • 서비스 거부 (서비스 중단, 종료 또는 재시작): 시스템에서 NULL 포인터 역참조가 발생하면 프로세스가 실패하여 서비스가 중단되거나 예외 처리로 복구할 수 있습니다.

해결 방법

  1. 항상 포인터가 NULL이 아닌 지 확인하고 체크하세요.

  2. 예외 처리를 사용하여 NULL 포인터 상황을 처리하도록 하세요.

  3. 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