부적절한 인증

Improper Authentication

설명

부적절한 인증은 사용하는 시스템에서 사용자의 신원을 확인하거나 증명하지 않거나, 불충분하게 증명함으로써 발생하는 취약점입니다. 이를 통해 공격자는 권한이 없는 데이터에 접근하거나 작업을 수행할 수 있습니다.

잠재적 영향

  1. 애플리케이션 데이터 읽기 (데이터 유출): 공격자가 인증 없이 애플리케이션 데이터를 접근할 수 있습니다.

  2. 권한 상승 혹은 신원 도용 (권한 오용): 권한이 없는 사용자가 더 높은 권한을 가지거나 다른 사용자의 신원을 도용할 수 있습니다.

  3. 승인되지 않은 코드 실행 또는 명령 실행 (무단 실행): 인증되지 않은 사용자가 시스템에서 권한 없이 코드를 실행할 수 있습니다.

해결 방법

  1. 강력한 인증 메커니즘을 사용하여 사용자 또는 시스템의 신원을 증명

  2. Multi-Factor Authentication(다중 요소 인증)을 적용

  3. 모든 인증 관련 데이터를 안전하게 저장하고 전송(예: HTTPS 사용)

취약한 코드 및 안전한 코드 예시

취약한 코드

@PostMapping("/login")
public String login(String username, String password, HttpSession session) {
    if (username.equals("admin") && password.equals("admin")) {
        session.setAttribute("user", "admin");
        return "dashboard";
    }
    return "login";
}

안전한 코드

설명:

  • 취약한 코드: 이 코드는 사용자 인증 시 고정된 사용자명과 비밀번호를 사용하고 있습니다. 이를 통해 공격자가 인증 절차를 우회할 수 있습니다.

  • 안전한 코드: 이 코드는 별도의 사용자 인증 서비스(Log-in Service)에 사용자 이름과 비밀번호를 전달하여 확인합니다. 이를 통해 강력한 인증 절차가 보장됩니다.

관련 CVE

참조

Last updated