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()만 사용하면 시스템에서 허용하지 않는 사용자가 접근할 수 있음.
해결 방법
pam_acct_mgmt()를 추가하여 계정 상태를 확인계정이 활성 상태인지, 만료되지 않았는지 확인합니다.
최소 권한 원칙 적용
PAM을 사용하는 경우, 불필요한 모듈을 비활성화하고 보안 정책을 적용해야 합니다.
보안 로깅 활성화
로그인 시도 및 실패한 인증을 로깅하여 보안 감사를 강화해야 합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
pam_authenticate()만 사용하여 비밀번호가 만료된 계정도 로그인 가능.
안전한 코드:
pam_acct_mgmt()를 추가하여 계정 상태를 확인한 후 로그인 허용.
참조
Last updated