민감한 정보의 비인가된 배우에게의 노출
Exposure of Sensitive Information to an Unauthorized Actor
설명
명시적으로 접근 권한을 부여받지 않은 배우에게 민감한 정보를 노출시킬 때 발생하는 취약점입니다.
잠재적 영향
민감 정보 노출 (Confidential Information Disclosure): 악의적 사용자가 민감한 데이터에 접근하여 시스템 및 사용자와 관련된 정보를 이용할 수 있음.
해결 방법
민감한 정보에 접근할 수 있는 사용자를 엄격하게 제한합니다.
필요한 최소 권한 원칙을 적용하여 민감한 데이터에 대한 접근 권한을 필요한 사용자에게만 부여합니다.
데이터를 저장, 전송 또는 처리할 때 암호화를 사용하여 정보의 노출을 방지합니다.
데이터를 로그에 저장할 때, 민감한 정보가 포함되지 않도록 필터링합니다.
보안 관련 로그는 민감한 정보를 포함하지 않도록 설정합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
@RestController
public class UserController {
@GetMapping("/user")
public String getUserInfo(@RequestParam String userId) {
// 위험한 코드: 모든 사용자 정보가 노출될 수 있음
return "Displaying user info: " + getUserDetails(userId);
}
private String getUserDetails(String userId) {
// 사용자 정보를 조회하는 메소드
return "User Details"; // 예시 데이터로 간단히 표현
}
}안전한 코드
설명:
취약한 코드: 비인증된 사용자가 임의의 사용자 ID로 요청을 보내면 민감한 사용자 정보에 접근할 수 있습니다. 이는 시스템의 개인정보 보호를 손상시킵니다.
안전한 코드: 인증된 사용자만 자신의 정보에 접근할 수 있도록 Principal 객체를 통해 사용자 인증 체크를 수행하여 민감한 정보 노출을 방지합니다.
관련 CVE
참조
Last updated