oxidecomputer / oxidecomputer/omicron

Resends from `alert_receiver_probe` should require `CreateChild` on `AlertReceiver`

Open Beginner friendly
#9,924 0 comments 0 reactions 0 assignees View on GitHub

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:

https://github.com/oxidecomputer/omicron/blob/5552f18cad0b50d5ce8d99a688a5fd23c2d5f030/nexus/src/app/alert.rs#L433-L439

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.