Skip to content

docs: add trust consequences and disposition rules to THREAT_MODEL.md - #22236

Merged
ahrtr merged 2 commits into
etcd-io:mainfrom
PushkarJ:patch-1
Jul 31, 2026
Merged

docs: add trust consequences and disposition rules to THREAT_MODEL.md#22236
ahrtr merged 2 commits into
etcd-io:mainfrom
PushkarJ:patch-1

Conversation

@PushkarJ

Copy link
Copy Markdown
Contributor

What this PR does

Extends THREAT_MODEL.md with explicit trust consequences and finding-disposition
rules, while keeping the existing boundary structure and assumptions unchanged:

  • Client and peer boundaries now state that traffic which has passed mTLS is
    trusted input, and that a vulnerability report must show unauthenticated
    reachability or privilege escalation — crashes and resource exhaustion from
    authenticated senders are robustness defects.
  • New boundaries for authentication/authorization semantics (RBAC is an
    optional secondary control; watch permission revocation is eventually
    consistent by design) and for build/release/CI tooling (scripts/, tools/,
    hack/, .github/ are not product attack surface).
  • New sections scoping best-effort components (grpc-proxy, gateway,
    cache, contrib/) and non-default or test-only configuration (pprof,
    expvar, debug logging, tracing, unix(s):// listeners).
  • Reporting section defining when a finding qualifies as a vulnerability,
    with an explicit note that robustness and hardening findings remain welcome
    through normal issues and PRs — "not a vulnerability" never means
    "do not report".

Why

Codifying the disposition rules lets researchers and automated tooling self-filter these
classes before reporting, while steering real robustness fixes to the normal
contribution flow instead of the security-disclosure process.

No behavioral or code changes; documentation only.

AI assisted: drafting the document restructure, commit message, and PR description

@kubernetes-prow

Copy link
Copy Markdown

Hi @PushkarJ. Thanks for your PR.

I'm waiting for a etcd-io member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@PushkarJ
PushkarJ force-pushed the patch-1 branch 2 times, most recently from 6bb9fa6 to 92dc0c2 Compare July 30, 2026 20:38
Comment thread THREAT_MODEL.md
@ahrtr

ahrtr commented Jul 31, 2026

Copy link
Copy Markdown
Member

It looks really good!!! It should be able to reduce etcd SRC's burden. Thanks @PushkarJ

cc @fuweid @serathius

@ahrtr

ahrtr commented Jul 31, 2026

Copy link
Copy Markdown
Member

/ok-to-test

@serathius

Copy link
Copy Markdown
Member

+1 to what @ahrtr, this is really good.

Not sure if we need review from someone more familiar with security, but I found the contents really good (not a security expert).

Comment thread THREAT_MODEL.md
Comment on lines +108 to +109
Everything else — robustness defects behind trusted boundaries, hardening of best-effort components, build tooling, and non-default features — is welcome through normal issues and pull requests.
The project routinely accepts and backports such fixes; "not a vulnerability" never means "do not report".

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"not a vulnerability" never means "do not report"

Good!

@ahrtr

ahrtr commented Jul 31, 2026

Copy link
Copy Markdown
Member

Not sure if we need review from someone more familiar with security

FYI. @PushkarJ is a security expert. He is an active contributor in sig-security, I recall he is approvers of several sub-projects under sig-security.

I think this is mostly up to sig-etcd leads and etcd SRC. We also clarified that "not a vulnerability" never means "do not report" #22236 (comment)

@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.73%. Comparing base (87126ab) to head (6c5082e).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files

see 24 files with indirect coverage changes

@@            Coverage Diff             @@
##             main   #22236      +/-   ##
==========================================
- Coverage   69.75%   69.73%   -0.03%     
==========================================
  Files         449      449              
  Lines       38207    38207              
==========================================
- Hits        26652    26643       -9     
- Misses      10127    10134       +7     
- Partials     1428     1430       +2     

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87126ab...6c5082e. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ahrtr

ahrtr commented Jul 31, 2026

Copy link
Copy Markdown
Member

@PushkarJ please mark this PR ready to review when you feel comfortable. Thanks.

Comment thread THREAT_MODEL.md Outdated
Comment thread THREAT_MODEL.md
Comment thread THREAT_MODEL.md Outdated
Comment thread THREAT_MODEL.md Outdated
@PushkarJ
PushkarJ marked this pull request as ready for review July 31, 2026 16:49
Comment thread THREAT_MODEL.md Outdated
Comment thread THREAT_MODEL.md
Comment thread THREAT_MODEL.md Outdated
@PushkarJ
PushkarJ force-pushed the patch-1 branch 2 times, most recently from b397bb4 to 9fd301d Compare July 31, 2026 17:20
The threat model defines trust boundaries but not the dispositions
that follow from them. As a result, automated scanners and security
researchers repeatedly report findings that maintainers must rebut by
hand-deriving the same conclusions: malformed-input crashes behind
authenticated peer/client transport are robustness defects, grpc-proxy
and contrib are best-effort components, CI and release scripts are not
product attack surface, diagnostic endpoints are non-default operator
opt-ins, and watch permission revocation is eventually consistent by
design.

Make these dispositions explicit so reports can be evaluated against
the document directly:

* State that traffic which has passed client or peer mTLS is trusted
  input, and what a report against those boundaries must demonstrate.
* Add boundaries for authentication/authorization semantics and for
  build, release, and CI tooling.
* Add sections scoping best-effort components and non-default or
  test-only configuration.
* Add a reporting section clarifying that robustness and hardening
  findings remain welcome as normal issues and pull requests.

AI assisted: drafting the document restructure, commit message, and PR description

Signed-off-by: "Pushkar Joglekar 3390906+PushkarJ@users.noreply.github.com"
Signed-off-by: Pushkar Joglekar <pushkar.joglekar@broadcom.com>
Comment thread THREAT_MODEL.md Outdated
Comment on lines +94 to +96
Except for `/debug/vars` and `--enable-pprof`, these facilities are **disabled by default**. Enabling them is an explicit operator decision that knowingly expands the attack surface.

The `/debug/vars` endpoint is protected by mTLS like other client APIs, and does not expose sensitive information. The `--enable-pprof` flag is also protected by mTLS and is expected to be used in trusted network.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't accurate. --enable-pprof is disabled by default. Only /debug/vars is an exception (enabled by default)

Please follow #22236 (comment)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies. I misunderstood the earlier comment thread: #22236 (comment)

@PushkarJ PushkarJ Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy pasted the suggestion from here to resolve it: #22236 (comment)

Comment thread THREAT_MODEL.md
Co-authored-by: Benjamin Wang <benjamin.wang@broadcom.com>
Signed-off-by: Pushkar Joglekar <pushkar.joglekar@broadcom.com>

@ahrtr ahrtr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! Thanks.

@kubernetes-prow

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ahrtr, PushkarJ, serathius

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

The pull request process is described 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

@ahrtr

ahrtr commented Jul 31, 2026

Copy link
Copy Markdown
Member

/retest

@ahrtr
ahrtr merged commit a279d15 into etcd-io:main Jul 31, 2026
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants