Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1.2 KiB
2024-05-18 - Unprotected Dynamic Image Generation Endpoints
Vulnerability: The /api/og route generates an ImageResponse dynamically using next/og. Because this operation is computationally expensive and memory-intensive, unauthenticated endpoints lacking rate limiting act as prominent Denial of Service (DoS) vectors. Attackers can flood the endpoint with varying parameters, forcing the server to continually spawn compute-heavy tasks until resources are exhausted and the instance crashes or latency spikes to unacceptable levels.
Learning: Next.js dynamic endpoints that do not hit external upstream APIs or databases (like image generation with next/og) are often overlooked for rate limiting. Rate limiting is just as critical for protecting local compute resources as it is for protecting downstream API quotas or databases. Any route performing on-the-fly heavy processing must implement throttling.
Prevention: Apply the shared checkRateLimit utility (from @/lib/rate-limit) to all computationally expensive endpoints (such as next/og usage), even if they do not explicitly query external services. Ensure getConfig().rateLimitRpm is passed as the threshold to maintain configurable global protection.