new advisories work and features gaps work

This commit is contained in:
master
2026-01-14 18:39:19 +02:00
parent 95d5898650
commit 15aeac8e8b
148 changed files with 16731 additions and 554 deletions

View File

@@ -367,7 +367,126 @@ The Policy Engine reads uncertainty gate thresholds from configuration:
---
## 13 · Versioning & Compatibility
## 13 · Signed Override Enforcement (Sprint 20260112.004)
Signed VEX overrides provide cryptographic assurance that operator decisions (not_affected, compensating controls) are authentic and auditable. The Policy Engine exposes override signature status to DSL rules for enforcement.
### 13.1 Override Signal Namespace
Within predicates and actions you may reference the following override signals:
| Signal | Type | Description |
|--------|------|-------------|
| `override.signed` | `bool` | `true` when the VEX override has a valid DSSE signature. |
| `override.rekor_verified` | `bool` | `true` when the override signature is anchored in Rekor transparency log. |
| `override.signing_key_id` | `string` | Key identifier used to sign the override. |
| `override.signer_identity` | `string` | Identity (email, OIDC subject) of the signer. |
| `override.envelope_digest` | `string` | SHA-256 digest of the DSSE envelope. |
| `override.rekor_log_index` | `int?` | Rekor log index if anchored; `null` otherwise. |
| `override.rekor_integrated_time` | `datetime?` | Timestamp when anchored in Rekor. |
| `override.valid_from` | `datetime?` | Override validity window start (if specified). |
| `override.valid_until` | `datetime?` | Override validity window end (if specified). |
| `override.within_validity_period` | `bool` | `true` when current time is within validity window (or no window specified). |
| `override.key_trust_level` | `string` | Trust level: `Unknown`, `LowTrust`, `OrganizationTrusted`, `HighlyTrusted`. |
### 13.2 Enforcement Rules
#### 13.2.1 Require Signed Overrides
Block unsigned VEX overrides from being accepted:
```dsl
rule require_signed_overrides priority 1 {
when vex.any(status in ["not_affected", "fixed"])
and not override.signed
then status := "under_investigation"
annotate override_blocked := "Unsigned override rejected"
because "Production environments require signed VEX overrides";
}
```
#### 13.2.2 Require Rekor Anchoring for Critical Assets
For critical assets, require transparency log anchoring:
```dsl
rule require_rekor_for_critical priority 2 {
when env.asset_tier == "critical"
and vex.any(status == "not_affected")
and override.signed
and not override.rekor_verified
then status := "under_investigation"
warn message "Critical asset requires Rekor-anchored override"
because "Critical assets require transparency log verification";
}
```
#### 13.2.3 Trust Level Gating
Gate override acceptance based on signer trust level:
```dsl
rule gate_by_trust_level priority 5 {
when override.signed
and override.key_trust_level in ["Unknown", "LowTrust"]
and env.security_posture == "strict"
then status := "under_investigation"
annotate trust_gate_failed := override.signer_identity
because "Strict posture requires OrganizationTrusted or higher";
}
```
#### 13.2.4 Validity Period Enforcement
Reject expired or not-yet-valid overrides:
```dsl
rule enforce_validity_period priority 3 {
when override.signed
and exists(override.valid_until)
and not override.within_validity_period
then status := "affected"
annotate override_expired := override.valid_until
because "VEX override has expired or is not yet valid";
}
```
### 13.3 Default Enforcement Profile
The default enforcement profile blocks unsigned overrides in production:
```dsl
settings {
require_signed_overrides = true;
require_rekor_for_production = false;
minimum_trust_level = "OrganizationTrusted";
enforce_validity_period = true;
}
```
Override these settings in environment-specific policy packs.
### 13.4 Offline Mode Considerations
In sealed/offline deployments:
- `override.rekor_verified` evaluates to `false` (no network access to verify).
- Use embedded proofs in the DSSE envelope for signature verification.
- Policies should fall back to signature verification without requiring Rekor:
```dsl
rule offline_safe_override priority 5 {
when env.sealed_mode == true
and override.signed
and override.key_trust_level in ["OrganizationTrusted", "HighlyTrusted"]
then status := vex.status
because "Offline mode accepts signed overrides from trusted keys without Rekor";
}
```
---
## 14 · Versioning & Compatibility
- `syntax "stella-dsl@1"` is mandatory.
- Future revisions (`@2`, …) will be additive; existing packs continue to compile with their declared version.
@@ -375,7 +494,7 @@ The Policy Engine reads uncertainty gate thresholds from configuration:
---
## 14·Compliance Checklist
## 15 · Compliance Checklist
- [ ] **Grammar validated:** Policy compiles with `stella policy lint` and matches `syntax "stella-dsl@1"`.
- [ ] **Deterministic constructs only:** No use of forbidden namespaces (`DateTime.Now`, `Guid.NewGuid`, external services).