Join our Newsletter — 33% off our NHI Course

How should security teams standardise code signing across mixed Windows, Linux, and Apple build pipelines?

Security teams should centralise signing keys, keep them protected by HSM-backed controls, and expose signing through approved agents that fit existing build tools. The goal is to preserve developer workflow while enforcing policy, auditability, and consistent trust decisions across CI/CD. A hybrid signing model helps avoid ad hoc key handling across teams and platforms.

Why This Matters for Security Teams

Standardising code signing is not just a release engineering preference. In mixed Windows, Linux, and Apple pipelines, signing becomes the trust boundary that decides whether build artefacts, update packages, and internal tools are accepted downstream. If each team signs differently, security loses consistent policy enforcement, auditability, and revocation control. That creates the same kind of secret sprawl described in the Guide to the Secret Sprawl Challenge, where trust material is scattered across tools and teams instead of governed centrally.

The practical risk is that signing keys and certificates are often handled like ordinary build inputs, even though they function like high-value secrets. The NIST control baseline for protecting system and communication assets, especially NIST SP 800-53 Rev 5 Security and Privacy Controls, supports stronger key management, but it does not remove the need to standardise workflow across platforms. For that, the operational model needs consistency first and platform-specific implementation second. In practice, many security teams discover signing drift only after an unsigned or improperly signed artefact has already moved through production promotion paths.

How It Works in Practice

The most effective pattern is to treat signing as a central service with platform-aware adapters, not as a local step buried inside each build pipeline. That means the policy, key custody, certificate lifecycle, and approval workflow live in one place, while Windows, Linux, and Apple jobs call the service through approved agents or build hooks. NHI guidance in the Ultimate Guide to Non-Human Identities is directly relevant here because signing keys behave like privileged non-human identities: they need lifecycle control, least privilege, and strong traceability.

A workable implementation usually includes:

  • Central key custody in HSM-backed infrastructure so private keys never sit on developer laptops or ephemeral runners.
  • Platform-specific signing wrappers for Authenticode, Linux package signing, and Apple notarisation flows, all driven by the same policy engine.
  • Per-build or per-release approval gates that decide what can be signed, by whom, and under which change record.
  • Short-lived access to signing operations instead of persistent credentials in CI variables or repository secrets.
  • Immutable logging for every signing request, certificate use, and revocation action.

This model aligns with what security teams see in real incidents such as the CI/CD pipeline exploitation case study, where pipeline trust is abused after attackers reach build infrastructure. Standardisation reduces the number of places where signing decisions can be bypassed, and it makes policy review simpler across heterogeneous tooling. These controls tend to break down when teams allow local signing exceptions for legacy release jobs because those exceptions quickly become the default path.

Common Variations and Edge Cases

Tighter signing controls often increase release overhead, so organisations have to balance delivery speed against the need for consistent trust decisions. The main tradeoff is between central enforcement and platform nuance: Apple notarisation, Windows enterprise trust chains, and Linux package ecosystems each have different operational expectations, and there is no universal standard for this yet.

Best practice is evolving toward a common governance layer with controlled exceptions. That means defining which artefact types must be signed, which certificates are approved for which platforms, and how emergency signing is handled when a pipeline is broken. For high-change environments, teams should also assume that secrets exposure can happen through auxiliary build tooling, not just the signing step itself, as shown in the Reviewdog GitHub Action supply chain attack.

Two edge cases matter most:

  • Legacy build systems that cannot call a central signing service cleanly, which may require a brokered signing proxy and stricter compensating controls.
  • Air-gapped or regulated release environments, where certificates, revocation status, and timestamping must be synchronised carefully to avoid trust failures.

In mixed estates, the safest model is usually hybrid: one signing authority, one policy set, multiple platform adapters. That approach keeps workflows workable without letting each team invent its own trust model.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10, OWASP Agentic AI Top 10 and CSA MAESTRO address the attack and risk surface, while NIST AI RMF and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Central signing keys need rotation and lifecycle control like other NHIs.
OWASP Agentic AI Top 10 A-05 Approved build agents must be constrained to prevent misuse of signing authority.
CSA MAESTRO GOV-03 Central governance is needed to standardise signing across heterogeneous pipelines.
NIST AI RMF GOVERN Signing decisions need accountable governance and traceable approval paths.
NIST CSF 2.0 PR.AC-1 Access to signing systems should follow least privilege and controlled approval.

Inventory signing credentials, enforce rotation, and remove any long-lived key paths.