From the 1.A.2 security review (Minor + forward-looking):
NUNCIO_GRPC_ADDR is passed straight to TcpListener::bind with no check that it resolves to loopback; NUNCIO_GRPC_ADDR=0.0.0.0:9420 would silently expose the API on all interfaces (bounded by the 256-bit bearer token, so defense-in-depth). Reject or tracing::warn! when the resolved bind IP is non-loopback.
Auth is attached per-service via SystemServer::with_interceptor. When a second gRPC service is added later, it must get its own interceptor — add a guard/comment so no service can be mounted un-intercepted.
From the 1.A.2 security review (Minor + forward-looking):
1. `NUNCIO_GRPC_ADDR` is passed straight to TcpListener::bind with no check that it resolves to loopback; `NUNCIO_GRPC_ADDR=0.0.0.0:9420` would silently expose the API on all interfaces (bounded by the 256-bit bearer token, so defense-in-depth). Reject or tracing::warn! when the resolved bind IP is non-loopback.
2. Auth is attached per-service via SystemServer::with_interceptor. When a second gRPC service is added later, it must get its own interceptor — add a guard/comment so no service can be mounted un-intercepted.
Superseded by #201 (M6) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.
Superseded by #201 (M6) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
From the 1.A.2 security review (Minor + forward-looking):
NUNCIO_GRPC_ADDRis passed straight to TcpListener::bind with no check that it resolves to loopback;NUNCIO_GRPC_ADDR=0.0.0.0:9420would silently expose the API on all interfaces (bounded by the 256-bit bearer token, so defense-in-depth). Reject or tracing::warn! when the resolved bind IP is non-loopback.Superseded by #201 (M6) in the roadmap restructuring (milestones M1–M7). The replacement story carries the full, self-contained spec for a remote implementer. See docs/ROADMAP.md, docs/STORY-WORKFLOW.md, docs/HANDOFF.md.