[GH-ISSUE #3101] Dashboard triggers a flood of parallel API calls, causing CrowdSec to ban the client IP (http-crawl-non_statics) #17295

Open
opened 2026-05-18 17:47:06 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @Vigno04 on GitHub (May 17, 2026).
Original GitHub issue: https://github.com/fosrl/pangolin/issues/3101

Describe the Bug

When a user navigates to the Settings > Resources or proxy dashboard page (/settings/resources/proxy), the React/Next.js frontend client aggressively launches a massive flood of parallel client-side API requests to fetch individual certificate verifications, configuration details, and historical status logs for every single configured proxy (e.g. GET /api/v1/resource/{id}/status-history?days=30, GET /api/v1/org/{org}/certificate/domain1/{domain}, GET /settings/resources/proxy/{name}?_rsc=...).

For administrators running Pangolin behind a standard CrowdSec setup (with the default crowdsecurity/http-crawl-non_statics scenario enabled), this extreme spike of parallel requests to dynamic paths is flagged as an aggressive automated scanner or crawler. Consequently, CrowdSec immediately bans the administrator's IP address, completely locking them out of the Pangolin dashboard and all other proxy-hosted services with a 403 Forbidden error.

During a single load of this page, our Traefik access log recorded 119 successful dynamic GET requests in under 60 seconds from the client's browser, with bursts exceeding 25+ requests in a single second.

Environment

  • OS Type & Version: Ubuntu 24.04.4 LTS (Noble Numbat)
  • Pangolin Version: Enterprise Edition (fosrl/pangolin:ee-latest)
  • Gerbil Version: fosrl/gerbil:latest
  • Traefik Version: traefik:v3.5

To Reproduce

Steps to reproduce the behavior:

  1. Deploy a standard Pangolin stack with Traefik and CrowdSec enabled (specifically running the crowdsecurity/http-crawl-non_statics parser scenario).
  2. Configure a moderate to large list of proxy resources (e.g., 20 to 30 proxies).
  3. Log in to the Pangolin dashboard.
  4. Navigate to the Settings > Resources > Proxies page.
  5. The request rate immediately fills CrowdSec's standard leaky bucket threshold (which has a default capacity of 40 and a leak rate of 0.5 seconds / 2 requests per second).
  6. Refresh the page or click around. Your IP address gets banned, resulting in a sudden 403 Forbidden error on all subsequent requests.

Expected Behavior

The dashboard page should load lists of resources in a rate-limited or batched manner, rather than launching an unrestricted deluge of concurrent client-side requests:

Originally created by @Vigno04 on GitHub (May 17, 2026). Original GitHub issue: https://github.com/fosrl/pangolin/issues/3101 ### Describe the Bug When a user navigates to the Settings > Resources or proxy dashboard page (/settings/resources/proxy), the React/Next.js frontend client aggressively launches a massive flood of parallel client-side API requests to fetch individual certificate verifications, configuration details, and historical status logs for every single configured proxy (e.g. GET /api/v1/resource/{id}/status-history?days=30, GET /api/v1/org/{org}/certificate/domain1/{domain}, GET /settings/resources/proxy/{name}?_rsc=...). For administrators running Pangolin behind a standard CrowdSec setup (with the default crowdsecurity/http-crawl-non_statics scenario enabled), this extreme spike of parallel requests to dynamic paths is flagged as an aggressive automated scanner or crawler. Consequently, CrowdSec immediately bans the administrator's IP address, completely locking them out of the Pangolin dashboard and all other proxy-hosted services with a 403 Forbidden error. During a single load of this page, our Traefik access log recorded 119 successful dynamic GET requests in under 60 seconds from the client's browser, with bursts exceeding 25+ requests in a single second. ### Environment - OS Type & Version: Ubuntu 24.04.4 LTS (Noble Numbat) - Pangolin Version: Enterprise Edition (fosrl/pangolin:ee-latest) - Gerbil Version: fosrl/gerbil:latest - Traefik Version: traefik:v3.5 ### To Reproduce Steps to reproduce the behavior: 1. Deploy a standard Pangolin stack with Traefik and CrowdSec enabled (specifically running the crowdsecurity/http-crawl-non_statics parser scenario). 2. Configure a moderate to large list of proxy resources (e.g., 20 to 30 proxies). 3. Log in to the Pangolin dashboard. 4. Navigate to the Settings > Resources > Proxies page. 5. The request rate immediately fills CrowdSec's standard leaky bucket threshold (which has a default capacity of 40 and a leak rate of 0.5 seconds / 2 requests per second). 6. Refresh the page or click around. Your IP address gets banned, resulting in a sudden 403 Forbidden error on all subsequent requests. ### Expected Behavior The dashboard page should load lists of resources in a rate-limited or batched manner, rather than launching an unrestricted deluge of concurrent client-side requests:
Author
Owner

@LaurenceJJones commented on GitHub (May 18, 2026):

https://github.com/fosrl/pangolin/issues/3054

Please see above, as per installation agreement you will look after the crowdsec side.

Yes we can and will improve the api calls but for now you must use an expression whitelist.

<!-- gh-comment-id:4475147806 --> @LaurenceJJones commented on GitHub (May 18, 2026): https://github.com/fosrl/pangolin/issues/3054 Please see above, as per installation agreement you will look after the crowdsec side. Yes we can and will improve the api calls but for now you must use an expression whitelist.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/pangolin#17295