제어되지 않은 자원 소비
Uncontrolled Resource Consumption
설명
제품이 제한된 자원의 할당과 유지 관리를 제대로 제어하지 않아 자원이 고갈될 수 있으며, 이는 서비스 거부로 이어질 수 있습니다.
잠재적 영향
서비스 거부: 시스템이 속도가 느려지거나, 충돌하거나, 사용자 접근이 제한될 수 있습니다.
리소스 오버로드: CPU, 메모리 등 제한된 자원 소비 증가로 시스템 마시가 올수있습니다.
해결 방법
자원 할당 시 최대 할당량을 정의하여 무제한 allocation을 방지하십시오.
실행 후 자원을 확실히 반환하도록 코드 설계하십시오.
파일, 데이터베이스 연결 등을 사용한 후 닫는 것을 잊지 마십시오.
정해진 자원 사용 이상의 요청에 대해 스로틀링을 적용하십시오.
취약한 코드 및 안전한 코드 예시
취약한 코드
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileDownloadController {
@GetMapping("/download")
public void downloadFile(@RequestParam String fileName) {
// 대규모 파일 다운로드 메소드를 호출하지만 모든 연결에 무제한 리소스를 사용
File file = new File(fileName);
// 실제 파일 다운로드 로직
}
}안전한 코드
설명:
취약한 코드: 비제어된 대규모 파일 다운로드는 사용할 수 있는 리소스를 고갈 시켜 시스템을 느리게 하거나 멈추게 할 수 있습니다.
안전한 코드: 최대 연결 수를 제한하여 시스템 리소스를 고갈시키는 것을 방지합니다. 또한, 각 작업이 완료된 후에는 활성 연결 수를 감소시켜 자원을 해제합니다.
관련 CVE
참조
Last updated