위험한 권한 설정 (Dangerous Permissions)
Incorrect Permission Assignment for Critical Resource
설명
애플리케이션이 RuntimePermission 또는 ReflectPermission을 과도하게 허용할 경우, 공격자가 악용하여 보안 체계를 우회할 수 있습니다.
특히, createClassLoader와 suppressAccessChecks 권한을 부여하면 실행 환경이 손상될 수 있으며, 악성 코드가 동적으로 로드될 가능성이 있습니다.
잠재적 영향
임의 코드 실행: 공격자가 악성 클래스를 로드하여 실행할 수 있음.
보안 검사를 우회:
suppressAccessChecks권한을 부여하면 Java의 접근 제어 메커니즘을 우회할 수 있음.보안 샌드박스 탈출: 보안 제한이 적용된 환경에서도 민감한 내부 API를 호출할 가능성이 있음.
해결 방법
불필요한 권한 제거
RuntimePermission("createClassLoader")및ReflectPermission("suppressAccessChecks")권한을 제거합니다.
보안 정책 적용
권한이 필요한 경우, 최소 권한 원칙을 적용하여 반드시 필요한 경우에만 허용합니다.
정적 분석 도구 활용
코드 내에서 위험한 권한이 설정되지 않았는지 정기적으로 검사합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
RuntimePermission("createClassLoader")을 허용하여 공격자가 자체적인 클래스 로더를 만들어 악성 클래스를 로드할 수 있음.ReflectPermission("suppressAccessChecks")을 허용하여 보호된 필드 및 메서드에 접근할 수 있음.
안전한 코드:
불필요한 권한을 제거하여 보안 강화를 수행.
참조
Last updated