oxidecomputer / oxidecomputer/omicron
Resends from `alert_receiver_probe` should require `CreateChild` on `AlertReceiver`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
Small but real (confirmed with @hawkw) perms issue found by 5.3 Codex: POST /v1/alert-receivers/{receiver}/probe?resend=true currently allows resend side effects with only ListChildren on the selected AlertReceiver.
The probe path authorizes with ListChildren here:
https://github.com/oxidecomputer/omicron/blob/5552f18cad0b50d5ce8d99a688a5fd23c2d5f030/nexus/src/app/webhook.rs#L174-L180
When resend=true and the probe succeeds, it queues resend deliveries here:
https://github.com/oxidecomputer/omicron/blob/5552f18cad0b50d5ce8d99a688a5fd23c2d5f030/nexus/src/app/webhook.rs#L225-L265
The explicit resend endpoint requires CreateChild on the same AlertReceiver resource:
Suggested fix
Require CreateChild (or Modify) on AlertReceiver in the probe+resend path (at least when resend=true) so permission requirements match the explicit resend API.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in nexus/src/app/webhook.rs at the alert_receiver_probe authorization and resend-delivery paths, then compare them with the explicit resend authorization in nexus/src/app/alert.rs. Done means the probe path requires the appropriate permission when resend=true, matching the explicit resend API, with authorization behavior covered by the relevant tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, authorization
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 75/100