Rate-Limit Absence
ID |
rate_limit_absence |
Severity |
low |
Remediation Complexity |
medium |
Remediation Risk |
medium |
Remediation Effort |
medium |
Family |
API4:2023 - Unrestricted Resource Consumption |
CWE |
CWE-770 |
Resource |
configuration |
Language |
any |
Description
Fires on auth-required endpoints whose handler file and the project’s entry points (app.js, server.js, main.py, Program.cs, application.yml, …) show no evidence of a rate-limiting library or middleware. Findings are deduplicated to one per handler file — repeated routes in the same controller produce a single flaw.
Surfaced as LOW severity because static analysis cannot see infrastructure-level limits (gateway, WAF, nginx, reverse-proxy), so the finding is advisory until reviewed against the deployment environment.
Rationale
Without per-route rate limiting, an authenticated endpoint is a candidate for resource exhaustion (CPU / memory / database connection pool / third-party-API quota), credential-stuffing — even when the endpoint correctly rejects each attempt, throughput becomes the attack — and slow-burn enumeration of any object-id-by-id pattern that BOLA would otherwise be able to defend against.
OWASP API4:2023 — Unrestricted Resource Consumption — is one of the top three categories in public API breach reports. It’s also one of the cheapest to remediate: a single middleware registration covers an entire app.
Remediation
Add a rate-limit middleware or per-route annotation appropriate to your stack. A few common entry points:
-
Express:
app.use(rateLimit({ windowMs: 60_000, max: 100 }))fromexpress-rate-limit. -
Flask:
@limiter.limit("100/minute")fromflask-limiter. -
DRF:
throttle_classes = [UserRateThrottle]on the view +DEFAULT_THROTTLE_RATESin settings. -
Spring:
bucket4jBucket + filter, or@RateLimiter(Resilience4j). -
ASP.NET:
services.AddRateLimiter(…)+app.UseRateLimiter(). -
Laravel:
Route::middleware(['throttle:60,1']).
If infrastructure-level limits (nginx limit_req, AWS API Gateway usage plans, Cloudflare rules) already cover the endpoint, document that decision in xygeni.apisecurity.yml so future reviewers know the in-app library is intentionally absent. The detector does not currently introspect infrastructure config, so an exemption file is the right pattern.
Configuration
This detector does not require specific configuration. The set of recognised rate-limit libraries is built in and covers the mainstream stacks listed above.
References
-
OWASP API Security Top 10 (2023) - API4:2023 - Unrestricted Resource Consumption.
-
CWE-770 : Allocation of Resources Without Limits or Throttling.
-
OWASP Cheat Sheets Series: Denial of Service Cheat Sheet.