제어되지 않은 자원 소비

Uncontrolled Resource Consumption

설명

제품이 제한된 자원의 할당과 유지 관리를 제대로 제어하지 않아 자원이 고갈될 수 있으며, 이는 서비스 거부로 이어질 수 있습니다.

잠재적 영향

  • 서비스 거부: 시스템이 속도가 느려지거나, 충돌하거나, 사용자 접근이 제한될 수 있습니다.

  • 리소스 오버로드: CPU, 메모리 등 제한된 자원 소비 증가로 시스템 마시가 올수있습니다.

해결 방법

  1. 자원 할당 시 최대 할당량을 정의하여 무제한 allocation을 방지하십시오.

  2. 실행 후 자원을 확실히 반환하도록 코드 설계하십시오.

  3. 파일, 데이터베이스 연결 등을 사용한 후 닫는 것을 잊지 마십시오.

  4. 정해진 자원 사용 이상의 요청에 대해 스로틀링을 적용하십시오.

취약한 코드 및 안전한 코드 예시

취약한 코드

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