Skip to main content

Azure DevOps Service Hook Reviewer — R10 Local Candidate (MC #105993)

Azure DevOps Service Hook Reviewer — R10 Local Candidate (MC #105993)

Status: Accepted local exact-SHA candidate only. Not deployed. Live rollout remains blocked.

Candidate

  • Commit: ba1714499a5be29d8112fea16e967f15144df821
  • Tree: 5b5ea20fa17623ba1f9cabf34d145711863aa578
  • Worktree: /private/tmp/alai/flowforge-105961-stage1-r5
  • Accepted base: R4 437e64fd54574e6ff7e6a2665d081c3e6125d080

R10 adds a separately deployable, dedicated Key Vault prerequisite and preserves the main private-endpoint/DNS integration candidate. It also provides an approval-gated helper for exactly three fixed secret child resources through Azure Resource Manager control-plane APIs. No secret value is stored in source, command arguments, environment variables, files, deployment parameters, logs, or evidence.

R10 security remediation

Every ARM HTTP response path uses a centralized 64 KiB reader. Content-Length is accepted only when, after trimming HTTP SP/HTAB optional whitespace, it is non-empty ASCII decimal digits 09. Plus signs, underscores, Unicode digits, CR/LF, embedded whitespace, empty values, comma/duplicate forms, negatives, and over-limit lengths fail closed before reading. Missing and lying headers remain bounded by read(MAX+1).

Transport is direct and fail closed:

  • no ambient proxies (ProxyHandler({}))
  • no redirects
  • HTTPS only to exact management.azure.com on the default/443 port
  • standard platform certificate and hostname verification
  • bounded response reads and sanitized failures

Preserved controls

  • account, token, and locked-vault verification before confirmation or secret prompts
  • hidden in-memory secret collection and local input validation
  • minimal nonsecret Azure CLI environment
  • exact secret-name and child-resource-ID metadata binding
  • dedicated RBAC-enabled, purge-protected, public-network-disabled Key Vault
  • private endpoint and privatelink.vaultcore.azure.net DNS integration
  • closed live gate by default
  • immutable image, managed-identity AcrPull, restricted Service Bus, private Table Storage, NAT egress
  • accepted R4/R11 runtime/provider bytes unchanged

Validation and acceptance

  • Python tests: 18/18
  • Node tests: 157/157
  • lint, local IaC validation, both Bicep compiles, offline production audit, diff check, Gitleaks, and byte comparison: PASS
  • Proveo exact-SHA review: PASS
  • Securion exact-SHA audit: PASS
  • Company Mesh P2P: PASS, mesh-msg-d904645a-7404-42dd-8edf-728769280ffe

Canonical acceptance evidence: /Users/makinja/system/evidence/105993/R10-LOCAL-CANDIDATE-ACCEPTANCE.md

Operational gate

This page does not authorize Azure what-if, prerequisite deployment, role assignment, helper --execute, secret mutation, image push, main deployment, ingress binding, Service Hook creation, provider invocation, PR comments, repository push/merge, or Bilko v1 retirement.

If separately approved, the next action is only the dedicated Key Vault prerequisite what-if. Every later action remains a separate gate. Azure DevOps minimum-permission identity and reviewed ingress snapshot/drift semantics remain unresolved rollout prerequisites.