설명
권한의 할당, 변경, 추적 또는 점검이 부적절하여 필요 이상의 접근이나 작업을 허용하는 문제입니다.
잠재적 영향
- 공격자가 과도한 권한을 얻어 허용되지 않은 작업을 수행하거나 다른 사용자의 신분으로 행동할 수 있습니다.
해결 방법
- 최소 권한 원칙을 준수하여 사용자 및 프로세스에 필요한 최소한의 권한만 부여합니다.
- 역할 기반 접근 제어 (RBAC)를 사용하여 권한을 관리합니다.
- 권한 수정을 트래킹하는 로그를 유지하고 주기적으로 점검합니다.
- 권한 변경이 필요한 경우 반드시 검증된 프로세스를 통해 승인받아야 합니다.
@EnableMethodSecurity 등으로 메서드 보안을 활성화하고, Spring이 관리하는 객체의 보안 프록시를 통해 호출하는 구성을 전제로 합니다.
예시
변경 전
java
@PreAuthorize("hasRole('USER')")
public void performAdminTask() {
// 관리자 작업 수행
}
변경 후
java
@PreAuthorize("hasRole('ADMIN')")
public void performAdminTask() {
// 관리자 작업 수행
}
설명:
- 변경 전:
USER역할만으로 관리자 작업을 실행할 수 있습니다. - 변경 후: 이 메서드의 접근을
ADMIN역할로 제한합니다. 역할 자체도 적절한 사용자에게만 부여해야 합니다.
관련 CVE
- CVE-2001-1555: Terminal privileges are not reset when a user logs out.
- CVE-2001-1514: Does not properly pass security context to child processes in certain cases, allows privilege escalation.
- CVE-2001-0128: Does not properly compute roles.