Application security guide

Shipping fixes without a security release train

If you need a special process to deploy a security fix quickly, the problem is the normal process. Emergency paths skip the tests, skip the review and skip the staged rollout, which is why a meaningful share of outages attributed to security work are caused by the expedited deployment rather than by the vulnerability. The durable answer is unglamorous: make the ordinary path fast enough that nothing needs to bypass it, and measure it before claiming it is fast.

Why is a separate emergency path the wrong answer?

Because it is the least tested path in your organisation, used only under time pressure, by people who have not used it recently. Every property that makes it fast, fewer checks, a manual step, a direct push, a hand-built artefact, is a property that makes it more likely to break something. The fix arrives quickly and the incident continues, now with an availability component and a team that no longer trusts security work.

It also removes the pressure that would otherwise improve the normal path. If a hotfix route exists, the fortnightly release cadence never becomes a problem worth solving, because the exception absorbs the urgency. Organisations that delete the emergency path and commit to fixing the standard one end up faster overall, and the speed applies to everything rather than only to whatever was declared an emergency.

There is a legitimate version of expedited handling and it is a prioritisation decision, not a technical one: the same pipeline, the same tests, the same rollout, with the change jumping the queue and a named person accountable for the call. That distinction matters. Skipping the queue is safe. Skipping the checks is how the fix becomes the outage.

How fast is your normal path, really?

Measure it rather than estimating it. Change a comment in your most important service, push it through the process exactly as a developer would, and record the elapsed time until it is serving traffic in production. That number is your exposure window for every fix you will ever have to ship, and it is usually several times longer than the team believes because the estimate omits queueing, approvals and waiting for someone to be available.

Break the measurement into segments: time to a passing build, time to a merged review, time to a deployed staging environment, time to a production release, time to full rollout. One segment normally dominates, and it is rarely the automated part. Manual change approval is the most common, followed by a batched release schedule, followed by a test suite slow or flaky enough that people wait for a quiet moment to run it.

Then repeat the exercise on the service nobody has touched for a year, because that is where the real answer lives. Fixes are needed in unloved services at least as often as in active ones, and a pipeline that has not run since the last maintainer left is a fix that takes a week regardless of how good the platform is. Discovering that during an incident is the expensive way to learn it.

What kind of fix is it?

Fixes differ enormously in where the change lands, and treating them as one queue is why some take an afternoon and some take a month. The blockers below are the ones that show up repeatedly, and each has a different remedy.

Fix typeWhere the change landsAchievable lead timeWhat usually blocks it
Application codeA commit in the service repositoryHours, if the pipeline is healthyReview availability and a slow test suite
Dependency version bumpThe lockfile, then a rebuildHours for a patch release, days if it is a major versionBreaking changes and thin test coverage
Base image rebuildThe image, redeployed unchanged in codeHours across many services if automatedServices pinned to an old digest with no bump automation
Configuration or feature flagRuntime configuration, no buildMinutesConfig changes that bypass review and audit entirely
Infrastructure or network controlPolicy, ingress rules, identity configurationHours, and useful as containment before a code fixUnclear ownership between platform and service teams
Software customers installA supported release branch, then their upgradeWeeks, controlled by the customerNo maintained patch branches, so every fix is a full upgrade

What actually removes the delay?

Deploy small changes often, so the machinery is warm. A pipeline exercised twenty times a day is a pipeline you can trust at eleven at night; one exercised fortnightly is a research project. This is the whole mechanism behind the observation that faster-deploying organisations also recover faster, and it applies precisely to the case where a vulnerability has to be closed while people are tired.

Replace manual change approval for standard changes with peer review plus automated policy checks. A committee that meets twice weekly cannot be part of a same-day fix, and in practice it approves changes it cannot evaluate. Keep an approval requirement where the risk genuinely warrants one, and define the standard-change category explicitly so that a dependency bump with passing tests does not need a meeting.

Then separate deploying from releasing. A flag lets code reach production dark and be enabled deliberately, which means the risky part of a fix can be rehearsed in the real environment. It also gives you an instant off switch that does not require a rollback, which matters because rollback is the one control that behaves badly with security changes.

How do you avoid the fix causing the incident?

Notice the asymmetry: rolling back a security fix reintroduces the vulnerability. That is different from every other rollback, and it means the standard remediation for a bad deployment is unavailable to you. Plan to roll forward, keep the change small enough that a follow-up correction is quick, and if you must roll back, treat the exposure as reopened and say so rather than letting the incident be closed on the deploy revert.

