Skip to content

Unbounded list limit #26

@pimlock

Description

@pimlock

Summary

The list RPCs (ListSandboxes, ListProviders, ListInferenceRoutes) take limit and offset from the client. When limit is 0, the code uses a default (e.g. 100); otherwise it uses the client-provided value as-is. There is no upper bound. A client can send limit = 4294967295 (u32::MAX) and cause the server to load and return a very large number of records, stressing memory and the store and potentially causing DoS.

Source Code

  • crates/navigator-server/src/grpc.rs: in list_sandboxes (lines 359-368), limit is either request.limit or 100, then passed to store.list(). Same pattern in the list providers handler (lines 473-481).
  • crates/navigator-server/src/inference.rs: in list_inference_routes (lines 243-253), limit is set the same way.

Originally by @drew on 2026-02-19T08:59:54.892-08:00

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions