Skip to main content

SERVICE_RISK_REGISTER — lock-integration-service

Bundle: SERVICE_OVERVIEW · SECURITY_MODEL · FAILURE_MODES · SERVICE_READINESS · MIGRATION_PLAN

Cross-cutting: docs/02 §13 Resilience, docs/architecture/ADR-0004 §Risks.

Living document. Reviewed quarterly by the service owner + security lead. Each risk has a probability × impact rating (1–5 scale), a mitigation owner, and a status.

1. Risk scoring

ScoreLikelihoodImpact
1Very rareNegligible (no guest impact, easy recovery)
2RareSingle-property minor (one shift)
3PossibleMulti-property minor or single-property severe
4LikelyTenant-wide outage or sustained brand damage
5Almost certainMulti-tenant catastrophic, regulatory exposure

Risk score = likelihood × impact. Risk ≥ 12 requires explicit ownership and mitigation milestone in the next quarter.

2. Register

IDRiskLikelihoodImpactScoreStatusOwnerMitigation
R-LOCK-01Vendor cloud sustained outage (TTLock/Salto/Vostio API) prevents new key issuance for hours3412mitigatingLock domain leadPer-vendor circuit breaker + Electron offline issuance fallback (GA-Offline tier); tenant comms playbook; multi-vendor encouraged at chain operators
R-LOCK-02Vendor unilaterally breaks API contract (deprecation, undocumented behavior change)339monitoringLock domain leadAdapter contract suite runs nightly against sandboxes; Jira-tracked; vendor relationship contacts; vendor_adapters.config_jsonb allows hot-patch flag toggles
R-LOCK-03Vendor credential leak (insider, repo leak, dependency compromise)2510mitigatingSecurity leadPer-tenant CMEK, restricted IAM, secret-scan CI, periodic rotation, no plaintext in DB; access audit-logged & alerted on out-of-pattern access
R-LOCK-04Webhook spoofing leads to forged credential state mutations2510mitigatingSecurity leadSignature verification per vendor + replay dedup + rate-limit + Cloud Armor; alert on webhook_signature_failed_total spikes
R-LOCK-05Stolen/lost Electron desktop with active offline-issuance cert → forged keys248mitigatingSecurity leadDevice-bound Ed25519 key in OS keychain; CRL on unbind; cap on maxIssuances + validUntil ≤ 14d; HITL review of all credentials issued in last cert window post-incident
R-LOCK-06Master key off-shift abuse (insider)3412mitigatingLock domain lead + SecurityTime-bound shift binding; anomaly scoring (HITL); audit retention 7y; per-tenant policy can auto-suspend at score ≥ 0.95
R-LOCK-07Audit log tampering (DB-level UPDATE/DELETE)155mitigatingSecurity leadApp role lacks UPDATE/DELETE on lock_audit/key_credential_attempts; daily Merkle anchoring; mismatch alert is P1
R-LOCK-08Two staff issue keys for the same room concurrently → conflicting active credentials339mitigatedLock domain leadPostgres advisory lock per (propertyId, roomId); reservation race tested (F7 in FAILURE_MODES)
R-LOCK-09Time skew on lock device causes "valid-window" credential to be rejected at the door4312mitigatingLock domain leadVendor-side time-sync commands; device.health_alert.v1 with clock_drift; window padding (5 min) on valid_from; field maintenance loop
R-LOCK-10Mobile-key push delivery fails silently (notification-service or carrier issue)339mitigatingNotification service ownerDelivery receipts; auto-fallback to PIN delivery via SMS; front desk dashboard surfaces undelivered keys
R-LOCK-11Salto on-prem connector tunnel down at a property339mitigatingPlatform SRECloud VPN HA tunnel; synthetic check; per-property circuit; manual override path documented
R-LOCK-12Encoder USB hardware failure mid-session339mitigatingLock domain leadHot-swap supported; in-flight sessions gracefully closed; manual override printable PIN slip
R-LOCK-13Vendor SDK introduces native compile incompatibility with Node 20 LTS236monitoringLock domain leadAll vendor adapters wrap HTTP, not native SDK, where possible; pinned Node version + Renovate watching SDK releases
R-LOCK-14Pub/Sub subscription drift causes silent event loss248mitigatedPlatform SREIaC (Terraform) is source of truth; drift alarm; inbox-lag SLO catches lost subscriptions quickly
R-LOCK-15Provisional offline credential never reconciles (desktop offline forever)236mitigatingLock domain leadLockOfflineCertNoReconcileLong alert; per-tenant SLA for desktop sync; CRL on cert expiry forces local revocation
R-LOCK-16Tenant operator misconfigures KeyKindPolicy (e.g., disables PIN fallback when mobile fails)428accepted with mitigationProductBackoffice UI surfaces fallback consequences; sane defaults; "test issuance" wizard before save
R-LOCK-17Cross-tenant data leak via RLS bypass bug155mitigatingSecurity leadStrict RLS, tested in CI; integration tests assert cross-tenant attempts fail; quarterly RLS audit; TENANT_RLS_ENFORCEMENT=strict in dev
R-LOCK-18Vendor pricing change (per-call cost) makes a vendor uneconomic326acceptedProductanalytics-service cost dashboard per vendor; multi-vendor optionality
R-LOCK-19Regulatory change in target market mandates additional audit fields339monitoringProduct + Compliancelock_audit.payload jsonb is forward-compatible; schema-registry versioning supports adding fields without breaking consumers
R-LOCK-20Catastrophic loss of offline-issuance signing key in KMS155mitigatingSecurity leadKMS auto-rotation; key versions retained; emergency mint-new-cert path tested in DR drill
R-LOCK-21Subject-deletion request can't be fully honored due to audit retention326acceptedCompliancePseudonymization satisfies GDPR Art.17 with retention exception; documented in DPA
R-LOCK-22Vendor health monitoring false positives → unnecessary circuit-breaks326monitoringLock domain leadHysteresis + multi-probe consensus; SLO tracks false-positive rate
R-LOCK-23Migration of legacy property from one vendor to another (R-LOCK-02-style or commercial decision)236mitigatedLock domain leadMIGRATION_PLAN §3 vendor switch; dual-write window
R-LOCK-24Knowledge concentration on a small team (truck-factor)339mitigatingEngineering managerPair rotation; this 18-doc bundle is the canonical knowledge base; quarterly architecture walkthroughs

3. Top-3 quarterly focus

For Q-current, the top-3 risks (≥12) under active mitigation:

  1. R-LOCK-01 — Vendor sustained outage. Milestone: ship offline issuance to GA-Offline tier this quarter.
  2. R-LOCK-06 — Master key off-shift abuse. Milestone: HITL anomaly Decision flow live and reviewed by 100% of pilot tenants.
  3. R-LOCK-09 — Device time skew. Milestone: per-vendor time-sync command implemented for TTLock + Salto; auto-window-padding live.

4. Process

  • Quarterly review: service owner + security lead walk the register, update statuses, add new risks, retire mitigated ones.
  • New risk intake: any incident postmortem must check whether a new risk row is warranted; if so, add with status monitoring and owner.
  • Linkage: every risk references either a FAILURE_MODES row or a SECURITY_MODEL section so mitigations stay grounded in implementation.

5. Cross-references