This is an automated email from the ASF dual-hosted git repository.

smengcl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new a65a32e7c4b HDDS-16800. Add availability to THREAT_MODEL.md (#11451)
a65a32e7c4b is described below

commit a65a32e7c4bc246515742f08487c7fe6060e743f
Author: Siyao Meng <[email protected]>
AuthorDate: Mon Oct 12 12:10:59 2026 -0700

    HDDS-16800. Add availability to THREAT_MODEL.md (#11451)
    
    Co-authored-by: Claude Opus 5.5 <[email protected]>
---
 THREAT_MODEL.md | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/THREAT_MODEL.md b/THREAT_MODEL.md
index bbc943054b8..6fcace08428 100644
--- a/THREAT_MODEL.md
+++ b/THREAT_MODEL.md
@@ -9,6 +9,7 @@
 - **Author:** ASF Security team, via the threat-model-producer rubric (Scovetta
   rubric) at the Ozone PMC's request (path 3, confirmed siyao@ 2026-06-02).
 - **Status:** v1 — ratified by the Ozone PMC. Maintainer review complete 
(Siyao Meng / smengcl and Wei-Chiu Chuang / jojochuang, 2026-06/07); wave-1–3 
answers folded.
+- **Revisions:** 2026-10, availability added (§4, §7, §8 item 7, §9, §10, 
§11a, §13).
 - **Version binding:** versioned with the project; a report against version *N*
   is triaged against the model as it stood at *N*.
 - **Reporting cross-reference:** §8-violating findings go to
@@ -115,7 +116,8 @@ owns that boundary — an S3-Gateway finding from an 
untrusted REST client; an
 OM/SCM finding from an authenticated-but-unauthorized user; a block-access
 finding from a client without a valid token in a token-enabled deployment; a
 consensus finding from a Byzantine Datanode peer below the honest-majority
-threshold (§7).
+threshold (§7); an availability finding from an untrusted client or an
+authenticated non-admin user, with a small, fixed number of requests (§8 item 
7).
 
 ## §5 Assumptions about the environment
 
@@ -223,6 +225,7 @@ Per-boundary input trust (grouped by family):
 - **Authenticated-but-unauthorized user** — a valid Kerberos principal who
   tries to exceed their ACLs (read another bucket, escalate). In scope —
   authorization is the defence.
+- **Client attacking availability.** An untrusted client, or an authenticated 
non-admin user acting *within* their ACLs, who uses a small, fixed number of 
requests to stop a service for everyone else. In scope (§8 item 7). Attacks 
that depend on request volume are not (§9). *(maintainer, smengcl, 2026-10.)*
 - **On-path network attacker** — passive/active on the wire. In scope where the
   deployment has enabled transport encryption for the relevant protocol.
 - **Authenticated-but-Byzantine Datanode peer** — a compromised Datanode 
holding
@@ -237,7 +240,9 @@ Per-boundary input trust (grouped by family):
   on the path it serves**. *(maintainer — smengcl, 2026-06-23; checksum 
behaviour documented in 
[ozone-site#397](https://github.com/apache/ozone-site/pull/397).)*
 - **Out of scope:** compromised KDC / Ranger / SCM-CA-key / operator host;
   side-channel/co-tenant adversaries against the host; a client that an 
operator
-  has authorized to do the thing it did.
+  has authorized to do the thing it did. That exclusion covers the intended
+  effect of an authorized operation. It does not cover a service failure caused
+  by an operation a non-admin user was permitted to make (§8 item 7).
 
 ## §8 Security properties the project provides (secure mode)
 
@@ -273,6 +278,7 @@ Per-boundary input trust (grouped by family):
    rest when enabled (keys in KMS). *Violation:* plaintext on a transport
    configured for encryption / unencrypted blocks when TDE is configured.
    *Severity:* high. *(documented — protect-in-transit-traffic, SecuringTDE.)*
+7. **Availability under a small, fixed number of requests.** A small, fixed 
number of requests from an untrusted client or an authenticated non-admin user 
does not terminate or hang an Ozone service process, and does not leave the 
service unable to serve other users. "Small, fixed" means the effect comes from 
what a request makes the server do, not from how many requests are sent. "Hang" 
means the process stays up but stops making progress for other users, for 
example a deadlock, a livel [...]
 
 ## §9 Security properties the project does *not* provide
 
@@ -298,6 +304,9 @@ Per-boundary input trust (grouped by family):
   on the path it serves** — Ratis is not BFT, and while checksum + 
replica/container
   checks catch ordinary corruption, a peer that can forge consistently on its
   served path is out of model (§7). *(maintainer — smengcl, 2026-06-23.)*
+- **No promise to withstand load by volume.** Request floods, connection 
exhaustion, and many concurrent requests whose cost the server already limits 
are outside §8 item 7. Limiting them is the operator's (§10). Concurrent 
requests whose cost the caller chooses are not load by volume and stay under §8 
item 7. *(maintainer, smengcl, 2026-10.)*
+- **Resource use within granted limits is not an availability finding.** A 
user who fills their own quota, creates as many keys or buckets as they are 
allowed to, or runs listings within the server's page limits is using the 
service as authorized, provided the service keeps serving others (§8 item 7). 
Quotas are off by default and are the operator's control (§10). *(maintainer, 
smengcl, 2026-10.)*
+- **No availability guarantee against admins or service peers.** Admin 
commands and a compromised service peer can stop a service (§7). *(maintainer, 
smengcl, 2026-10.)*
 - **Block tokens are bearer capabilities** — a leaked block token grants access
   until expiry; the caller/operator must protect tokens in transit (TLS). The
   default block/container-token lifetime is `1d` when those tokens are enabled.
@@ -330,6 +339,7 @@ Per-boundary input trust (grouped by family):
 - **Enable HTTP authentication (SPNEGO)** for the OM and SCM web servers, or 
network-isolate their HTTP ports. The DB checkpoint endpoints serve the 
metadata DB.
 - **Isolate the KMS** in a separate, firewalled network segment. *(maintainer —
   jojochuang, 2026-06-25.)*
+- **Bound client load:** set namespace and space quotas, enable the RPC 
`FairCallQueue` on the OM (for S3 traffic it needs the Ozone identity provider, 
and it applies only when S3 Gateway reaches the OM over Hadoop RPC, the default 
`ozone.om.transport.class`, not over gRPC), and put rate limiting in front of 
an internet-facing S3 Gateway. Ozone does not promise to withstand load by 
volume (§9).
 - **Client side:** treat data read from Ozone per your own trust needs; protect
   delegation tokens your app caches.
 
@@ -364,6 +374,9 @@ list. *(requested by jojochuang, 2026-06-25.)*
   configured ACL or removing method-level checks from protocols shared by
   callers with different privileges. User-facing entry points must enforce
   the applicable authorization checks (§8). *(inferred, Q-svcacl.)*
+- **Denial of service by request volume** (floods, many connections, many 
concurrent requests whose cost the server already limits): `BY-DESIGN: 
property-disclaimed` (§9). A small, fixed number of requests that stops a 
service is different and is `VALID` under §8 item 7.
+- **A user exhausts resources the operator granted them** (fills their quota, 
creates all the keys or buckets they are allowed, runs listings within the 
server's page limits): `BY-DESIGN: property-disclaimed` (§9/§10).
+- **An admin (a principal in a configured administrator list) can stop or 
degrade a service**: `OUT-OF-MODEL: adversary-not-in-scope` (§7/§9). A caller 
admitted to an internal protocol only by its service ACL is covered by the 
service ACL entry above.
 - **Findings in `ozone-thirdparty`, `integration-test-*`, `*TestImpl`** —
   `OUT-OF-MODEL: unsupported-component` (§3).
 - **KDC/KMS/Ranger/SCM-CA-key compromise scenarios** — out of layer (§3/§7).
@@ -386,10 +399,10 @@ list. *(requested by jojochuang, 2026-06-25.)*
 | `VALID` | A §8 property breaks in secure mode, via an in-scope actor. | §8, 
§6, §7 |
 | `VALID-HARDENING` | No §8 break, but a §11 misuse is too easy to fall into. 
| §11 |
 | `OUT-OF-MODEL: trusted-input` | Requires control of operator config 
(Ranger/object ACL, service-protocol ACLs, keys). | §6/§10 |
-| `OUT-OF-MODEL: adversary-not-in-scope` | Needs 
KDC/CA-key/Byzantine-majority. | §7 |
+| `OUT-OF-MODEL: adversary-not-in-scope` | Needs 
KDC/CA-key/Byzantine-majority, or an admin or service peer acting against 
availability. | §7 |
 | `OUT-OF-MODEL: non-default-build` | Only in non-secure mode (or a 
discouraged knob). | §5a |
 | `OUT-OF-MODEL: unsupported-component` | thirdparty / test / infra Ozone 
doesn't own. | §3 |
-| `BY-DESIGN: property-disclaimed` | Non-secure mode, policy correctness, 
dependency security. | §9 |
+| `BY-DESIGN: property-disclaimed` | Non-secure mode, policy correctness, 
dependency security, load by volume, use within granted limits. | §9 |
 | `KNOWN-NON-FINDING` | Matches §11a. | §11a |
 | `MODEL-GAP` | Unroutable. | triggers §12 |
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to