Ship the fix behind a progressive rollout, watching error rates and latency on the specific paths the change touches rather than the service aggregate. Security fixes commonly alter behaviour at an edge, a rejected input, a denied request, a failed token validation, and the aggregate metrics stay flat while a small population of legitimate users is broken. Instrument the denial path before you deploy, so a spike in denials is visible as either a control working or a control misfiring.

Write the test with the fix, always, and make it a test that fails on the unpatched code. This is the only reliable defence against the same vulnerability returning in a later refactor, which is a common and demoralising outcome. It is also the artefact that lets you verify the fix is present in every branch and every deployed artefact, rather than assuming it propagated.

What about software customers install themselves?

You need a supported-version policy before you need it. If only the latest release ever receives fixes, every security patch is a full upgrade for the customer, which means negotiation, testing and a delay you cannot influence. Maintaining a small number of supported branches that can receive a targeted patch is what converts that into a decision the customer can make in a day.

Publish a way to be told. A security contact reachable without a support contract, discoverable in the standard place using the security.txt convention, is a genuinely low-cost control: it determines whether a researcher tells you or tells the world. Pair it with a stated response commitment you can actually keep, because an unanswered report is what turns coordinated disclosure into uncoordinated disclosure.

Where obligations attach to what you ship and to how quickly you must handle reported vulnerabilities, they depend on jurisdiction and on what you sell, and the regimes in this area have been expanding for products with digital elements. Establish with counsel which apply to you and what timelines they impose before an incident, because the engineering process needed to meet a short reporting deadline cannot be assembled during one.

Common questions

Should you have an emergency release process for security fixes?
Prefer a prioritisation mechanism over a technical bypass. An emergency path is the least-exercised route in the organisation, used under time pressure by people who have not used it recently, which is why expedited deployments cause a meaningful share of security-related outages. Let urgent changes jump the queue while using the same pipeline, tests and staged rollout, and make the standard path fast enough that bypassing it is unnecessary.
How do you measure lead time for a security fix?
Change a comment in your most important service, push it through the normal process, and record the elapsed time until it serves production traffic. Break the total into build, review, staging, release and rollout segments. Then repeat it on a service nobody has touched for a year, because unloved services need fixes just as often and their pipelines are usually the ones that no longer work.
Why is rolling back a security fix risky?
Because it reintroduces the vulnerability, which makes it unlike any other rollback. The standard remediation for a bad deployment is therefore unavailable, so plan to roll forward with small changes, and keep a feature flag that can disable new behaviour without reverting the code. If a rollback is unavoidable, record the exposure as reopened rather than closing the incident on the revert.
Do change advisory boards slow down security fixes?
In practice yes, when they gate standard changes. A committee meeting twice weekly cannot participate in a same-day fix, and it commonly approves changes it lacks the context to evaluate, which makes it a delay rather than a control. The workable arrangement is an explicit standard-change category covered by peer review and automated policy checks, with formal approval reserved for the smaller set of changes whose risk genuinely warrants a separate decision.
How should container image fixes be shipped?
By rebuilding on an updated base and redeploying, with no application change. That fixes many services at once if they share a base image and the digest bump is automated, which is the argument for pairing digest pinning with an automated update pull request. Services pinned to an old digest with no bump automation are the ones where a one-line upstream patch turns into a week of manual work.
What does a vendor need in place to patch installed software quickly?
A supported-version policy with a small number of maintained branches that can take a targeted patch, so a security fix is not a full upgrade for every customer. Add a security contact reachable without a support contract, published using the security.txt convention, and a response commitment you can keep. Obligations on vulnerability handling and reporting vary by jurisdiction and product, so confirm which apply with counsel in advance.

More on Application security

Let’s create something out of this world together.

Have a project in mind? Contact us for expert design and development solutions. Let’s discuss how we can help grow your business.

Azaadi Offer

Claim a free security assessment

Until 31 August we're covering the cost of a full vulnerability assessment and penetration test. Mention it in your message and we'll scope it with you.

  • Web application testing, authenticated and unauthenticated
  • Mobile application testing across iOS and Android
  • External network and infrastructure assessment
  • Manual exploitation by engineers, not scanner output

Testing and the report are free. Fixing what we find is quoted separately, with no obligation to accept.

Read the full offer

Tell us what you are trying to build and we will tell you plainly whether we are the right people for it. Book a call with an expert to work through the detail, or ask for a fixed quote if the scope is already clear. No obligation either way.

Four fields is all we need to get started.

Fastnexa Logo

© 2026 fastnexa. All rights reserved.