Skip to content

Add an availability and denial of service section to the threat model - #2260

Open
wallrj wants to merge 1 commit into
cert-manager:masterfrom
wallrj:threat-model-availability
Open

wallrj wants to merge 1 commit into
cert-manager:masterfrom
wallrj:threat-model-availability

Conversation

@wallrj

@wallrj wallrj commented Sep 2, 2026

Copy link
Copy Markdown
Member

The threat model page is thorough on confidentiality and integrity — reading Secret resources you should not, forging identities, confused deputy, SSRF — but says nothing at all about availability.

That gap matters more than it first appears, because cert-manager is not a per-tenant component. The controller and cainjector are leader-elected, so only one replica is ever active and they cannot be scaled horizontally (as best-practice.md already notes). One overloaded controller delays issuance and renewal for every tenant in the cluster, which makes resource exhaustion a cross-tenant concern rather than a local one. Someone reading the threat model to decide how to hand out RBAC currently gets no signal about that.

This adds an Availability and Denial of Service section under Specific Risks to Consider, covering the two ways a principal gets there:

  • Attacker-controlled workload — many Certificate resources, or deliberately expensive ones.
  • Attacker-controlled responses — cert-manager makes requests to servers named in Issuer and ClusterIssuer resources, and those responses are untrusted input even when the request was legitimate.

Both reduce to the RBAC advice the page already gives, so the section links back to it rather than restating it. It also cites GHSA-r4pg-vg54-wxx4 (oversized PEM) and GHSA-gx3x-vq4p-mhhv (malformed DNS response) as worked examples of the second class.

The closing point is the practical one: the Helm chart ships resources: {}, so by default the pods run BestEffort and controller memory growth becomes node-level pressure on unrelated workloads. That advice already exists in Scalability and Restrict the use of large RSA keys; this just connects the threat model to it instead of duplicating it.

Only content/docs is touched — the versioned snapshots are left alone.

Checks run locally: cspell clean, markdown-link-check exit 0, remark --frail exit 0.

Possible follow-up, not in this PR: a sweep for unbounded json.NewDecoder(resp.Body) / io.ReadAll(resp.Body) across the controller, so the second class is bounded by construction rather than found one advisory at a time.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JWqdR4ZapV8pjr5zJcA466

The threat model covers confidentiality and integrity in detail but says
nothing about availability, even though cert-manager is a single shared,
leader-elected component whose exhaustion affects every tenant.

Add a section covering the two ways a principal can get there: creating
expensive workload, and pointing cert-manager at a server that returns
hostile responses. Both reduce to the RBAC advice already given, so link
back to it rather than repeating it, and point at the existing scaling
and best practice pages for pod resource limits.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JWqdR4ZapV8pjr5zJcA466
Signed-off-by: Richard Wall <richard@the-moon.net>
@cert-manager-prow cert-manager-prow Bot added dco-signoff: yes Indicates that all commits in the pull request have the valid DCO sign-off message. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 2, 2026
@cert-manager-prow

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign thatsmrtalbot for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify

netlify Bot commented Sep 2, 2026

Copy link
Copy Markdown

Deploy Preview for cert-manager ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 34e503b
🔍 Latest deploy log https://app.netlify.com/projects/cert-manager/deploys/6a9811d91f343a00070dccd8
😎 Deploy Preview https://deploy-preview-2260--cert-manager.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates that all commits in the pull request have the valid DCO sign-off message. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant