mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-22 04:16:38 +00:00
1.9 KiB
1.9 KiB
Security Lens
Use security-advisory-lessons only for a dedicated advisory/security audit.
For an ordinary matched diff, attack these boundaries:
- Admin routes: route registration, whitelist, handler authn, and the exact
AdminActionmust agree. Read-only diagnostics still require admin authz. - IAM/service accounts: treat parent, claims, keys, groups, status, and policy names as attacker-controlled; prove ownership/root authority before writes.
- Protocol frontends: every changed/sibling command authorizes the matching S3 action before reaching storage.
- Secrets/signatures: use constant-time comparison, normalize public failures, keep RPC/root/STS keys independent, and fail closed when secrets are absent.
- RPC: bind signatures to the exact method/path and timestamp; reject replay, stale, malformed, truncated, and invalid-enum payloads without panic.
- Paths/object/archive entries: reject traversal, absolute/platform escapes, and normalization differences between authz and storage.
- Copy/multipart/presigned POST: enforce source, destination, version-aware actions, copy-source conditions, and every signed policy condition.
- Logging/errors: never expose credentials, tokens, expected signatures, raw
secret-bearing input, or merged configs—including via
Debugand parse errors. - Untrusted serde: reject unknown fields where compatible and validate security-critical defaults/ranges before numeric conversion.
- SSE/browser/CORS/trusted proxy: inspect stored ciphertext and wrapper order; isolate user content; never reflect credentialed arbitrary origins or trust forwarded identity from direct clients.
- Object Lock: unreadable/fabricated/unparsable metadata fails closed across foreground, lifecycle, scanner, and force-delete paths.
Security findings distinguish unauthenticated compromise from a low-privileged authenticated bypass.