API4:2023 - Unrestricted Resource Consumption چیست

مهاجم به واسطه این آسیب پذیری می تواند به سبب عدم محدودیت در درخواست دسترسی به منابع امکان اختلال در وضیعت سرویس دهی API و همچنین منجرب به خطاهای عدم منابع کافی برای پردازش گردد.


مثال:

درخواست POST برای ارسال پیامک به شماره موبایل مشخص:


POST /api/sms/send

Body:

{

  "phone_number": "1234567890",

  "message": "Hello, this is a test message."

}



کد آسیب پذیر(NET.):


[ApiController]

[Route("api/resource")]

public class ResourceController : ControllerBase

{

    private readonly ResourceService _resourceService;



    public ResourceController(ResourceService resourceService)

    {

        _resourceService = resourceService;

    }



    [HttpPost]

    public IActionResult ProcessResource(ResourceRequest request)

    {

        // Process the resource request

        string result = _resourceService.Process(request);



        // Return the result

        return Ok(result);

    }



    // Other methods...

}


پیشگیری (NET.):


[ApiController]

[Route("api/resource")]

public class ResourceController : ControllerBase

{

    private readonly ResourceService _resourceService;



    public ResourceController(ResourceService resourceService)

    {

        _resourceService = resourceService;

    }



    [HttpPost]

    public IActionResult ProcessResource(ResourceRequest request)

    {

        // Validate the resource request

        if (!IsValidRequest(request))

        {

            return BadRequest();

        }



        // Process the resource request with resource consumption limits

        bool success = _resourceService.ProcessWithLimits(request);



        // Check if the resource consumption was successful

        if (!success)

        {

            return StatusCode((int)HttpStatusCode.TooManyRequests);

        }



        // Return the result

        return Ok("Resource processed successfully");

    }



    private bool IsValidRequest(ResourceRequest request)

    {

        // Implement your validation logic here

        // Check if the request is valid

        // Return true if valid, false otherwise

    }



    // Other methods...

}


کد آسیب پذیر (جاوا):

@RestController

@RequestMapping("/api")

public class ResourceController {



    private final ResourceService resourceService;



    public ResourceController(ResourceService resourceService) {

        this.resourceService = resourceService;

    }



    @PostMapping("/resource")

    public ResponseEntity<String> processResource(@RequestBody ResourceRequest request) {

        // Process the resource request

        String result = resourceService.process(request);



        // Return the result

        return ResponseEntity.ok(result);

    }



    // Other methods...

}



پیشگیری (جاوا):

@RestController

@RequestMapping("/api")

public class ResourceController {



    private final ResourceService resourceService;



    public ResourceController(ResourceService resourceService) {

        this.resourceService = resourceService;

    }



    @PostMapping("/resource")

    public ResponseEntity<String> processResource(@RequestBody ResourceRequest request) {

        // Validate the resource request

        if (!isValidRequest(request)) {

            return ResponseEntity.badRequest().build();

        }



        // Process the resource request with resource consumption limits

        boolean success = resourceService.processWithLimits(request);



        // Check if the resource consumption was successful

        if (!success) {

            return ResponseEntity.status(HttpStatus.TOO_MANY_REQUESTS).build();

        }



        // Return the result

        return ResponseEntity.ok("Resource processed successfully");

    }



    private boolean isValidRequest(ResourceRequest request) {

        // Implement your validation logic here

        // Check if the request is valid

        // Return true if valid, false otherwise

    }



    // Other methods...

}


پیشنهادات کلی جلوگیری:

محدودیت منابع مصرفی هر درخواست API، مانند محدودیت پهنای باند، تعداد درخواست‌ها در یک بازه زمانی معین و حداکثر تعداد پیامک‌ها یا تماس‌های تلفنی.

بررسی و اعتبارسنجی درخواست‌های API بر اساس سقف مجاز برای مصرف منابع و اعمال محدودیت‌های لازم.

استفاده از مکانیزم‌های محدودیت ترافیک و کنترل پهنای باند مانند محدودیت‌های پیشرفته شبکه (Advanced Network Limiting)، به منظور کنترل منابع مصرفی توسط هر کاربر یا سرویس.

نظارت و ثبت لاگ‌های مصرف منابع برای تشخیص الگوهای مشکوک و اقدام به اعتبارسنجی دقیق‌تر در صورت لزوم.

اجرای آزمون‌های تحمل بار (Load Testing) و ارزیابی عملکرد منابع سیستم به منظور تشخیص و پیشگیری از مشکلات مصرف منابع نامناسب.

برچسب خورده:
جهت ارسال ديدگاه وارد شويد و يا ثبت نام كنيد.