clement13.net
Original photo: Porte de chambre forte d'une banque, avec ses gros verrous cylindriques et ses volants de manœuvre.
Description
Porte de chambre forte d'une banque, avec ses gros verrous cylindriques et ses volants de manœuvre.
Source
auteur non indiqué (architectes York and Sawyer) · original page
Licence
PD Public domain
Original photo, unretouched. The background is a version of it stylised by the site.

Security

This domain measures the software’s and its build chain’s resilience to errors and attacks, from the developer’s perspective: secrets, dependencies, code vulnerabilities, threats…

Guide≈ 6 min readCheckedCheck doneFacts, figures and references were checked against the sources cited in the page.Written with AI assistance; sources are cited at the bottom of the page. An error? Report it via clement13.net.Reading
In brief

This domain measures the software’s and its build chain’s resilience to errors and attacks, from the developer’s perspective: secrets, dependencies, code vulnerabilities, threats anticipated from the design stage, known composition of the deliverable (SBOM), artifact provenance. Data security (GDPR, privacy) belongs to the data matrix: 08 — Security, Privacy, and Compliance.

On this page

Level: 🟢→🔴 · Domain code: SEC (DL matrix)

Why this domain#

The most costly security incidents rarely come from sophisticated attacks: a secret committed in history, a vulnerable dependency never updated, an over-privileged service account, SQL injection in a procedure built through concatenation. The software supply chain has become a target in its own right: compromising an upstream component affects all its consumers. The cost of ignorance is measured in response time: how many hours to know whether we are exposed to a new public vulnerability?

For SQL and admin scripts: parameterized dynamic queries, least-privilege principle for processing accounts, no secrets in scripts, connection strings outside the repository. These rules are plain and highly cost-effective.

What this domain measures#

  • Axis: from “we fix it when it happens” to “we anticipate, detect, and prove provenance.”
  • Key indicators: response time to a public vulnerability (from publication to the response “are we exposed?”); age of open vulnerabilities; share of components covered by an inventory (SBOM); secrets detected in history.
  • Unit: hours/days; %; count.

Five-level table#

Level Short name Promise Typical indicator (orders of magnitude)
1 Confident We do not know whether we are exposed. No inventory; secrets in scripts
2 Hygienic The most avoidable errors (secrets, default passwords, excessive rights) are no longer present. Secrets out of repository; annual rights review
3 Detected A known vulnerability in code or a dependency is flagged before delivery. Dependency and code analysis in CI; critical fix < 15 days
4 Anticipated Threats are considered before coding; we know in less than one day whether a public flaw affects us. Threat modeling; SBOM; response < 24 h
5 Proven Each delivered artifact has verifiable provenance, and a component compromise is contained. Signed provenance; generalized least privilege; regular attack exercises

Milestones by level#

ID Milestone Verifiable evidence
DL-SEC-1.1 An application security owner is identified Name in the org chart
DL-SEC-1.2 Access accounts for repositories and build servers are individual Account review
DL-SEC-1.3 Default passwords are changed; workstations and build servers are up to date Spot check
DL-SEC-2.1 No secret is in plain text in the current repository (connection strings, keys) Empty automated search
DL-SEC-2.2 A secret vault (or controlled equivalent) is used Secrets read at runtime
DL-SEC-2.3 Access is reviewed at least annually (least-privilege principle) Review report
DL-SEC-2.4 Dynamic queries are parameterized (no input concatenation) Review of sample procedures
DL-SEC-3.1 Dependency analysis runs in CI and blocks on critical issues A deliberately vulnerable component is rejected
DL-SEC-3.2 Security-focused static analysis runs on every change Attached report
DL-SEC-3.3 Previously committed secrets are detected in history and revoked History audit report; secrets rotated
DL-SEC-3.4 Critical fixes are applied within < 15 days (high: 30 days) Lead time measurement
DL-SEC-3.5 Authentication and administration logs are retained Viewable logs
DL-SEC-4.1 Threat modeling (e.g., STRIDE) precedes structural changes Dated document per major workstream
DL-SEC-4.2 A component inventory (SBOM, CycloneDX or SPDX format) is generated for each delivery SBOM attached to the artifact
DL-SEC-4.3 The response “are we exposed?” to a public vulnerability takes < 24 h Timed exercise
DL-SEC-4.4 Security requirements are drawn from a framework (ASVS type) and tested Requirements → tests matrix
DL-SEC-4.5 Processing accounts have minimal rights, by function Service account rights review
DL-SEC-5.1 Artifact provenance is attested and verified before deployment (signature, target SLSA level) Pipeline verification
DL-SEC-5.2 Build is isolated and reproducible; dependencies are pinned and fingerprint-verified Chain review
DL-SEC-5.3 Attack exercises (penetration test, red team) take place at least annually, with tracking of findings Reports and closures
DL-SEC-5.4 A component compromise is contained (segmentation, automatic secret rotation) Full rotation exercise < 1 day

