Join our Newsletter — 33% off our NHI Course

What is the difference between protecting software and producing well-secured software?

Protecting software focuses on preventing tampering and unauthorized access to code, build artifacts, and related components. Producing well-secured software focuses on the quality of the release itself, especially reducing vulnerabilities before software ships. One is about defending the development asset, while the other is about improving the security posture of the delivered product.

How the two ideas differ in practice

Protecting software is about defending the software supply and delivery pipeline itself, including source code, build systems, signing keys, artifacts, and the paths attackers might use to tamper with them. Producing well-secured software is about the quality of the release that results, meaning the product leaves fewer exploitable weaknesses behind. The first protects the asset; the second improves the shipped outcome.

That distinction matters because a secure build chain does not automatically produce secure code, and strong code quality does not automatically protect the pipeline that produced it. Teams often need both: one set of controls to keep the delivery process trustworthy, and another set of controls to reduce defects, insecure patterns, and exposed attack surface in the software itself.

Where the control focus changes

Protecting software is typically concerned with preventing unauthorized changes to repositories, builds, dependencies, release packages, and signing material. It asks whether the thing being shipped can be trusted, whether the release process can be subverted, and whether a malicious actor could insert or replace code without detection. In other words, it is about integrity, provenance, and controlled access to the machinery of release.

Producing well-secured software is typically concerned with how the software is designed, implemented, tested, and reviewed before release. It asks whether common defects such as broken authorization, insecure defaults, weak input handling, or poor secrets handling were reduced before the product was shipped. The emphasis is on engineering quality and security assurance in the product, not just on guarding the pipeline around it.

Those priorities often overlap in a modern delivery program, but they are not the same control problem. A team can lock down its build environment and still ship insecure logic, and it can also produce careful, tested code while leaving the repository, CI/CD, or artifact store exposed to tampering. Treat them as separate control layers that reinforce each other.

Why the distinction matters for delivery teams

For practitioners, the difference shows up in ownership and measurement. Protecting software is usually owned by platform, DevOps, supply-chain, or security engineering functions that manage build trust, artifact integrity, and release permissions. Producing well-secured software is usually owned by product engineering and application security functions that reduce defects and verify security requirements in the codebase.

This is why supply-chain controls and secure engineering practices are complementary rather than interchangeable. Guidance such as SLSA helps teams reason about build provenance and artifact integrity, while OWASP SAMM focuses on embedding security into the software development lifecycle. Together they map to different questions: can we trust what was built, and is what was built secure enough to ship?

For software that exposes APIs or sensitive workflows, the product-security side often needs specialized verification as well. OWASP API Security Top 10 is useful when the shipped product itself contains authorization, exposure, or abuse risks that must be addressed before release. That is a different concern from protecting the repository, build server, or release signing process.

Risk and Threat Considerations

The main risk is conflating release integrity with product security and assuming one control layer covers the other. If attackers can tamper with the pipeline, they can distribute malicious software that appears legitimate; if the codebase remains weak, a pristine delivery pipeline still ships exploitable software. Both failure modes can create downstream compromise, but they originate in different parts of the lifecycle.

Failure mechanism: Release-chain compromise, dependency tampering, or stolen signing material can undermine trust in otherwise “approved” software, while insecure design or implementation can leave exploitable defects in a clean release process.

Impact: Organisations may either distribute malicious artifacts at scale or deliver software that remains vulnerable after release, increasing breach likelihood, recovery effort, and trust loss with users and operators.

Standards & Framework Alignment

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

SLSA, OWASP SAMM and OWASP ASVS set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
SLSA Supply-chain Levels for Software Artifacts Build provenance and artifact integrity directly map to protecting software from tampering.
Recommendation — Adopt SLSA-aligned provenance and integrity checks for builds and releases.
OWASP SAMM Software Assurance Maturity Model SAMM addresses the maturity of practices that produce well-secured software.
Recommendation — Use SAMM to mature secure design, implementation, verification, and deployment practices.
OWASP ASVS V8 — Authorization Release security often depends on verifying product authorization flaws before shipping.
V6 — Authentication Secure software must also resist weak authentication logic in the shipped product.
V16 — Security Logging and Error Handling Well-secured software needs reviewable security logging and safe error handling.
Recommendation — Verify authorization behavior against ASVS before release. Test authentication requirements and failure cases before release. Validate logging and error handling so security issues are observable after release.

Practitioner Guidance

What to prioritise: Separate your control objectives. Track build and release trust as one workstream, and secure coding, review, and testing as another, so gaps do not hide behind a single “software security” label.

What to verify: Confirm that artifact signing, repository permissions, and CI/CD access are controlled independently of application security testing, because a passing test suite does not prove the release path is trustworthy.

Common mistake: Treating dependency hardening, pipeline hardening, and vulnerability reduction as one program often leaves one of the two risks under-managed.

Practitioner takeaway: The right question is not which is more important, but whether you are protecting the software you ship and improving the security of the software you ship, because mature teams must do both.