Public /events stream exposes issue keys and sync.drift field values to anyone #80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
How found: while verifying the 2026-10-01 web deploy,
curl https://breadboard.breadway.dev/eventswith no cookie returnedHTTP/2 200and an open stream. Confirmed incrates/breadboard-server/src/http.rsthat/eventssits outside the authed/apirouter, and Documentation.md states/healthzand/eventsare public on purpose.Confidence: high that it is reachable unauthenticated (observed). Impact is a judgement call, hence low priority and filed as a question.
Explanation: every
BoardEventis broadcast to any subscriber on the internet. Most carry only ids and keys, butsync.driftincludesbreadboard_valueandforgejo_value(the actual field contents, e.g. a title or body),notifiedincludes user ids, andcard.createdreveals keys of repo-less planning projects (ROAD) that are not visible anywhere else publicly.Options: require the session cookie or bearer token on
/events(EventSource sends cookies withwithCredentials: true, which the web client already sets; the bread-emit/breadbar consumers use a token), or strip values fromsync.driftand keep the rest public. Update Documentation.md either way.Implemented in PR #82 at head
5b659de0f7dac7c88fb3fefcda2c81086311b1c1./eventsnow requires the existing session or bearer authentication. Added coverage for anonymous rejection and both supported client auth methods.Local verification passed:
cargo build --workspace,cargo test --workspace,cargo clippy --workspace --all-targets -- -D warnings,cargo run -p xtask -- check-docs,npm run check -w breadboard-web, andnpm run build. CI is pending. Workspacecargo fmt --checkreports pre-existing formatting drift in untouched files; changed Rust files were formatted.