Detailed reading by level#

🟢 Level 1 — Confident#

  • Signs: “no one wants our data”; connection strings in scripts; shared admin account.
  • Gain: zero friction.
  • Does not guarantee: anything, precisely. This is a level of unmeasured exposure.
  • Difficulty: 1/5 · Effort: 1/5.

🟢 Level 2 — Hygienic#

  • Signs: secrets moved out of code, individual accounts, rights review, parameterization of dynamic queries.
  • Gain: elimination of most avoidable incidents.
  • Does not guarantee: detection of new flaws; it is static.
  • Difficulty: 2/5 · Effort: 2/5.

🟡 Level 3 — Detected#

  • Signs: CI flags vulnerable components, secrets, and dangerous patterns. A secret already committed is considered compromised even after deletion: history still contains it; it must be revoked.
  • Gain: known risk is handled before delivery.
  • Does not guarantee: absence of unknown flaws, nor design threats.
  • Difficulty: 3/5 · Effort: 3/5.

🔴 Level 4 — Anticipated#

  • Signs: threats are considered before coding (who attacks, through what path, what impact; STRIDE categories: spoofing, tampering, repudiation, information disclosure, denial of service, privilege escalation). An SBOM makes it possible to respond in hours to a public alert on a library.
  • Gain: fast response and informed decisions.
  • Does not guarantee: prevention of attacks on the build chain itself.
  • Difficulty: 4/5 · Effort: 4/5.

🔴 Level 5 — Proven#

  • Signs: each artifact is signed with provenance attestation; dependencies are pinned by fingerprint; secret rotation is automatable; simulated attacks test the defense.
  • Gain: verifiable trust and limited blast radius.
  • Does not guarantee: invulnerability — this is risk reduction, not proof of absence of flaws.
  • Difficulty: 5/5 · Effort: 5/5.

Partial achievement and rating#

Apply the rating rule.

  • 0.5 on DL-SEC-3.1: dependency analysis runs, without blocking.
  • 0.5 on DL-SEC-4.2: SBOM produced for the application, not for SQL/PowerShell scripts embedded in the kit.
  • A partial 5: artifact signing in place, deployment-time verification not yet mandatory.
⚠️ Pitfall

“Deleted” secret. Symptom: the file no longer contains the key. Cause: history keeps it. Remedy: revoke and renew, then clean history if necessary.

⚠️ Pitfall

Alerts with no owner. Symptom: 300 vulnerabilities open for a year. Cause: no threshold, no owner. Remedy: block on exploitable critical issues, remediate by deadline, handle false positives in a traceable way.

💡 Expert tip

Measure response time (“are we exposed?”), not the number of vulnerabilities: a large estate with an up-to-date inventory responds in one hour; a small one without inventory, in one week.

Move to the next level#

Possible means (optional)

  • 1 → 2: secret hunt, vault, individual accounts, rights review.
  • 2 → 3: dependency and static analysis in CI, history detection, agreed fix lead times.
  • 3 → 4: threat modeling workshops (1 hour per workstream), automatic SBOM, requirements framework.
  • 4 → 5: signing and attestation, fingerprint locking, attack exercises.
🧪 Example

A file-reading library is announced vulnerable on a Friday. Level 1: we do not know if we use it. Level 4: a query on the SBOMs of the last three versions answers in 20 minutes; fix backported to supported versions during the day (04).

🤖 AI

Support for security review and threat modeling: gain 3/5, risk 4/5 (false sense of security, code or secret leakage to an external service). Guardrail: never put secrets or client data in a prompt; use contractually controlled services.

⚠️ Pitfall (Goodhart)

“Zero vulnerabilities displayed” is achieved by configuring the tool to see nothing. Measure response time and inventory coverage.

See also#

✻ Written by Claude Sonnet 5.5