PAM 인가 우회 (PAM Authorization Bypass)

PAM Authorization Bypass due to Incorrect Usage

설명

PAM(Pluggable Authentication Module)에서 pam_authenticate() 함수는 사용자의 자격 증명(credential) 만 검증합니다. 그러나 로그인 권한(authorization) 은 확인하지 않기 때문에 계정이 만료되었거나 비밀번호가 만료된 사용자도 로그인할 수 있는 보안 취약점이 발생할 수 있습니다.

따라서 pam_authenticate()를 호출한 후 반드시 pam_acct_mgmt()를 호출하여 계정 상태를 검증해야 합니다.

잠재적 영향

  • 만료된 계정 로그인 허용: 비활성화된 계정도 로그인할 수 있음.

  • 보안 정책 우회: 계정 잠금 정책(예: 너무 많은 로그인 시도 후 차단)이 적용되지 않을 수 있음.

  • 권한 없는 사용자 접근: pam_authenticate()만 사용하면 시스템에서 허용하지 않는 사용자가 접근할 수 있음.

해결 방법

  1. pam_acct_mgmt()를 추가하여 계정 상태를 확인

    • 계정이 활성 상태인지, 만료되지 않았는지 확인합니다.

  2. 최소 권한 원칙 적용

    • PAM을 사용하는 경우, 불필요한 모듈을 비활성화하고 보안 정책을 적용해야 합니다.

  3. 보안 로깅 활성화

    • 로그인 시도 및 실패한 인증을 로깅하여 보안 감사를 강화해야 합니다.

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

취약한 코드

안전한 코드

설명:

  • 취약한 코드:

    • pam_authenticate()만 사용하여 비밀번호가 만료된 계정도 로그인 가능.

  • 안전한 코드:

    • pam_acct_mgmt()를 추가하여 계정 상태를 확인한 후 로그인 허용.

참조

Last updated